社区
C#
帖子详情
经验帝入。外键该用"用户ID"还是"用户名"?
fihuang
2010-08-01 04:11:46
我看过的科班的sql教材都是用"用户ID"做外键,但是在实际应用中需要用到是用户名,用"用户名"做外键有什么不妥吗?
诚心请教有经验的前辈,你们在实际项目中,碰到这样的情况是怎么处理的?是用UserID还是UserName或者两个一起用?
...全文
3494
58
打赏
收藏
经验帝入。外键该用"用户ID"还是"用户名"?
我看过的科班的sql教材都是用"用户ID"做外键,但是在实际应用中需要用到是用户名,用"用户名"做外键有什么不妥吗? 诚心请教有经验的前辈,你们在实际项目中,碰到这样的情况是怎么处理的?是用UserID还是UserName或者两个一起用?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
58 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jointan
2010-08-03
打赏
举报
回复
1
如果UserName不能修改的话,还是UserName做外键吧,如果你的UserID不起任何可能影响日后排序功能的话,建议,删除该字段,没什么用.
xinv19shi
2010-08-03
打赏
举报
回复
UserID
fihuang
2010-08-03
打赏
举报
回复
1
再说明一下,UserID和UserName都是唯一的,UserName一旦注册以后将不能修改。
大家再看看用哪一种方式比较好:
1.一个字段:UserID做外键,通过表连接或者查询两次。
2.一个字段:UserName做外键。
3.两个字段:UserID做外键,增加UserName字段。
4.两个字段:UserID和UserName都做外键。
我觉得应该选择方案3. 大家怎么看?
daone
2010-08-03
打赏
举报
回复
[Quote=引用 7 楼 fdh120 的回复:]
引用 4 楼 fihuang 的回复:
用户ID是唯一,用户名也是唯一的。为何楼上的都说用UserID
如果用UserID,每次都要通过UserID去获取UserName,这样很耗资源;如果UserID和UserName一起用的话,就不符合数据库表设计的基本原则。
用户ID和用户名都唯一,那你用户表里只保存其中一个字段不就完了,为什么还设两个字段?不感觉有点多余吗??
[/Quote]
用户名可能出现变动,但用户ID是不变的
mac_uestc
2010-08-02
打赏
举报
回复
1
[Quote=引用 7 楼 fdh120 的回复:]
引用 4 楼 fihuang 的回复:
用户ID是唯一,用户名也是唯一的。为何楼上的都说用UserID
如果用UserID,每次都要通过UserID去获取UserName,这样很耗资源;如果UserID和UserName一起用的话,就不符合数据库表设计的基本原则。
用户ID和用户名都唯一,那你用户表里只保存其中一个字段不就完了,为什么还设两个字段?不感觉有点多余吗??
[/Quote]
就像你有身份证了为什么不把名字丢掉....砖一个
hwbox
2010-08-02
打赏
举报
回复
1
一般都是用ID,用户名有时候会有改动。比如老板叫李明,他的用户名叫liming用了两个月,老板把你叫来了“老让我输这么长,给我改成lm!”
sxldfang
2010-08-02
打赏
举报
回复
1
id与用户名相比:
------------------
id操作快
id长度较用户名少
传id参数较方便
libinlink
2010-08-02
打赏
举报
回复
1
千万不要用用户名做外键。
重名的话,难道你要人家改名?
PalmerWang
2010-08-02
打赏
举报
回复
那就直接UserName做外键啊,有没有什么冲突,只要是唯一的就行
fihuang
2010-08-02
打赏
举报
回复
大家都说了这么多,我很矛盾,下面的3种选择真的不知道该怎么选。
3选1:
1.UserID做外键,通过表连接或者查询两次。
2.UserID做外键,但是增加一个UserName字段。
3.UserName直接做外键,删除UserID字段。
fihuang
2010-08-02
打赏
举报
回复
再说明一下,UserID和UserName都是唯一的,UserName一旦注册以后将不能修改。
大家再看看用哪一种方式比较好:
1.UserID做外键,通过表连接或者查询两次。
2.UserID做外键,但是增加一个UserName字段。
3.UserName直接做外键,删除UserID字段。
soaringbird
2010-08-02
打赏
举报
回复
用户名有时候需要复用,在历史上可能不唯一
Thr21ough
2010-08-02
打赏
举报
回复
毫无疑问应该用ID
leiziaitudou
2010-08-02
打赏
举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
为关联字段创建外键
所有的键都必须唯一
避免使用复合键
外键总是关联唯一的键字段
[/Quote]
用户id应该是标识列 所以不会重复
边城的刀声
2010-08-02
打赏
举报
回复
[Quote=引用 4 楼 fihuang 的回复:]
用户ID是唯一,用户名也是唯一的。为何楼上的都说用UserID
如果用UserID,每次都要通过UserID去获取UserName,这样很耗资源;如果UserID和UserName一起用的话,就不符合数据库表设计的基本原则。
[/Quote]
在数据量少的时候,可以遵循规范。
但在现在的Web下,大数据量的情况下,冗余也是好的,要不然就象你说的会很耗资源
mill_dhl
2010-08-02
打赏
举报
回复
用户名一般可以是字符串的,做主键进行判断的时候比较麻烦,所以一般用ID做主键
wanghui0380
2010-08-02
打赏
举报
回复
1
这种情况我们一般叫“逻辑id”和“物理id”
userid------作为数据的物理id标识
用户名---------是数据的逻辑id
一般来说中小型项目通常使用物理id做为标识
而大型项目往往使用逻辑id做标识
区别,大型项目因为数据量大,结构复杂,网络硬件配置复杂,网络结构复杂,存储介质复杂。他们通常采用分布式的数据存储介质和分布式的网络环境,而在分库,分表的情况下,数据库的物理id就不可预览了,所以更多情况下使用逻辑id作为标识
比如:银行系统通常使用不与数据库id关联的,账户号做标识。而电信系统则因为硬件环境的限定使用电话号码做标识(电信系统通常的前置机只认主叫号,被叫号这种逻辑标识,而不认你自己的数据库id)
porschev
2010-08-02
打赏
举报
回复
用主键ID。。。。。。。
hyblusea
2010-08-02
打赏
举报
回复
新建一个与业务逻辑无关的主键字段,作为外键
isaced
2010-08-02
打赏
举报
回复
id!!!!!!!!!!
加载更多回复(35)
phpwind9.x如何从数据库更改
用户
名
或者
用户
ID
?共
phpwind9.x如何从数据库更改
用户
名
或者
用户
ID
?共2页.pdf.zip
电子相册系统mysql数据库设计
这个系统是一个基于MySQL数据库的系统,包含了
用户
管理、相册管理、图片管理、标签管理和图片与标签的关联关系管理等功能。
用户
表(users)用于存储
用户
信息,包括
用户
ID
、
用户
名
、密码、创建时间和更新时间等字段。 相册表(albums)用于存储相册信息,包括相册
ID
、相册名称、所属
用户
ID
、创建时间和更新时间等字段。其中,所属
用户
ID
是与users表的
外键
关联。 图片表(images)用于存储图片信息,包括图片
ID
、所属相册
ID
、图片路径、图片名称、所属
用户
ID
、创建时间和更新时间等字段。其中,所属相册
ID
是与albums表的
外键
关联,所属
用户
ID
是与users表的
外键
关联。 标签表(tags)用于存储标签信息,包括标签
ID
、所属相册
ID
、标签名称、创建时间和更新时间等字段。其中,所属相册
ID
是与albums表的
外键
关联。 图片与标签的关联表(image_tag)用于存储图片与标签的关联关系,包括图片
ID
和标签
ID
等字段。其中,图片
ID
是与images表的
外键
关联,标签
ID
是与tags表的
外键
关联。 通过这些表的设计,可以实现对
用户
、相册、图片和标签的增删改查等操作,并且
表情包开放平台系统mysql数据库设计.zip
表情包开放平台系统mysql数据库设计
数据库课程设计-基于的宝宝成长记录分享系统的建表语句.sql
数据库课程设计-基于的宝宝成长记录分享系统的建表语句.sql
一个电子商务平台的数据库设计.pdf
一、引言 随着互联网的快速发展,电子商务已成为人们日常生活中不可或缺的一部分。一个成功的电子商务平台需要一个稳定、高效、可扩展的数据库系统来支持其运营。本课程设计旨在构建一个适用于电子商务平台的数据库系统,以满足
用户
注册、商品浏览、购物车管理、订单处理等功能需求。 二、需求分析
用户
管理:系统需要支持
用户
注册、登录、个人信息修改、密码找回等功能。 商品管理:系统需要支持商品的添加、修改、删除、查询等功能,同时需要记录商品的详细信息,如名称、价格、库存、描述等。 购物车管理:
用户
可以将心仪的商品加入购物车,查看购物车中的商品,修改购物车中的商品数量,以及清空购物车。 订单管理:
用户
可以提交订单,查看订单状态,取消订单等。系统需要记录订单的详细信息,如订单号、
用户
ID
、商品
ID
、数量、总价、支付状态等。一、引言 随着互联网的快速发展,电子商务已成为人们日常生活中不可或缺的一部分。一个成功的电子商务平台需要一个稳定、高效、可扩展的数据库系统来支持其运营。本课程设计旨在构建一个适用于电子商务平台的数据库系统,以满足
用户
注册、商品浏览、购物车管理、订单处理等功能需求。 二、需求分析
C#
111,093
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章