【发布时间】:2013-06-20 12:19:24
【问题描述】:
我正在从一个非常过时的系统创建/重建一个新系统,并且正在创建将在新系统中使用的架构。这些表需要一些认真的工作来进行规范化。
我使用的客户表中有很多重复的数据:
- 一些客户是相关的,因为他们拥有相同的“母公司”。例如,像 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 个表。我看到的选择是:
- 母公司到客户 (1:M),然后是客户到帐单地址 (M:1)
- ParentCompany 到 BillingAddress (1:M),然后 BillingAddress 到客户 (1:M)
在做出选择时,我正在尝试考虑哪些更容易在表单的用户界面中实现。我需要考虑:
- 为现有母公司添加客户分支机构
- 为尚不存在的母公司添加客户分支机构。
- 添加不是母公司分支机构的客户。
- 添加分公司客户时,用户可以选择与母公司相关的现有帐单地址或输入新帐单地址。
- 现有单一客户想要添加分公司客户,因此现在新客户和原始单一客户都需要与新的母公司关联。
所以我的问题是:
- 哪种架构最适合我的情况?
- 我需要考虑以上每个选项的优缺点吗?
- 还有其他我遗漏的选项或注意事项吗?
感谢您的意见。
【问题讨论】:
标签: database-design database-schema