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

我应该在哪里存储外键?

  •  18
  • vicatcu  · 技术社区  · 14 年前

    如果两个表之间有关系(两个表都有自己的主键),那么应该用什么来指导我决定哪个表应该存储外键?我知道关系的性质可能很重要(一对一、一对多、多对多、单向、双向),访问模式也可能很重要。什么是一个系统的方式来做这个决定呢?

    4 回复  |  直到 14 年前
        1
  •  35
  •   OMG Ponies    14 年前

    关系中的哪个表是子表?
    回答这个问题,就知道哪个表需要外键列,引用父表的[通常]主键。这是一对多的关系。。。

    多对多需要您添加第三个表,使用两个表中的键作为主键。

        2
  •  10
  •   S.Lott    14 年前

    似乎有两种选择:“一”面作为FK的“多”面,或“多”面有FK的“一”面。

    • “多”侧的所有行可以很容易地引用“一”侧的一行。

    • “一”侧的一行永远不能引用“多”侧的所有行。

    只有一个实际的实现选择。没有“决定”。

        3
  •  5
  •   Barry Brown    14 年前

    外键只是一个表中引用另一个表的键字段的字段。识别外键字段本身并不是绝对关键的。也就是说,您不需要显式地添加外键。。。将约束引用到表,使其成为外键。将两个表连接在一起时,父表的主键将设置为等于子表的外键。不管是哪一个 主键是外键。

    如果有多对多关系,则需要重新处理这些表,以便最终得到两个一对多关系和一个中间分辨率表。

        4
  •  0
  •   Mehraj Malik    7 年前

    primary key ,一个 foreign key 也是一种 constraint 放置在表中的一列或多列上。

    这个 在键列和其他表中的相关列之间建立链接(也可以将外键列链接到同一表中的列。)

    包含外键的表被视为子表,外键引用的表是父表。

    重点

    1. 这个 外键
    2. A 外键
    3. 不像 Primary key , Foreign key 列可以包含 无效的