【发布时间】:2021-06-29 22:37:19
【问题描述】:
为了我的计算机科学学位,我需要使用 C 编写一个小型/简单的数据库应用程序(因此不能选择使用 SQLite 或任何其他可用的应用程序。换句话说,我确实需要在这里重新发明轮子)。
我的想法是使用 B-Tree 来存储每个表的项目。我面临的问题是表需要灵活地保存未知数量的列,并且每列可以是 STRING 或 INT。例如,使用以下命令:
CREATE TABLE student (STRING name, INT age)
我需要创建一个包含字符串和整数的表。改用这个命令:
CREATE TABLE grade (INT grade1, INT grade2, INT grade3)
我需要创建一个包含三个整数的表。
怎样才能达到这样的灵活性?
到目前为止,我唯一的想法是创建一个内部包含多个联合的结构,其中每个联合可以是 STRING 或 INT。我还需要在里面放很多联合,以确保容纳表请求的所有列。例如:
struct table{
union{
int number;
char *text;
}column1;
union{
int number;
char *text;
}column2;
union{
int number;
char *text;
}column3;
....
};
有没有更好的方法来做到这一点?
【问题讨论】:
-
更好的方法是使用SQLite。
-
我更新了我的问题。这是为了大学,以学习为目的。所以是的,我几乎必须发明自己的数据库。
标签: database