我正在设计医疗保健表单数据库。我们使用各种形式,用户ID和年份是唯一标识符。目前,每个表单有一个表,每个表都有一个用户ID和一年的主键:ex,表health_form_1,pk(user_id,year)各种特定于表单的列。表health_form_2,pk(user_id,year)各种特定于表单的列。
看着一组具有相同主键的表格,我觉得很奇怪。有更好的方法吗?
答案 0 :(得分:2)
数据库表不应映射到您的表单。相反,表格应映射到系统正在建模的实际实体。
例如,如果您正在使用医疗结算系统,那么您可能会有以下表格:
等...
这些表中的每一个都有自己的主键。
答案 1 :(得分:1)
该方法的问题在于,如果业务需求发生变化(例如,用户可以在一年内多次创建相同的表单),那么您就必须更改主键的位置,当它在其他地方也用作外键时可能会特别成问题。
相反,我会为每个表创建一个代理自动增量主键,并在UserID和Yeart列上创建一个unqiue索引或约束。
此外,许多ORM在使用单个PK时效果更好,它可以使您的查询更简洁。