【发布时间】:2011-06-23 17:01:54
【问题描述】:
我有一个网络应用程序,我有一个用户概念,它可能会进入一个用户表,例如:
table: user
username (varchar 32) | email (varchar 64) | fav_color | ...
我希望用户名和电子邮件是唯一的,这意味着我不能允许用户拥有相同的用户名或相同的电子邮件。我看到这种类型的示例表总是引入一个整数自增主键。
不知道为什么要这样做,是不是为了以后通过外键加快查询速度?例如,假设我有另一个表,例如:
table: grades
username (foreign key?) | grade
使用用户名作为外键是否效率低下?我想做如下查询:
SELECT FROM grades WHERE username = 'john'
所以我想对数据库进行整数查找会更快?:
SELECT FROM grades WHERE fk_user_id = 20431
谢谢
【问题讨论】:
-
JIRA 错误地映射到用户名以实现参照完整性——有一个“功能请求”来解决这个问题,它已经存在多年......
标签: sql mysql database-design data-modeling normalization