让我们假设我们有两个相同的状态表。每个表都有自己的值。他们不同意。
现在,什么是最佳实践?
分隔:
Table: offer_statuses
- id
- name //For example: calculating, sent
Table: project_statuses
- id
- name //For example: preparation, in progress
合并:
Table: statuses
- id
- status //For example: offer, project
- name //For example: calculating, sent, preparation, in progress
答案 0 :(得分:2)
Id保持独立。项目状态不是报价状态。通过合并您将一无所获,现在合并状态表中的每个外键将是两列而不是一列。您还可能会引入错误,因为您的外键不会阻止您使用仅项目状态有效的商品状态。
答案 1 :(得分:1)
您可以选择任何一种方式。通常,每种状态都有一个单独的参考表,因为这将允许这两种情况:
"C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe" create "v13.0" 13.0 -s
和offers
到适当状态的在某些情况下,将所有状态都放在同一表中很有用。例如,如果状态确实确实重叠,则将它们放在同一表中是有意义的。另一个用例是国际化。如果应用程序需要易于翻译,那么将所有语言字符串(例如状态描述)放在一个表中(或少数几个表中)会很有帮助。
换句话说,我通常会去单独的表。但是,将它们组合在一起可能有充分的理由。
答案 2 :(得分:1)
我建议将它们分开。从逻辑的角度来看,这听起来似乎有所不同。具有相同属性的一个指标是两个表可能对同一实体建模但没有证据。
保持它们不同可以更轻松地实现数据正确性,因为您可以使用外键约束,该约束指向正确的状态。如果您只有一张桌子,则很难确保,例如优惠仅可用于优惠状态。