在多个表之间创建关系的最佳方法

时间:2014-09-09 11:56:35

标签: database-design normalization

我有一个关于如何最好地处理将在多个关系之间共享的表的问题,但不应该真正加入所有这些表。例如,假设我有一个包含美国国家的表格。然后,在这个例子中,我可能有三到四个与States表有关系的其他表,例如:一个Users表(用户来自哪里),一个Car注册表,一个Email表(可能在这个系统上我们跟踪发送和接收的电子邮件及其来源地)和其他一些表格。如果我将所有这些表加入到State表中,那么它看起来就像所有这些表应该彼此之间存在某种关系。也许这对于几个表(如用户和汽车注册)是如此,但不一定在所有表(例如用户和电子邮件表)之间。或者另一个例子可能是我们有两个表,Employees和Work_Office。每个人都有自己的国家。并且每个都相互连接,创建一个循环(Work_Office有许多Employees。员工属于State,Work_Office属于State)。现在我们有一个循环。

那么,拥有多个“状态”表是否更好?它似乎不会。但与此同时,我不想创建可能不存在的关系?或者只是拥有表但不实际创建任何关系?

由于 杰森

1 个答案:

答案 0 :(得分:0)

  1. 拥有多个STATE表绝对更糟
  2. 引用一个特定表的许多表没有任何问题例如,用户和Work_Office以及引用地址表的Car_Registration表没有任何问题。
  3. 但是,您应该注意以下几点:

    • 州与地址: Employees,Work_Office和其他引用State表的表还引用了其他Address相关表(如City)吗?如果是,那么您应该考虑使用一个引用Street表和City表以及State表的Address表,并且有一个包含地址其余部分的字段,如门牌号。现在,所有具有地址的实体都应该只引用此地址表。
    • 员工和用户以及电子邮件:其中只有一个应该引用地址表,其余的应该互相引用。也就是说,Employee应引用Users表,Users表应包含电子邮件列,或引用Email表