用户表 - 一个或两个表?

时间:2010-10-26 06:20:41

标签: mysql database-design relational-database

我希望在数据库中存储用户详细信息..包括姓名,姓氏,用户名,密码,电子邮件,手机号码,激活码,性别,生日,职业等等。将所有这些存储在同一个表上还是应该在两个用户和配置文件之间进行拆分?

6 个答案:

答案 0 :(得分:3)

如果这些是用户的属性(并且它们是1-1),则它们属于用户表。

如果列数很多,您通常只会拆分;然后你可能在1-1映射中创建另一个表。

如果每个用户有很多配置文件行,那么显然需要另一个表。

答案 1 :(得分:2)

一张桌子应该没问题。我将在password列中存储哈希值。

答案 2 :(得分:2)

我建议您阅读有关数据库规范化的this article on Wikipedia.。 它描述了每种可能性和各种利弊。这实际上取决于您想要存储的其他内容以及用户与其属性之间的关系。

答案 3 :(得分:2)

一张桌子应该足够好。

当您想要向外扩展时,会出现两个或更多表格,通常是垂直分割。因此,您将表分成多个表,其中通常使用partiotioning标准,即,一起使用的最常见属性存储在一个表中,而其他属性存放在另一个表中。

答案 4 :(得分:1)

理想情况下,应使用一个表。如果列数变得难以管理,那么您应该将它们移动到另一个表。在这种情况下,理想情况下,这两个表应该具有一对一的关系,您可以通过将相关表中的外键设置为主键来轻松建立这种关系:

User
-------------------------------
UserID INT NOT NULL PRIMARY KEY


UserProfile
-------------------------------------------------------
UserID INT NOT NULL PRIMARY KEY REFERENCES User(UserID)

答案 5 :(得分:1)

取决于它是什么类型的应用程序,它可能会有所不同。

对于我的用户也是员工的企业应用程序,我建议使用两个表。

  1. tbl_UserPersonallInformation (包含个人信息 如姓名,地址,电子邮件,......)
  2. tbl_UserSystemInformation(包含 其他信息,如(标题, JoinedTheCompanyOn, LeftTheCompanyOn)
  3. 在诸如“文档管理”,“项目信息管理”等系统中,......这可能是必要的。 例如,在公司中,员工可能会在几年后离开并重新加入,甚至他们将拥有不同的职位。该员工有一些活动和记录与他的旧标题,他将有更多的新的。因此,它应该记录在系统中,他已经使用了哪些标题(权限)。