【问题标题】:Databases: User Profiles数据库:用户配置文件
【发布时间】:2011-06-26 00:46:40
【问题描述】:

将所有用户信息包含在一个表中是不是一个坏主意?有一个users 表和一个user_profiles 表是个好主意吗?

哪种方法最好,为什么?

什么情况下你会使用一张/两张桌子?

【问题讨论】:

    标签: mysql sql database postgresql database-design


    【解决方案1】:

    如果这些表之间的关系是一对一的,我将拥有一张表。如果关系是一对多的(一个用户可以拥有多个个人资料),那么显然应该拆分这些关系。

    拆分表的另一个原因可能是权限管理 - DBA 更容易将权限限制到一个表并授予另一个表。我仍然会有一个权限受限的表和一个列受限的公共视图。

    我继承了一个系统,其中这两个表在没有充分理由的情况下被拆分。总是加入这些桌子是一件令人头疼的事情。最后,您最终会看到并问自己为什么首先要进行拆分。

    【讨论】:

      【解决方案2】:

      我通常有一个 person 表和一个 user 表。 users 表包含所有用户信息(用户名、密码(加密)等)。 person 表包含姓名等。

      【讨论】:

      • 好的,但是为什么呢? OP 正在询问哪种方法最好,以及何时使用它们。
      【解决方案3】:

      我同意夏天。我认为将所有信息放在同一个表中没有任何问题。

      将所有内容放在一个表中的好处是,您在运行数据库查询时不必进行连接等操作。这意味着您的应用程序会运行得更快。

      【讨论】:

      • 那你为什么要两个?这似乎是相当标准的做法......
      • 在我作为程序员的 3 年中,我了解到标准实践并不总是等于好的;)但是,如果您有大量的用户信息并且您担心它,它可能会对您有所帮助会变得笨拙。您担心哪些“用户”信息?我同意 Summer 的人/用户系统。
      • 我没有通读所有这些,但请查看#5:simple-talk.com/sql/database-administration/…(在数据库中,规范化过程作为分解和隔离数据的一种手段,需要每个表直到一行代表一件事。)所以它考虑是否可以将用户分解为单独的事物。我从来没有遇到过我打破它的情况。
      猜你喜欢
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      相关资源
      最近更新 更多