很纠结。外键该用"UserID"还是"UserName"?

fihuang 2010-08-07 09:25:53
既然做外键,那肯定也做主键。先声明,UserName是唯一的,一旦注册以后将不能修改。
因为UserID是数字型,UserName是字符型,所以UserID的效率肯定比UserName高,并且占用的存储空间也小,但是以后就需要做表连接或者二次查询,这一点很影响效率。并且,教科书上都从来没有过UserName做外键的做法。

大家再看看用哪一种方式比较好:
1.一个字段:UserID做外键,通过表连接或者二次查询。
2.一个字段:UserName做外键。
3.两个字段:UserID做外键,增加UserName字段。
4.两个字段:UserID和UserName都做外键。

谢谢大家。持续关注。
...全文
600 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkzhx 2010-08-17
  • 打赏
  • 举报
回复
userid
  • 打赏
  • 举报
回复
督促结贴。
hisense 2010-08-14
  • 打赏
  • 举报
回复
如果数据比较多的话,而且经常删除,自增字段不能复用,也是一个问题.
Johnson 2010-08-09
  • 打赏
  • 举报
回复
一般用UserID比较好,
如果有查询在其他表基础上引用UserName特别频繁的,
就在其他表上增加UserName字段做冗余,以提高查询性能
lg314 2010-08-08
  • 打赏
  • 举报
回复
最好用ID,Name也可不是不可以,曾经这么做过,但因为是当时结构设计的有问题
fa_ge 2010-08-08
  • 打赏
  • 举报
回复
同意11L
人鱼传说 2010-08-08
  • 打赏
  • 举报
回复
应该使用UserID。可以对UserName建一个索引,以便有较好的查询效率
Austindatabases 2010-08-08
  • 打赏
  • 举报
回复
应该使用userid

1 查询性能不会被影响或者成为以后优化的对象

2 不适合userid 和 Username联合做外键,不唯一性

3 是实例上看目前没有发现有这样做外键的生产库,从微软的系统库来看也全部是用id一系列类似字段来做外键
xyj052 2010-08-08
  • 打赏
  • 举报
回复
userid
  • 打赏
  • 举报
回复
这样的问题没有讨论的余地,肯定是id做主键、外键。
永生天地 2010-08-08
  • 打赏
  • 举报
回复
这个问题,一般来讲用哪个问题都不大。通常都是采用id

如果为了追求查询方便,就用name
ET_DIQIU 2010-08-08
  • 打赏
  • 举报
回复
建议用ID
王向飞 2010-08-07
  • 打赏
  • 举报
回复
绝对是ID
王向飞 2010-08-07
  • 打赏
  • 举报
回复
绝对是ID
华夏小卒 2010-08-07
  • 打赏
  • 举报
回复
name 容易有重复,不合理
zheninchangjiang 2010-08-07
  • 打赏
  • 举报
回复
让系统自由一点,还是用userid做外键比较好,另外user一般要和emplyee建立关系,userid比较合理一点吧
duanzhi1984 2010-08-07
  • 打赏
  • 举报
回复
userid ,通常用主键。

一个username通常有可能对应不同的useid.

SQLCenter 2010-08-07
  • 打赏
  • 举报
回复
不能修改那用username外键也无所谓
问题是你的users表会不会多处引用呢,多处引用数据就重复了嘛,而且维护起来不方便。

所以还是建议userid
hao1hao2hao3 2010-08-07
  • 打赏
  • 举报
回复
既然做外键,那肯定也做主键

啥意思?
在其他表中用Username或者UserID做外键其实都一样,User表没有其他信息(字段)吗?还是要连接起来查的。用两个字段好了UseriD和UserName,Userid做主键。

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧