C++ 稀疏表与独立表
我有一个C++ 稀疏表与独立表,c++,database-design,sqlite,C++,Database Design,Sqlite,我有一个c++基类a和几个派生的子类B1、B2、B3,…。我有一个sqlite3数据库文件,其中包含构造这些子类实例的信息。假设A有如下成员 int number; std::string label; B1添加成员 std::string uuid; 和B2添加一个成员 std::string url; 对于所有A类,我倾向于在sqlite数据库中只有一个表,其中包含(子类int、数字int、标签文本、uuid文本、url文本),其中第一列表示我正在存储的类,并允许所有B2类的uuid为
c++
基类a
和几个派生的子类B1、B2、B3,…
。我有一个sqlite3数据库文件,其中包含构造这些子类实例的信息。假设A
有如下成员
int number;
std::string label;
B1
添加成员
std::string uuid;
和B2
添加一个成员
std::string url;
对于所有A
类,我倾向于在sqlite数据库中只有一个表,其中包含(子类int、数字int、标签文本、uuid文本、url文本)
,其中第一列表示我正在存储的类,并允许所有B2
类的uuid
为空
另一种方法是为每个子类创建一个表
如果某个子类(例如
B3
中的成员数量很大(仍然不是那么多,大约15列),这意味着对于不是B3
类型的每个类,第一种方法中的对应行将有大量NULL
列。然而,我在SQLite
NULL
列中收集到的信息不会在磁盘上占用太多开销,所以第一种方法是正确的还是错误的做法?您的方法类似于这两个标记下描述的两种技术:和中的@RustyX,空值占用类型代码的一个字节。您的方法类似于这两个标记下描述的两种技术:和中的@RustyX,空值占用类型代码的一个字节。