简易内存数据库(一)总述
项目的要求是:
需要接受create,insert,select, update,delete等语句,在内存中建立一个数据库表。并对这个表进行相应的操作。
?
动手之前有一些提示。
?
不管我们处理哪一种语句,要做的都是2件事:1)解析相关的语句。2)把语句所表述的内容保存在内存中。我先解释一下这两点:
?
首先,你的程序是运行在内存中,程序所要处理的内容当然需要预先保存在内存中,这样你才可以进行内容操作。
保存在内存中,换句话说你可以申明变量,把文件中所表述的内容赋值到变量中。
?
那么这个或这些变量应该是什么类型的呢。
你第一个想到的,既然是文本形式读到的内容,就保存在一大块char[]中了。这当然是可以的。
只是整块的保存不利于我们今后对相应数据的处理。比如每次取某一条数据,我们都会需要对整个文本进行解析。这样做效率太低。
?
因此我们要做的是,先把整块文本解析好,然后把它保存在比较利于今后处理的类型中。
这就是我说的要做的2件事
?
把问题分解了来解决。遇到一些问题很难马上想明白,正常人都是这样的。这种时候把问题分解开来就方便解决了。
比如实现SELECT的时候,我们会觉得非常复杂,无从下手。SELECT要选择某些字段,要符合某个或某些条件,还要符合一定的顺序。SELECT函数我是这样写的
struct Table{char name[50];Column * columns;};?这样设计并没有解决所有的问题。但是这样的设计就是为了把问题分解开来。
?
?
这些个内容需要同学一边开发一边自己体会。