所以我有3个主要实体。机场,客户和供应商。
每个人都会有多个与我相关的联系人。
所以他们以目前的方式设置它。
我有下表。
Airport
Customer
Vendor
然后我有一个Contacts表和一个外部参照,分别用于机场,客户,供应商...
我对此表示怀疑,并且正在考虑每个人的联系人表。
这两种设计都有缺点吗?
答案 0 :(得分:0)
对我来说,决定性因素是实体与“真相的一个版本”的复制。如果单个现实世界中的人可以是多个其他实体中的一个联系人,则您不想将该单个人存储在多个联系人表中,因为这样一来,您必须在以下位置保留对其属性的任何更改:多个地方。
如果您在AirportContacts
和VendorContacts
中都放置了相同的“乔·史密斯”,那么一天中您看到他的城市的地方是一个表中的“丹佛”,另一个表中的“波士顿” ,您认为哪一个是事实?
但是正如评论中提到的那样,如果一个联系人只能与其他三个实体之一(您称其为“类型”)相关联,那么将它们放在单独的表中是最有意义的。
还有第三种情况。说“乔史密斯”可以是机场和供应商的联系人。但是要说他有一些属性,例如性别和年龄,无论考虑的是哪种“类型”,这些属性都是相同的,但是可能有一些属性,例如电话号码或职位/职位,这取决于方式”。也许他以机场供应商的身份使用一部电话,而以供应商联系人的身份使用另一部电话。此外,也许有些属性适用于一种类型的联系人,而不适用于其他类型。在这些情况下,我将研究一种混合方法,在该方法中,您将公用属性保留在单个Contact表中,而“类型”特定的属性保留在它们自己与类型相关的表中。这些与类型相关的表将是具有FK的桥接表,这些FK返回到Contact表以及与它们相关的“类型”(供应商,客户或机场)的主要实体表。
答案 1 :(得分:0)