2012-11-20 41 views
0

可能重复:
Is there a REAL performance difference between INT and VARCHAR primary keys?在SQL中使用ID而不是名称更好吗?

这可能是一个愚蠢的问题,但它更好地使用一个ID,而不是名称时,我们创建SQL表?

我已经为公司和客户创建了表格,并且我刚刚使用公司名称连接了2个表格。不过,我从其他线程看到很多人使用company_ID作为主键,并将其与其他表中的ID连接起来。

有没有什么好的理由,他们使用ID而不是公司名称?

谢谢

+0

ID将是并且应该是唯一的,而公司名称可能不是 – dchhetri

+2

考虑当公司重命名时会发生什么......现在您必须将新名称更改(或至少传播)到每个表旧的名字发生。 “哎呀,错过了......”。拖拽这个int从你的数据库中的任何东西中分离出名字,让ceo在重命名时浪费他们的时间,同时你可以实际完成一些有用的事情。 –

+0

@pst:考虑到mysql的级联深度限制为15.对于我不幸必须处理的几个模式来说还不够。 –

回答

0

选择使用“自然”或“代理”键有几个考虑因素。仔细检查。 This article讨论每个的一些利弊。生成的ID往往是一个不错的选择,但最好的答案可能取决于你正在存储什么数据,以及如何使用这个数据库。例如,在书籍数据库的情况下,标题不会成为一个好的主键,因为两个作者可能会编写不同的书籍,但使用相同的标题。 ISBN可能会成为一个很好的自然钥匙。常常认为一个自然的关键是不方便改变。一本书的ISBN有多频繁?另一方面,公司名称偶尔会改变。

使用公司编号也很常见,但这些编号通常由会计部门分配。为什么你更喜欢存储生成的CompanyID,并且总是需要查找该ID所引用的CompanyNbr?

相关问题