【发布时间】:2011-11-24 20:53:00
【问题描述】:
我已经阅读了某些地方,通常对大多数 MySQL 表使用自动递增的主键是一种很好的做法,而不是简单地依赖将被强制为唯一的非递增字段。
我的问题是关于一个用户表,以及一个通过外键连接到它的表。这是架构:
TABLE Users {
id
name
...
}
TABLE Authors {
user_id (FK)
author_bio
}
Authors 表是否也应该有自己的自增主键,还是应该依赖 user_id 外键作为主键?
也
是否有明显的性能原因不使用自动递增的 id 作为主节点?
【问题讨论】:
-
使用
USERS表的主键作为AUTHORS表的主键建议1:1 的关系。规范化(3NF?)规定在这种情况下不应该有两个表。添加单独的主键(是否自动递增)不会改变... -
OMG - 用户可能是作者,但作者将是用户。是这个意思吗?
-
不,如果只有一个 USER 与单个 AUTHOR 记录相关 - 即 1:1。该决定取决于您的业务规则,但众所周知,作者有化名(别名) - IE:Steven King 写成 Richard Bachman
-
我的天啊,不过,我认为把所有东西放在一张桌子上效率很低。就我而言,也许每 100 个帐户中就有 1 个是作者。这意味着 User 表中会有很多空字段没有分隔......对吗?
标签: mysql primary-key auto-increment