`
桔红糕
  • 浏览: 42506 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

简易内存数据库(一)总述

    博客分类:
  • CPP
阅读更多

项目的要求是:

需要接受create,insert,select, update,delete等语句,在内存中建立一个数据库表。并对这个表进行相应的操作。

 

动手之前有一些提示。

 

  • 不管我们处理哪一种语句,要做的都是2件事:1)解析相关的语句。2)把语句所表述的内容保存在内存中。

我先解释一下这两点:

 

首先,你的程序是运行在内存中,程序所要处理的内容当然需要预先保存在内存中,这样你才可以进行内容操作。

保存在内存中,换句话说你可以申明变量,把文件中所表述的内容赋值到变量中。

 

那么这个或这些变量应该是什么类型的呢。

你第一个想到的,既然是文本形式读到的内容,就保存在一大块char[]中了。这当然是可以的。

只是整块的保存不利于我们今后对相应数据的处理。比如每次取某一条数据,我们都会需要对整个文本进行解析。这样做效率太低。

 

因此我们要做的是,先把整块文本解析好,然后把它保存在比较利于今后处理的类型中。

这就是我说的要做的2件事

 

  • 把问题分解了来解决。

遇到一些问题很难马上想明白,正常人都是这样的。这种时候把问题分解开来就方便解决了。

比如实现SELECT的时候,我们会觉得非常复杂,无从下手。SELECT要选择某些字段,要符合某个或某些条件,还要符合一定的顺序。SELECT函数我是这样写的

TableRow * selectTable(SelectInfo *info)
{
	TableRow * rows = NULL;
	//如果有排序要求先排序
	if (strlen(info->order->columnName)>0)
		 rows = Order(info->order);
	//拍完序再过滤
	Filter(&rows, info);

	return rows;
}

 

排序具体怎么排,则交给Order函数了。过滤具体怎么过滤,就交给Filter函数了。其实Order函数和Filter函数中也有很多小的函数组成的。

我们写一组功能实现时,一旦觉得过于复杂没有办法实现,可以用一个子函数来代表某个子功能已经实现了。这样就可以专注到所有功能完成。而子功能的实现可以在实现子函数的时候再来考虑。

 

再比如说。我要设计一个放表头的结构,一个表头有表名和很多列。列有列名,有列的长度,列是否允许为空等等。

想来很复杂,但是这个结构我会这样设计

struct Table
{
	char  name[50];
	Column * columns;
};

 这样设计并没有解决所有的问题。但是这样的设计就是为了把问题分解开来。

 

 

这些个内容需要同学一边开发一边自己体会。

分享到:
评论

相关推荐

    软件数据库设计文档模板

    ### 软件数据库设计文档模板关键知识点解析 #### 总述 - **编写目的**:阐述了文档的编写初衷,旨在明确预期读者群体。...遵循这一模板进行数据库设计工作,能够有效地提升项目的整体质量和效率。

    串行接口总述

    串行接口总述,详细描述串口接口,望补充。

    数据库报告模板

    首先,从描述中我们可以看到,这个数据库报告模板是基于一个具体的课程设计——学生信息管理系统,目的是让学生通过实际操作理解数据库的基本界面,掌握数据库的规划和设计,以及处理Visual FoxPro开发中的简单问题...

    CST2008教程翻译--后处理总述

    CST2008教程翻译--后处理总述,微波仿真软件,很好的入门资料 格式: RAR PDF 其他: *资源分1分,如果评论资源的话,会返还2分,欢迎评论。我这样设置的原因是:希望您下载资源之后,能够评论一下,也好让我知道...

    java和数据库编码规范

    本文将详细解读《QXPT2.0开发编码规范总述》,涵盖系统架构、代码分层、命名规范以及数据库设计等方面,旨在帮助开发人员遵循一致的编码标准。 #### 二、系统架构与代码分层 ##### 1. 整体架构 QXPT2.0系统采用...

    第一编空压站车间总述.docx

    《第一编空压站车间总述》文档详细阐述了中铝山西分公司氧化铝一分厂空压站车间的治理制度和工作理念,旨在提供一个高效、安全的生产环境,以达到公司的经营目标。以下是对该文档内容的详细解读: 1. **治理理念**...

    [最新]数据库设计标准文档模板.doc

    - 监控数据库性能指标,如查询响应时间、内存使用、I/O等。 - 根据监控结果进行SQL优化、硬件升级、索引调整等。 12. **文档规范**: - 文档应清晰、详细,便于理解和实施。 - 使用统一的命名规范、图表格式,...

    2021最新产品需求模板系列-数据库设计标准文档模板.doc

    这份2021最新的产品需求模板专为数据库设计提供了一个标准化的框架,确保产品开发团队能够系统地进行数据架构的规划与实施。 1 **总述** 在总述部分,文档通常会明确编写目的,阐述为何需要进行数据库设计以及其在...

    碳中和碳达峰系列研究之总述篇:双碳下的“双新”趋势.pdf

    碳中和碳达峰系列研究之总述篇:双碳下的“双新”趋势 本研究报告对中国的碳中和碳达峰行动的发展趋势进行了深入分析和研究。报告认为,整个“双碳”行动将会按“双新”的趋势有序推进,即“新能源”与“新电气化...

    《芳杂环总述》PPT课件.ppt

    综上所述,《芳杂环总述》PPT课件详细阐述了芳香性杂环的结构特点、分子轨道理论和价键理论的解释,以及这些化合物的电子性质,对于理解这一重要化学领域的核心概念至关重要。这些知识对于研究和开发新型药物、材料...

    20210809-招商银行-新能源行业碳中和碳达峰系列研究之总述篇:双碳下的“双新”趋势.pdf

    20210809-招商银行-新能源行业碳中和碳达峰系列研究之总述篇:双碳下的“双新”趋势.pdf

    物流系统规划设计总述.pptx

    物流系统规划设计总述.pptx

    贸易业务发展战略总述.ppt

    贸易业务发展战略总述.ppt

    SPM-fMRI数据分析总述.pdf

    SPM-fMRI数据分析总述

    Decaf实验总述_2359024321

    5. **寄存器分配和输出汇编代码**:最后,编译器根据数据流分析的结果进行寄存器分配,以减少内存访问,提高执行效率。然后,生成MIPS汇编代码,这可以直接由汇编器转换为目标机器代码。 完成Decaf编译器的实现需要...

    2015年校办总述职报告.docx

    2015年校办总述职报告.docx

    Delphi第三方组件总述

    单个组件专注于某一特定功能,如串口通信组件Specomm,具有强大的专业性。组件包则包含多个组件,有的像AHM、Rxlib、ABC等,涵盖多种领域,是对Delphi组件的全面扩展;另一些组件包则更为专注,如CoolMenu、DragDrop...

Global site tag (gtag.js) - Google Analytics