代码之家  ›  专栏  ›  技术社区  ›  Kshitiz Bathwal

我们是否应该将单向的一对多关系分解为一个可联接的

  •  0
  • Kshitiz Bathwal  · 技术社区  · 7 年前

    我目前正在处理一个有两个表的应用程序。用户和团队。用户的用户名是pk和userpassword。

    team表的teamid为pk,teamname为。

    最初我只有一个表,其中有userid、userpassword和teamid,但有人告诉我,当前的设计没有规范化。因此,我不得不将表分成user、team和一个名为user_team的联接表,其中包含userid作为用户表中的pk,teamid作为团队表中的pk。

    约束条件 一个用户只能在一个团队中,一个团队可以有多个用户。

    所以根据我的理解,这是一个从团队到用户的一个整体。

    我已经将userid和teamid作为一个组合键放在一起,并且还使其在jointable(user_team)中是唯一的,因此1个用户不能在多个团队中。

    我的疑问是有必要将表单独分解为team表。我不能把三个字段都放在一张表里。有人能解释一下这是怎么不正常的吗?如果在这种情况下需要jointable,也请告诉我。

    0 回复  |  直到 7 年前
        1
  •  2
  •   GBrandt    7 年前

    不,你不需要一个一夫一妻关系的jointable。只是有一个 teamId 你的用户表上的字段,你就可以走了。

    根据经验:

    • 一对一 :只有一张桌子
    • 单亲 :两张桌子,“多”面( User 对于您的情况)有外键
    • 许多 :有一个jointable