学习C的方式的ex17数据库设计问题

问题描述 投票:3回答:1

我真的很喜欢这个。 ex17应该通过提供simple database来教我堆和栈内存的分配(我的问题是特定的,但是我会留在那里,以防万一您需要完整的代码)。关于数据库的某些设计决策的目的没有太多解释,这就是为什么我寻求帮助。

1)是必要还是仅仅是设计上的便利(约定)?

struct Address {
    int id;
    int set;
    char name[MAX_DATA];
    char email[MAX_DATA];
};

struct Database {
    struct Address rows[MAX_ROWS];
};

struct Connection {
    FILE *file;
    struct Database *db;
};

我不确定为什么会有三个结构。代码中还有一些类似的表达式(希望您理解变量的名称)conn->db->rows[i]。我的问题是其中三个是否必要?我的意思是,为什么我们需要一个连接结构?为什么不创建一个独立的FILE *file事物并完全避免使用struct Database *db指针呢?

2)也许这对我的第一个会有所帮助。在本练习的Extra credit(即,自己做)部分中,有一个任务如下:Try reworking the program to use a single global for the database connection. How does this now version of the program compare to the other one?那么这是否只是要求我重做管理该数据库的“三层结构”?

c database memory-management database-design static-memory-allocation
1个回答
1
投票

是,您只能有struct Adress,指向数据库文件的全局FILE *和用于存储数据的全局struct Adress rows[MAX_ROWS]。但是,真实的数据库具有名称,关联的文件,权限等(您提供的示例非常简单)。

© www.soinside.com 2019 - 2024. All rights reserved.