我已经阅读了关于mysql DB的简单性和良好实践的问题和答案。
我有一个mysql数据库,带有'clients'表。每个添加的客户端都有一封电子邮件,这对电子邮件来说是独一无二的。使用C ++ Builder时,添加由id字段自动递增引起的记录会出现问题 - 强制手动递增使用DBEXPRESS添加新行时的ID。
为什么不跳过自动增加的ID?拥有一个没有(自动递增)id的表,并将电子邮件作为唯一密钥是一种好习惯吗?这将解决DBEXPRESS问题。
答案 0 :(得分:2)
否:不要使用电子邮件作为主键。有几个原因:
id
的自动增量键。符合行业标准是一种良好的做法。答案 1 :(得分:1)
从概念上讲,是的,不生成人工唯一键(或者至少限制这些实例)是个好主意。 e-mail
提供了自然独特的关键目的。
然而,我担心的一件事就是表现。在进行查询时,将整数作为id是非常方便的,搜索这些查询比使用长字符串要快得多......如果您只是使用电子邮件地址从数据库中检索用户,则无关紧要。但是,如果您有多个连接的复杂查询,这很重要。
此外,如果在多个表中存储有关客户端的信息,则另一个表的外键将是电子邮件地址。这意味着你多次存储电子邮件地址,如果客户决定有一天决定更改他的电子邮件,这将使更新一切变得更加困难。