⽤CC++开发⼀个DBMS??没头绪
怎么⽤C/C++开发⼀个DBMS??没头绪,⼤家给点提⽰,急
zjiong(TNT) 2005-12-20 23:10:51 在 C/C++ / C++ 语⾔ 提问
要求完成以下⼏个功能模块:
1. 数据存储结构的设计与管理
1)要求设计表构造模式及其在数据库⽂件中的存储结构,最后在⾃选的软件平台上建⽴能创建、查看表构造模式的⽤户界⾯。
先⾃定义表构造模式的结构,然后将其存放到⾃定义存储结构的数据库⽂件(.dbf⽂件)中,要求能在⼀个数据库⽂件中存放多张不同的表,并能查看各表的字段结构内容。
(提⽰表构造模式包括字段名、类型、字长、是否为KEY键、是否允许为NULL。考虑到以后对表的操作可以预留⼀些字段。)
2)要求设计记录在数据⽂件中的存储结构形式,并在⾃选的软件平台上建⽴⽤户界⾯来添加新记录到数据⽂件中,并能查看数据⽂件中的记录内容。
根据从1)中数据库⽂件(.dbf⽂件)中抽取的有关表的构造模式信息,将记录存放到⾃设计存储格式的数据记录⽂件(.dat⽂件)中,要求能存放不同的多张表的记录内容,能查看不同表的记录内容。
2. 数据定义语⾔与操作语⾔的实现
3) 数据定义语⾔(DDL)的实现。
实现定义表模式结构,并能修改表结构的语句。
要求实现:定义表(Create  Table);  修改表(Edit  Table、Rename  Table、Delete  Table);
4) 数据操纵语⾔(DML)实现。
实现记录数据的插⼊、删除和修改。
要求实现:数据的插⼊(Insert)、删除(Delete)、修改(Edit)。
3. 数据库复杂查询实现
5)实现数据库单表、多表的选择、投影、连接查询。(要求实现:Select  条件查询)
三、提⽰
1. 数据存储结构的设计与管理
1.1设计表构造模式及其在数据库⽂件中的存储结构。
要求能在⼀个数据库⽂件中存放多张不同的表,并能查看各表的字段结构内容;最后在⾃选的软件平台上建⽴能创建、查看表构造模式的⽤户界⾯。
提⽰:
● 定义表构造模式。表的构造模式为⼀系列字段结构的集合(可设为结构数组)。字段结构(struct)包括字段名、类型、字长、是否为KEY键、是否允许为NULL,考虑到以后对表的操作可以预留⼀些字段(如该字段是否有效标志)。
字段结构如下://注:为与标准C兼容,bool类型⽤char类型代替
typedef  struct  {
char  sFieldName[FIELD_NAME_LENGTH];    //字段名
char  sType[8];    //字段类型
int  iSize;    //字长
char  bKey;    //该字段是否为KEY键
char  bNullFlag;    //该字段是否允许为空
char  bValidFlag;    //该字段是否有效,可⽤于以后对表中该字段的删除
}  TableMode,*PTableMode;
● 然后将上述结构数组构成的表模式存放到⾃定义存储结构的数据库⼆进制⽂件(.dbf⽂件)中。表模式结构可以采⽤定长⽅式存储(⼀张表占⽤固定的⽂件字节数),也可以采⽤变长⽅式,例如下⾯所⽰:
数据库⽂件(.dbf)的存储结构如下:
第⼀张表存储位置开始处(从第⼀字节开始) 表分隔符(如采⽤不常⽤的字符’~’)
表名(char数组)
此表内所含字段结构的数量(int类型)
表的第⼀字段结构(TableMode类型)
表的第⼆字段结构(TableMode类型)
表的第⼆字段结构(TableMode类型)
。。。。
表的第n字段结构(TableMode类型)
第⼆张表存储位置开始处                                      形式同前,从分隔符开始。(“~”,char类型,长⼀字节)
。。。。
1.2设计记录在数据⽂件中的存储结构形式。
要求能存放不同的多张表的记录内容,能查看不同表的记录内容,并在⾃选的软件平台上建⽴⽤户界⾯来添加新记录到数据⽂件中,并能查看数据⽂件中的记录内容。
提⽰:
● 从1)所建的数据库⽂件(.dbf⽂件)中抽取有关表的构造模式信息,来指导记录的输⼊,如表中有什么字段,有多少字段等。然后将记录存放到⾃设计存储格式的⽂件中(.dat⽂件)。
数据⽂件(.dat)的存储结构如下:
第⼀张表的记录存储位置开始处(从第⼀字节开始) 标识(“~”,char类型,长⼀字节)
表名(char数组)
此表内所含记录的数量(int类型)
记录的字段数量(int类型)
各记录的有效标识(char数组,可⽤于以后对表中记录的删除、恢复操纵)
记录1的字段1
记录1的字段2
。。。。
记录1的字段n
记录2的字段1
记录2的字段2
。。。。
记录2的字段n
。。。。
记录n的字段1
记录n的字段2
。。。。
记录n的字段n
第⼆张表的记录存储位置开始处                                    形式同前,从标识开始。即:
标识(“~”,char类型,长⼀字节)
。。。
4. 数据定义语⾔与操作语⾔的实现
2.1数据定义语⾔(DDL)的实现。
实现定义表模式结构,并能修改表结构的语句。
要求实现:定义表(Create  Table);  修改表(Edit、Rename、Delete);
提⽰:
● 定义表模式结构语句
因为在1.1节中已经能创建表,这⾥的主要任务是分析词法,提取1.1节中所要求的输⼊内容,如表名、数据库⽂件名、表各字段结构的具体内容。可使⽤⼀个函数分析词法,取得具体内容后,再调⽤1.2节的函数创建具体的表。
模仿SQL语句,定义表模式结构语句为:
CREATE  TABLE  Table_Name(
Field_Name1    Type1    KEY_Flag1    NULL_Flag1    VALID_Flag1,
Field_Name2    Type2    KEY_Flag2    NULL_Flag2    VALID_Flag2,
Field_Name3    Type3    KEY_Flag3    NULL_Flag3    VALID_Flag3,
….
)INTO  DataBase_FileName;
例如,在MyDB数据库⽂件中创建⼀个表MyTable,其包含有:字段名Name,类型char[10],为KEY键,⾮空,有效及字段名Age,类型int,⾮KEY键,⾮空,有效。创建语句如下:
CREATE  TABLE  MyTabel(
Name  char[10]  KEY  NO_NULL  VALID,
Age  int  NOT_KEY  NO_NULL  VALID
)INTO  MyDB;
● 修改表语句
编辑表字段:
EDIT  TABLE  TableName(
Field_Name    Type    KEY_Flag    NULL_Flag    VALID_Flag)IN  DataBase_FileName;
更改表名:
RENAME  TABLE  TableName1  TableName2  IN  DataBase_FileName;
删除表:
DROP  TABLE  TableName  IN  DataBase_FileName;
2.2数据操纵语⾔(DML)实现。
实现记录数据的插⼊、删除和修改。
要求实现:记录数据的插⼊(Insert)、删除(Delete)、修改(Edit)。
提⽰:
● 记录数据的插⼊(Insert)
因为在1.2节中已经能在数据⽂件中添加记录,这⾥的主要任务是分析词法,提取1.2节中所要求的输⼊内容,如表名、数据库⽂件名、表各字段结构的具体内容。可使⽤⼀个函数分析词法,取得具体内容后,再调⽤1.2节的函数创建具体的表。
开发一个平台需要多少钱在数据库DataBase_FileName的TableName表中插⼊⼀个记录(记录内容包含Field1、Field2等)
INSERT  INTO  TableName  VALUES(Field1,Field2,Field3,。。。)IN  DataBase_FileName;
● 记录数据的删除(Delete)
DELETE  FROM  TableName  WHERE  Field=Content  IN  DataBase_FileName;
● 记录数据的修改(Edit)
UPDATE  TableName(
SET  Field1=Content1
WHERE  Field2=Content2)IN  DataBase_FileName;
5. 数据库复杂查询实现
3.1实现数据库单表、多表的选择、投影、连接查询。
要求实现:Select  条件查询
提⽰:
● Select  条件查询
SELECT  *
FROM  TableName1,TableName2
WHERE  Condition
问题点数:100、回复次数:8

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。