代码之家  ›  专栏  ›  技术社区  ›  jason

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

  •  0
  • jason  · 技术社区  · 10 年前

    我有一个问题,就是如何最好地处理一个可以在多个关系之间共享的表,但实际上不应该与所有这些表连接。例如,假设我有一个表,其中包含美国各州。然后,在这个示例中,我可能有三到四个其他表与州表有关系,例如:用户表(用户来自哪里)、汽车登记表、电子邮件表(可能在这个系统中我们跟踪发送和接收的电子邮件以及它们的来源)和其他一些表。如果我将所有这些表都加入到State表中,那么看起来所有这些表之间应该有某种关系。可能对于一些表(如用户和汽车注册)是这样,但不一定在所有表之间(例如用户和电子邮件表)。或者另一个例子可能是我们有两个表,Employees和Work_Office。每个人都有自己的状态。并且每个人都彼此连接,从而创建一个循环(Work_Office有许多雇员。雇员属于State,Work_Officee属于State)。现在我们有一个循环。

    那么,有多个“状态”表更好吗?看起来并不是这样。但同时,我不想建立可能并不存在的关系?或者,仅仅拥有这些表而不实际创建任何类型的关系更好吗?

    谢谢 杰森

    1 回复  |  直到 10 年前
        1
  •  0
  •   bpgergo    10 年前
    1. 这是绝对的 更糟的 以具有多个STATE表。
    2. 许多表引用一个特定的表没有问题。例如,Users和Work_Office以及Car_Registration表引用Address表也没有问题。
    3. 但是,有几点需要注意:

      • 州与地址: 雇员、工作办公室和其他引用州表的表是否也引用其他与地址相关的表(如城市)?如果是,那么您应该考虑使用一个Address表,该表引用Street表、City表和State表,并具有一个包含地址其余部分的字段,如门牌号。现在,所有具有地址的实体都应该只引用这个地址表。
      • 雇员、用户和电子邮件:其中只有一个应该引用地址表,其余的应该相互引用。也就是说,Employee应引用Users表,Users表应包含电子邮件列,或引用email表