我应该将帐户与数据库中的个人信息分开吗?

时间:2011-06-29 14:24:30

标签: database-design

考虑我的下一个网络应用程序的数据库设计,并考虑为用户帐户信息(如用户名,密码等)和个人信息(如姓名,地址等)设置单独的表格,这将是一个好主意,或者它真的无关紧要方式是什么?

5 个答案:

答案 0 :(得分:1)

如果要实现数据库加密,可能是个好主意。例如,如果要对用户信息表中的密码列进行加密,但数据库仅支持整表加密,则可以将要加密的数据拆分为单独的表,以最大限度地减少开销。 (我不是主张数据库加密本身,你也应该根据你的需要来看看应用程序管理的加密。)

答案 1 :(得分:1)

除非应用程序的体系结构引起这样的要求,否则无关紧要。通常在今天应用于大多数Web应用程序的MVC中,表的结构应该反映模型的设置方式。话虽这么说,您的数据组织方式应反映模型(对象)之间的关系。如果每个用户只有一个用户名,密码等,则抽象用户的所有信息应保留在一个表中。除非你遇到像@pelazem描述的那样的位置,否则我也不是完全数据库加密的忠实粉丝。

答案 2 :(得分:0)

我建议将数据保存在一个表中。

  • 您可能经常需要加入具有1-1关系的两个表,支持性能问题
  • 我没有看到任何安全原因,为什么拆分表比将所有数据保存在一个表中要好。

答案 3 :(得分:0)

我能想到这样做的唯一理由是,如果您要让多个用户共享相同的地址。

但是,我认为使用单个表的性能和简单性优势避免了避免数据重复的好处。两个用户可能很少有相同的地址。

答案 4 :(得分:0)

考虑一个场景,在一个组织内,一个人有多个角色或职位,这可能是暂时的或永久的,但每个角色或职位在逻辑上都有不同的user

这种情况需要userperson有不同的表,所以不同的用户指向一个人。

除了跟踪用户和历史记录,我是否建议为 title 表设置一个 [role, positionuser] 字段,那么每个日志记录必须包含user.idperson.id 都会读取 person.fullName did something as user.title...