Мне нужно написать маленькое / простое приложение базы данных, используя C, для моей степени CS (поэтому использование SQLite или любого другого доступного приложения не вариант. Другими словами, мне нужно заново изобрести колесо здесь).
Моя идея состоит в том, чтобы использовать B-дерево для хранения предметов каждой таблицы. Проблема, с которой я сталкиваюсь, заключается в том, что таблицы должны быть гибкими, чтобы содержать неизвестное количество столбцов, и каждый столбец может быть либо 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;
....
};
Есть ли лучший способ сделать это?