在工作中,我们有一个大型数据库,具有唯一索引而不是主键,一切正常.
我正在为一个新项目设计新的数据库,我有一个两难的境地:
在DB理论中,主键是基本元素,没关系,但在REAL项目中,两者的优点和缺点是什么?
你在项目中使用了什么?
编辑: ...那么MS SQL服务器上的主键和复制呢?
一个问题:
我有2张桌子:
Product
id INT
name VARCHAR(64)
something TEXT
else INT
entirely BOOL
Run Code Online (Sandbox Code Playgroud)
和
Ingredient
id INT
name VARCHAR(64)
description TEXT
Run Code Online (Sandbox Code Playgroud)
现在我还有一个链接表
Products_Ingredients
product_id INT
ingredient_id INT
Run Code Online (Sandbox Code Playgroud)
为了我的多对多关系.
现在,产品和配料都有独特的名称.所以我可以使用名称作为自然键...但这是一个好主意吗?
说我有一个产品:Paint Thinner Supreme
含有成分:Butylonitrotetrocycline
将这些名称用作链接表中的复合键是否是一个好主意?
尽管我理解在代理人之上使用自然键背后的想法,我有点不能不再认为使用简单整数作为主键(和外键)会更快.MySQL服务器消化这些不同密钥的方式会有区别吗?
你有什么意见?
mysql database database-design foreign-keys relational-database