当我看到许多登录系统的数据库都有一个用于排列一系列约束ID的字段时,这让我想到了我的登录系统数据库设计的问题,是否有必要。
问题是,假设有一个注册系统,当用户注册帐户时,帐户名
已经是唯一的,因为系统会警告您不可用的帐户名
code>,因为它们在数据库中重复。那么我们是否需要为每个成功的注册提供一个受限的 ID 安排呢?虽然允许重复的账户名
,但是我们不能只使用用户的身份证号码
作为唯一字段吗?
或者假设没有注册系统,管理员分配帐户,我们仍然可以使用他们的身份证号码
作为唯一字段。
不会有搜索效率或组织良好的数据结构。我们不通过排列来记录身份,而是通过唯一字段来记录。如果已经有另一个 Unique 字段,也会出现冗余。
到目前为止,我的登录系统需要成员(member)ID
和密码
才能登录,成员(member)ID
是系统分配的约束ID排列,这使得我想我应该让用户创建他们的整个帐户名
或身份证号码
并删除MemberID
。
我是否误解了它们的用法?或者有什么原因吗?良好的数据设计需要如此受限的唯一 ID 吗?
最佳答案
通常,我们提供帐户或用户名是为了方便用户。对他们来说,记住帐户“JohnSmith”比记住一组看似随机的数字要容易得多。一般来说,我们向用户隐藏诸如代理键值之类的详细信息——他们无论如何都不需要知道。让我们面对现实吧,我们的工作是让用户的生活更轻松。如果这让我们的工作变得更加困难(通常如此),那就这样吧。我们来这里是为了他们的利益,而不是相反。
因此,为了方便用户,请务必提供受约束的文本标识符。
关于mysql - 良好的登录系统数据库设计的唯一约束 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744489/