我有各种"命名对象",它们有一些共享属性,我认为在我的数据库中以以下格式保存它们可能最有意义:
-
NamedObjectWrapper
- ID
- 创建者
- 名称
(这是我标记的联合(
- NamedObjectType
- NamedObject1(FK NULLable(
- NamedObject2(FK NULLable(
- NamedObject3(FK NULLable(
-
NamedObject1
-
NamedObject2
-
NamedObject3
将恰好设置NamedObject1
、NamedObject2
和NamedObject3
中的一个,其他两个为空。上面的方法可以吗?我认为更具关系性的方法是,只存储三个具有所有重复属性的表是可以的,但我会一直将这三个表联合在一起,所以我认为这样做节省了很多工作。
相反,您可以将详细对象上的FK转换为存储在基础对象上的共享信息。例如:
NamedObjectBase
- ID
NamedObject1
- 基本ID(FK(
NamedObject2
- 基本ID(FK(
NamedObject3
- 基本ID(FK(