我意识到这些类型问题的答案通常是“视情况而定”,但我仍然想知道普遍的共识可能是什么。
我正在处理多个实体,例如
- 公司
- 慈善机构
- 审计师
- 盘点员
等等等等……
其中都有联系信息,如电子邮件、电话和地址。
我想存储联系信息的两种设计方法是
方法1)在联系表与公司、慈善机构、审计师和股票持有人之间创建角色表。
- dbo.Company -> dbo.CompanyAddress <- dbo.Address
- dbo.Company -> dbo.Companytelephone <- dbo.telephone
dbo.Company -> dbo.Companyaddress <- dbo.email
dbo.Auditor-> dbo.AuditorAddress <- dbo.Address
- dbo.Auditor-> dbo.Auditortelephone <- dbo.telephone
- dbo.Auditor-> dbo.Auditoraddress <- dbo.email
优点,数据库中只需要一个地址,电话和电子邮件表,并且每种实体类型的所有电话号码,地址和电子邮件都存储在一个地方缺点是它创建了很多关联表
方法 2) 为每个公司、慈善机构、审计师和股票持有人创建单独的联系表
- dbo.Company -> dbo.CompanyContactAddress
- dbo.Company -> dbo.CompanyContacttelephone
dbo.Company -> dbo.CompanyContactaddress
dbo.Auditor -> dbo.AuditorContactAddress
- dbo.Auditor -> dbo.AuditorContacttelephone
- dbo.Auditor -> dbo.AuditorContactaddress
这样做的优点是更易于实施和维护 缺点是联系人详细信息存储在数据库中的多个位置。
如果有人有任何其他想法,将不胜感激。
非常感谢