是否有用户数据库的标准实现?

cfr*_*ich 14 database-design

我需要为我的网站实现基本的个性化用户功能。这种类型的数据库有标准结构吗?就像将所有用户信息和数据放在一个表中并且每个用户都有自己的行一样是常见的做法,还是应该将这些信息拆分到不同的表中并链接在一起(也许是为了效率?)我不太关心安全性在这一点上,但我显然希望在不久之后进行密码加密。

我试图在谷歌上找到我想要的东西,但无济于事。如果问题需要进一步澄清或任何其他内容,请告诉我。

Jos*_*ond 18

我建议您使用典型的标准化标准。每行一名用户。

  • 用户 ID(递增 bigint)
  • 用户通用名称(在网站上显示)
  • 用户电子邮件地址
  • 密码盐(每个用户唯一,在创建帐户时插入)
  • 密码(用盐散列 - MD5 或 SHA1,您的偏好)
  • 帐户创建日期

其余的取决于您的业务规则。


Sql*_*hes 8

将不得不去寻找一种“视情况而定”的大旧时尚。

当然,您将需要这张桌子上的某种钥匙。您可以从 UserID 开始。这可能只是一个递增的 INT(或 bigint,如果您将拥有超过 210 万用户)。

我见过很多数据库也使用 GUID 作为主要的 UserID。但这打开了一个完全不同的蠕虫罐头,使用 GUID 进行 PK。

然后,您需要决定您希望数据库的标准化程度。您是否打算允许您的用户拥有多封电子邮件?多个电话号码?如果是这样,它们应该在不同的表中。

我将主用户表保留为:

  • 您可以使用的某种 ID 或 PK
  • 名字/姓氏或只是一个用户名
  • 某种用户状态(活动、禁用等)-(tinyint 链接到状态表)
  • 创建日期

那应该是你的起点。

从那里您可以根据要存储的内容添加其他列。电子邮件可以链接到电子邮件表、地址到地址表等。密码可以使用 hash+salt 但你考虑过 openids 吗?

我强烈建议您阅读这篇文章 - http://www.sqlservercentral.com/articles/data-modeling/71725/