将用户资料表和登录详情表分开有意义吗?

3

目前,我正在开发一个库存系统。我刚刚开始,现在正在收集用户需求。这是我第一次从零开始创建系统,所以我仍然有关于简单事情的问题。

我的问题是,将用户档案表分离到登录详细信息中是否有意义。例如:

用户档案(表):

o firstName
o middleName
o lastName
o dateLastModified
o userLastModified
o userLoginId

用户登录详情(表格)

o loginId
o userName
o password
o userLastModified
o dateLastModified
o lastLogIn

或者最好的做法是每个表都有1个?我见过一些将这两个表合并成一个系统。我感到困惑,因为如果我记得正确的话,在制作表格时,应该将很少更改值的字段与经常更改值的字段分开,对吧?
所以我的问题是:1、制作数据库登录表的最佳实践是什么?像上面展示的那样使用2个表是否正确?还是应该把所有字段放在一个表中?
1个回答

4

我见过很多系统将用户信息和用户登录详情作为单独的表使用,这对于管理员设置用户后,用户可以自行设置密码非常有用。

CREATE TABLE users (
   userID           integer NOT NULL,
   userFirstname    character(25) NOT NULL,
   userMiddlename   character(25),
   userLastname     character(25) NOT NULL,
   userModified     timestamp(4) without time zone,
   CONSTRAINT userID_key UNIQUE (userID)
);

CREATE TABLE credentials (
   userID          integer NOT NULL,
   credLogin       character(25) NOT NULL,
   credPassword    character(25) NOT NULL,
   credModified    timestamp(4) without time zone,
   credLastLogin   timestamp(4) without time zone
);

这意味着密码字段可以为Not Null,而用户配置文件可以存在且无需在凭据表中进行输入。如果用户始终会创建带有密码,则只使用一个表更加合理。仅在必要时才应使用多个表,例如用于一对多的关系。

嗨@Trent,意思是设计仍然取决于用户的需求吗?您知道创建用户配置文件表和登录详细信息时的最佳实践是什么吗? - user3714598
数据库最佳实践适用于所有表格,无论它是什么类型的表格。如果有两个表格的字段彼此依赖(例如用户名和密码),那么它们应该在一个单独的表格中,除非可能存在一个单一的用户名对应多个密码的情况。否则,一个单一的表格会更好。如果可以在一个单一的表格中完成工作,那么就应该使用一个单一的表格。 - TheLovelySausage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接