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

Database design 我应该将数据库中的帐户和个人信息分开吗?,database-design,Database Design,考虑下一个web应用程序的数据库设计,并考虑为用户帐户信息(如用户名、密码等)和个人信息(如姓名、地址等)创建单独的表。这是一个好主意还是真的无关紧要?我建议将数据保存在一个表中 您可能经常需要连接具有1-1关系的两个表,这有利于性能问题 我看不出为什么拆分表比将所有数据保存在一个表中更好 如果要实现数据库加密,这可能是个好主意。例如,如果要加密用户信息表中的密码列,但数据库仅支持整个表加密,则可以将要加密的数据拆分为单独的表,以最大限度地减少开销。(我并不提倡数据库加密本身,您还应该根据需要

考虑下一个web应用程序的数据库设计,并考虑为用户帐户信息(如用户名、密码等)和个人信息(如姓名、地址等)创建单独的表。这是一个好主意还是真的无关紧要?

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

  • 您可能经常需要连接具有1-1关系的两个表,这有利于性能问题
  • 我看不出为什么拆分表比将所有数据保存在一个表中更好

    • 如果要实现数据库加密,这可能是个好主意。例如,如果要加密用户信息表中的密码列,但数据库仅支持整个表加密,则可以将要加密的数据拆分为单独的表,以最大限度地减少开销。(我并不提倡数据库加密本身,您还应该根据需要考虑应用程序管理的加密。)

      我能想到的唯一好理由是,如果您将有多个用户共享同一地址


      但是,我认为避免数据重复的好处大于使用单个表的性能和简单性好处。两个用户拥有相同地址的情况可能很少见。

      除非应用程序的体系结构引起这样的要求,否则这真的没什么关系。通常情况下,MVC应用于当今大多数web应用程序中,表的结构应该反映模型的设置方式。也就是说,数据的组织方式应该反映模型(对象)之间的关系。如果每个用户只有一个用户名、密码等,则抽象用户的所有信息应放在一个表中。除非你遇到@pelazem所描述的情况,但我也不是一个完全数据库加密的狂热者

      考虑一个场景,在一个组织中,一个人有多个角色或职位,这可能是临时的或永久的,但从逻辑角度来看,每个角色或职位都有不同的
      用户

      这种情况需要为
      user
      person
      创建不同的表,因此不同的用户指向一个人


      除了跟踪用户和历史记录外,我是否可以建议为
      用户
      表设置[
      标题
      角色
      位置
      ]字段,然后每个日志记录必须同时包含
      用户id
      个人id
      ,它将读取
      person.fullName
      作为
      user.title

      Hmmm。。。很好,如果一个用户有多个地址怎么办?家庭、工作,或者度假屋、学校等。每个用户有多个地址是添加一个表来存储每个用户多个地址的好理由。但多个用户共享一个地址并不需要多个表。多个用户共享一个姓氏也是如此。