第四个Table中三个Table之间的关系模型
Relationship Model between Three Tables in a Fourth Table
所以我有两个table——Student
table和Staff
table,我还有一个Item
table,该计划是让学生或教职员工保管物品,换句话说,让物品有保管人(学生或教职员工)。所以我创建了一个新的 table -- Item_Custodian
。我如何建立一种关系,使我的 Item_Custodian
table 能够保存关于项目的信息,并且它是学生或员工的保管人。欢迎提出建议、提示等。谢谢
我将分享我所知道的三种处理此类关系的方法:
- 方法一:定义两个独立的
nullable foreign keys
Item_Custodian
一个引用 Staff
一个引用
Student
导致两种物理关系,其中一种是
总是 null
。
- 方法 2:为
Student
和定义两个 ID 范围
Staff
以不重叠的方式。然后,只创建一列
Item_Custodian
并使用两个 table ID 中的任何一个对其进行初始化
从而形成逻辑关系。
- 方法3:在
Item_Custodian
中定义两列,一个作为逻辑外键,另一个作为第一列的类型(即StaffType
或 StudentType
)。
在您只有两个保管人的情况下,我个人更喜欢第一种方法,原因有两个:
- 它在 tables
之间建立物理关系
- 只有一个
null
列不会使 table 稀疏
所以我有两个table——Student
table和Staff
table,我还有一个Item
table,该计划是让学生或教职员工保管物品,换句话说,让物品有保管人(学生或教职员工)。所以我创建了一个新的 table -- Item_Custodian
。我如何建立一种关系,使我的 Item_Custodian
table 能够保存关于项目的信息,并且它是学生或员工的保管人。欢迎提出建议、提示等。谢谢
我将分享我所知道的三种处理此类关系的方法:
- 方法一:定义两个独立的
nullable foreign keys
Item_Custodian
一个引用Staff
一个引用Student
导致两种物理关系,其中一种是 总是null
。 - 方法 2:为
Student
和定义两个 ID 范围Staff
以不重叠的方式。然后,只创建一列Item_Custodian
并使用两个 table ID 中的任何一个对其进行初始化 从而形成逻辑关系。 - 方法3:在
Item_Custodian
中定义两列,一个作为逻辑外键,另一个作为第一列的类型(即StaffType
或StudentType
)。
在您只有两个保管人的情况下,我个人更喜欢第一种方法,原因有两个:
- 它在 tables 之间建立物理关系
- 只有一个
null
列不会使 table 稀疏