可能重复:
Is there a REAL performance difference between INT and VARCHAR primary keys?
这可能是一个愚蠢的问题,但是当我们在SQL中创建表时,使用ID代替名称会更好吗?
我已经为公司和客户创建了表格,我刚刚使用公司名称连接了2个表格。但是我从其他线程看到很多人使用company_ID作为主键并将其与其他表中的ID连接。
有没有充分的理由说他们使用的是ID而不是公司名称?
由于
答案 0 :(得分:0)
选择使用“自然”或“代理”键时需要考虑几个因素。仔细检查每一个。 This article讨论了每种方法的一些优点和缺点。
生成的ID通常是一个不错的选择,但最佳答案可能取决于您存储的数据以及该数据库的使用方式。例如,在书籍数据库的情况下,标题不会成为一个好的主键,因为两个作者可能会写不同的书但使用相同的标题。 ISBN可能是一个很好的自然关键。通常认为自然键不便于改变。书籍的ISBN多久会发生变化?另一方面,公司名称偶尔会发生变化。
使用公司编号也很常见,但这些通常已由会计部门指定。为什么您更愿意存储生成的CompanyID,并且始终必须查找ID引用的CompanyNbr?