【发布时间】:2011-04-17 18:35:59
【问题描述】:
与自动递增数字相比,电子邮件地址是否不适合作为主要地址?
我们的 Web 应用程序需要电子邮件地址在系统中是唯一的。所以,我想到了使用电子邮件地址作为主键。但是我的同事建议字符串比较会比整数比较慢。
不使用电子邮件作为主键是否有正当理由?
我们正在使用PostgreSQL。
【问题讨论】:
-
“主要”是什么意思?如果电子邮件地址需要是唯一的,那么它是一个键并且需要一个唯一的约束。您是否决定将其“推广”为“主要”是任意的,除非有实际原因,例如优化性能不佳的系统。
-
如果您希望您的数据库强制使用唯一的电子邮件地址,请创建具有唯一索引的列,但不要将其用作主键。
-
@robert 如果有人想更改他的电子邮件地址怎么办?你也要改变所有的外键吗?
-
@onedaywhen - 几乎没有任何区别,但默认情况下主键将被聚集,而唯一索引不会。您仍然需要定义将作为默认单记录查找键的主键,唯一索引仅在普通索引上强制列的唯一性
-
@James Westgate:仅供参考,PostgreSQL 中没有自动集群之类的东西。 PRIMARY KEY 在磁盘上的实现与 UNIQUE INDEX 完全相同,其中所有字段都不为 NULL。
标签: sql database database-design postgresql