我正在使用SQL Server数据库。假设我有一个名为' Company'的实体。和2种类型的公司'是:1)本地,2)国际。就我而言,本地和国际公司之间没有等级关系。
假设本地和国际公司共享10个共同属性,并且有15-20个属于国际公司的属性。
我要创建2个表,它们之间有1-1关系。 1-公司(这将包含常见的列, 2- InternationalComopany(这将包含CompanyId作为ForeignKey和15-20个专门针对国际公司的列)
OR
我应该使用一张名为'公司'并将每列放入该表(包括15-20个可空列)?
在这种情况下我发现需要考虑的事项是什么? 多少可以为空的列在选择两个选项之一时有所不同? 在两种情况下,性能会受到什么影响?
答案 0 :(得分:1)
您要考虑的主要事项是外键关系。其他表格是指“公司”吗?或者,其他表格是指“本地公司”还是“国际公司”?
如果关系是针对所有公司的,那么您需要一个表。这允许您强制执行数据完整性关系。
如果关系始终是一种或另一种类型,那么您可以将它们放在两个不同的表中。他们似乎是两个不同的实体。
如果有时关系是一种类型,有时是另一种类型,那么你通常会想要一个表中的所有值。还有其他方法可以处理“特定类型”关系。
是否将其他属性存储在同一个表中是下一个问题。这样做几乎没有什么害处 - 您可以轻松地为一种类型的公司或另一种公司创建视图。
您何时会将国际公司的其他列放在另一个表中?以下是一些标准: