【发布时间】:2014-07-05 21:27:13
【问题描述】:
我有一张桌子,上面有类似的产品
产品
id
name
styles_id
我也有一个样式像
的表格样式
id
name
当我向产品添加样式时,我使用来自 Styles 表的外键 id 值。我在很多项目上都这样做了几年,但我在想为什么?如果我有一个名称为主键且没有id 的Styles 表,那么获得产品会容易得多。所以我不必进行连接来获取产品的样式名称。我看到它做了很多,但id 在Styles 表中的优势是什么?
【问题讨论】:
-
也是stackoverflow.com/q/1229173/458741、stackoverflow.com/q/3747730/458741、stackoverflow.com/q/590442/458741 等的副本...这是数据库设计中较早的“战争”之一...现在您知道要查找的关键字因为那里有很多信息,不仅仅是在 Stack Overflow 上。
-
谢谢你的链接帮了很多忙,但是在这种情况下你有什么建议呢?我认为没有 id 的唯一缺点是如果我想更改样式名称但我可以轻松添加 ON UPDATE CASCADE ..
-
我真的不明白你的建议与@Sven 的链接有何不同。如果您现在想要一个自然键,一般建议是使用代理键,但在名称上添加唯一的非空约束。这样,您将来可以改变主意,而无需更改所有您的代码。
标签: sql