如何处理不同表的统一关系(例如客户/公司和地址)

时间:2014-08-13 07:45:24

标签: ms-access database-design

我将以我已经拥有的东西开始: Version 1

我在uni学习了如何创建数据库,现在我正在尝试创建自己的个人用途并可能用于我的客户群。我工作的人一方面是企业(公司),另一方面是私人(客户)。

我尝试构建我的数据库,如上所示。我希望能够为我的客户和公司添加多个地址。我也有几个为我工作的员工。

现在,我对我现在拥有的东西非常满意,但我觉得它可以更简单但具有相同的功能(多个地址,......)。

其次,公司和客户都可以下订单。现在我只有一张供客户下订单的桌子,我对公司如何做同样的事情一无所知。

我应该制作一个CustomerOrder和CompanyOrder表来实现这个目标还是有更好的解决方案?


修改

我玩了一会儿,实际上已经开始了。我尝试将每个部分都像电子邮件,电话,传真一样放在自己的桌子上。这样,如果我在某个地方更新了一个电话号码并在其他地方使用过,那么两者都会更新。

以下是我到目前为止:

Version 2

Phone,Phone_1和Phone_2是同一个表,Access只是以这种方式显示。关于我如何做的任何建议?如果有CustomerSupport或TechnicalSupport,则使用ContactType。输入EntityAddress是为了确定地址是针对个人还是公司。这样,它可以扩展到更多实体。

现在我写这篇文章,对于电话,电子邮件和传真做同样的事情会不会像我使用地址那样做?

1 个答案:

答案 0 :(得分:0)

我建议您为订单创建一个单独的表,不与客户或公司建立链接。然后创建2个中间表,一方面将订单和公司链接在一起,另一方面将订单和客户联系在一起。

表格中的字段如下所示:
链路ID
客户ID /公司ID
OrderID

它避免了两次相同的表(订单表)。

对于手机,你可以做同样的事情。通过这种方式,您可以将任意数量的电话号码链接到一家公司或客户。