可以在每个表中使用相同的主键吗?

时间:2012-06-28 15:22:42

标签: asp.net html

我正在设计医疗保健表单数据库。我们使用各种形式,用户ID和年份是唯一标识符。目前,每个表单有一个表,每个表都有一个用户ID和一年的主键:ex,表health_form_1,pk(user_id,year)各种特定于表单的列。表health_form_2,pk(user_id,year)各种特定于表单的列。

看着一组具有相同主键的表格,我觉得很奇怪。有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

数据库表不应映射到您的表单。相反,表格应映射到系统正在建模的实际实体。

例如,如果您正在使用医疗结算系统,那么您可能会有以下表格:

  • 患者
  • 临床医生
  • 发票

等...

这些表中的每一个都有自己的主键。

答案 1 :(得分:1)

该方法的问题在于,如果业务需求发生变化(例如,用户可以在一年内多次创建相同的表单),那么您就必须更改主键的位置,当它在其他地方也用作外键时可能会特别成问题。

相反,我会为每个表创建一个代理自动增量主键,并在UserID和Yeart列上创建一个unqiue索引或约束。

此外,许多ORM在使用单个PK时效果更好,它可以使您的查询更简洁。