我有一个名为评级的查找表。它有两个属性:name(作为主键)和description。在我的另一个表 - 书 - 我有一个外键rating_name(这是对rating.name的引用)。这是一个好的设计还是我应该为评级表添加id列?
答案 0 :(得分:1)
更多规范设计将在您的评级表中包含所有3个字段:
id NUMBER NOT NULL AUTO_INCREMENT
name VARCHAR
description VARCHAR
和"书籍"表应指向"评级" by books.ratings_id = ratings.id。 如果在某些时候你需要更新你的评级名称,那将会更好。
另一个原因是许多服务器框架都假设您的所有表都有数字" id"带有主键的字段。所以它稍后会为你节省一些编码。
要回答你的问题 - 你不需要另一个" id"如果您已有主键字段(ratings.name)。
答案 1 :(得分:1)
您的问题基本上归结为您是否要使用代理密钥(与业务领域无关的密钥)或自然密钥(与业务领域相关的代码密钥)。这是一个在数据库设计领域备受争议的问题,而this question(已被恰当地标记为主观)会对每个人的利弊有所了解。