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,空值占用类型代码的一个字节。