复合主键是否可以让外键引用 parent table
is it ok for composite primary key to have foreign key refer to parent table
这是一个小村庄的数据库,用于为其公民颁发建筑许可证
parent table: 建筑许可
- permit_id(PK)
- initiate_date
- 市民ID
- 等等
child table: 决定 sessions
- session #NO(因为每个建筑许可证可以有 N 个 session,每个许可证从 1 开始)
- session 日期
- 决定文本
- permit_id(FK)
for child table : 我应该
- 给它一个自动生成的整数主键并命名它(例如sessionID)。
或
- 同时选择 (session #NO 和 permit_id ) 作为复合主键。
我不知道第二种解决方案从数据库设计的角度来看是否有效。
通常来说,单场 pk 优于复合场。制作复合材料的唯一真正原因是您是否需要额外的字段来确保唯一性。如果您要在 child table 中有一个自动编号字段,那么您已经有一个保证每条记录唯一的字段。这足以创建任何类型的 table 连接。在这种情况下,将 pk 创建为复合键只会增加复杂性,而没有任何实际好处。有时复合键确实有意义,但我看不出有任何合理的理由在这里制作复合键。
这是一个小村庄的数据库,用于为其公民颁发建筑许可证
parent table: 建筑许可
- permit_id(PK)
- initiate_date
- 市民ID
- 等等
child table: 决定 sessions
- session #NO(因为每个建筑许可证可以有 N 个 session,每个许可证从 1 开始)
- session 日期
- 决定文本
- permit_id(FK)
for child table : 我应该
- 给它一个自动生成的整数主键并命名它(例如sessionID)。
或
- 同时选择 (session #NO 和 permit_id ) 作为复合主键。
我不知道第二种解决方案从数据库设计的角度来看是否有效。
通常来说,单场 pk 优于复合场。制作复合材料的唯一真正原因是您是否需要额外的字段来确保唯一性。如果您要在 child table 中有一个自动编号字段,那么您已经有一个保证每条记录唯一的字段。这足以创建任何类型的 table 连接。在这种情况下,将 pk 创建为复合键只会增加复杂性,而没有任何实际好处。有时复合键确实有意义,但我看不出有任何合理的理由在这里制作复合键。