【发布时间】:2021-12-31 06:44:46
【问题描述】:
我有各种具有一些共享属性的“命名对象”,我认为将它们以以下格式保存在我的数据库中可能最有意义:
-
NamedObjectWrapper- 身份证
- 创建者
- 姓名
- ...
(这是我标记的工会)
- 命名对象类型
- NamedObject1(FK 可为空)
- NamedObject2(FK 可为空)
- NamedObject3(FK 可为空)
-
NamedObject1- ...
-
NamedObject2- ...
-
NamedObject3- ...
将设置 NamedObject1、NamedObject2 和 NamedObject3 中的一个,而其他两个为空。以上是一种可行的方法吗?我想通过只存储三个具有所有重复属性的表来做到这一点的更相关的方式很好,但我会一直将这三个表联合在一起,所以我认为这可以节省我很多工作这样做。
【问题讨论】:
-
将除一个 FK 之外的所有 FK 设置为 null 是一个常见问题解答,通常是 DB/SQL 子类型/继承的反模式,这也是一个常见问题解答,最好通过超类型表加上子类型表或这些的左连接。
-
@philipxy
faq是什么意思? -
我的意思是首字母缩写词代表什么,但不是官方网站常见问题解答。
标签: sql database database-design union-types