SQL 中是否始终需要 ID 列?

Cyr*_*ril 2 mysql sql indexing unique

更具体地说,我创建了一个带有标签系统的新闻模块。由于每个标签都是唯一的(作为管理员,您不允许创建 2 个相同的标签),因此 id 列仍然有用吗?我想不是,但我想知道表演。

编号 | mews_标题 | 日期... <-------------> news_id | tag_id <----------> id | 标签名

VS

编号 | mews_标题 | 日期... <-------------> news_id | tag_tag_name <----------> tag_name

多谢!

Bil*_*win 5

性能差异微不足道。

在示例中使用数字id作为标签的优点是:

  • 使交集表稍微小一些,因为整数平均比字符串小
  • 允许通过更新一行而不是多行来更改标签名称的拼写

对于您的案例来说,这些可能不是重要的考虑因素。所以不,不需要使用 numeric id

我还在我的书《SQL 反模式卷 1:避免数据库编程的陷阱》中标题为“ID 必需”的章节中对此进行了讨论。