首页 > 解决方案 > 为什么在一对多(1-N)的关系中,主键的一侧总是放在 N 侧,反之亦然?

问题描述

我正在做一个项目,但我在设计数据库时遇到了问题。我想知道为什么在 1 到 N 的关系中,主键的一侧总是放在 N 侧,反之亦然?

例如,我们有两个表UserComment;在这些表中,我们必须将主键作为外键User放入表中。Comment我们可以反过来吗?

例如,我将表的主键作为外键Comment放入表中。User

标签: database-designentity-relationship

解决方案


我希望您的 User 表旨在每个用户有一行,但每个用户可能有多个评论。因此,如果您将注释外键值放在 User 表中,您将需要一种将多个注释添加到单行中的方法,可能使用多值数据结构、数组或嵌套表之类的东西。

许多数据库系统确实支持这种“复杂”属性,但不是全部,所以很大程度上取决于您使用的技术。如果您的软件允许复杂类型,那么访问它们的方法可能比访问属性的单个值更复杂。在关系数据库中,关系操作将属性视为单个值,这就是为什么在关系数据库设计中引用外键属性属于 Comment 表的原因。


推荐阅读