用户表中以用户登录名作为主键的好处(2009-02-25 13:29)

以前一直认为在一个表中应该使用代理主键而不应该使用业务主键。这个理论大多时候是正确的。但对于用户表我觉得应该使用登录名作为主键。其原因如下:

1. 方便实现日志功能。对用户信息的使用可能出现在软件的不同部分,在不同部分间通常都是传递用户表的主键来标识用户的,如果主键是代理主键则是一个无意义的数字,直接记录到日志中,必然给日志的使用代来不便,想要得到用户的登录名又必须得查询数据库。

2.用户标识在整个系统中的表达存在不一致。由于用户表使用代理主键,这样程序内部需要标识用户时通常会使用代理主键,可是系统的使用者却是以用户的登录名为自身的标识的,相关的功能自然也会以用户的登录名为标识,这样的功能在实现上是以用户的登录名为标识的,要么单独实现这样的功能,要么就不得不将用户的登录名转化为代理主键,然后去调用以代理主键为用户标识的功能。

出于以上两种原因,用户表是应该以用户的登录名为主键的。而用户的登录名的确是可以作为主键的。

注意:这里说的是用户的登录名,并不是实际姓名,它应该是不可修改的,并且是唯一的。

其它的说法:

I would suggest using the username as the primary key in the table if the username is going to be unique, there are a few good reasons to do this:

The primary key will be a clustered index and thus search for a users details via their username will be very quick.
It will stop duplicate usernames from appearing
You don't have to worry about using two different peices of information (username or guid)
It will make writing code much easier because of not having to lookup two bits of information.
出外:[url]http://stackoverflow.com/questions/4911/asp-net-authentication-user-name-vs-user-id[/url]
[b]
注(2011-01-16):
最近的项目要求把多个web客户端集成到一个Portal里,在Portal中统一进行用户管理,要求用户登录名可改。而我们需要嵌入的那部份的用户登录名是不可改的,必须进行调整。这样看以用户名做主键会遇问题.[/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值