我正在从一个非常过时的系统创建/重建一个新系统,并且正在创建将在新系统中使用的模式。这些表需要一些认真的工作来进行规范化。
我使用的客户表中有很多重复的数据:
- 一些客户是相关的,因为他们拥有相同的“母公司”。例如,像 Graybar Electric 这样的供应公司在美国有许多分支机构。在此客户表中,这些分支机构中的每一个都被列为单独的客户,例如“Graybar Electric - Seattle”。斯波坎分公司被列为“Graybar Electric - Spokane”。
- 一个客户有一个帐单地址,但一个帐单地址可以是一个或多个客户。如果帐单地址与多个客户相关,则这些客户始终来自同一“母公司”
- 但是,母公司的分支机构不一定共享相同的帐单地址。例如,“Stoneway Electric - 西雅图”的帐单地址可能与“Stoneway Electric-Everett”不同,但可能与“Stoneway Electric - Tacoma”共享帐单地址。
- 并非所有客户都是分支机构,他们是他们自己的个人公司/客户,因此他们没有“母公司”。
这是我上面解释的快速视图:
Customer Name | Billing Address
--------------------------------------
CustomerA - Branch1 | BillingAddress1
CustomerA - Branch2 | BillingAddress1
CustomerA - Branch3 | BillingAddress2
CustomerA - Branch4 | BillingAddress3
CustomerB - Branch1 | BillingAddress4
CustomerB - Branch2 | BillingAddress4
CustomerC | BillingAddress5
CustomerD | BillingAddress6
etc....
所以,我想我想要表格:ParentCompany、Customer和BillingAddress。但我不确定的是如何关联这 3 个表。我看到的选择是:
- ParentCompany 到客户 (1:M),然后客户到帐单地址 (M:1)
- ParentCompany 到 BillingAddress (1:M),然后 BillingAddress 到客户 (1:M)
在做出我的选择时,我试图考虑哪个更容易在表单的用户界面中实现。我需要考虑:
- 为现有母公司添加客户分支机构
- 为尚不存在的母公司添加客户分支机构。
- 添加不是母公司分支机构的客户。
- 添加分公司客户时,用户将选择与母公司相关的现有帐单地址或输入新的帐单地址。
- 现有的单一客户想要添加一个分支客户,因此现在新客户和原始单一客户都需要与新的母公司相关联。
所以我的问题是:
- 哪种模式最适合我的情况?
- 我需要考虑的上述每个选项是否有优点/缺点?
- 我还缺少其他选择或考虑吗?
感谢您的输入。