为用户数据创建多个数据库表?

时间:2011-12-15 20:48:41

标签: database database-design

我需要在数据库中拥有大量用户数据。现在,我一直在考虑有两个表,用户只有 id 用户名密码和另一个表 userData ,其他所有内容如名称姓氏等。

这是首选方法吗?

4 个答案:

答案 0 :(得分:1)

最简单的设计会将所有字段放在一个表中。但是,从那时起,您可能需要考虑将这些信息拆分为多个表的一系列原因。根据您的描述,我无法确定是否有任何正当理由这样做。

如果您从一个表开始,您可能会发现分割数据是有利的,原因如下:

  • 正常化。
  • 减少争用(应用程序的不同部分更新不同的信息)
  • 真正庞大的列列表(查看数据库的限制)
  • 其他?? (你可能会如何维护你的应用程序?)

简而言之,我会尝试从简单开始,如果你走那条路,就有理由选择更复杂的设计。

答案 1 :(得分:0)

该设计恕我直言,没有任何问题。您可以拥有一个users表,并将其链接到包含其他信息的users_custom表。只需与您的设计保持一致。请记住,为了获得任何其他用户信息,您始终需要JOIN来获取该数据。

对我来说,这是一个偏好的问题,如果您觉得这个表会随着时间的推移而增长,请考虑您的设计,如果不是将其全部保存在一个表中并正确索引您认为必要的列。

您可以通过使用UserLog表来进一步构建价值观变化的历史视图。

答案 2 :(得分:0)

是的它是:)理论上有这种所谓的“正常形式”(3NF BCnF等......)。使用它们意味着将表分成较小的表:)

答案 3 :(得分:0)

我认为将它们保存在一个表中可能会更好。假设您将强制使用唯一的用户名,则所有字段(password,first_name和last_name)都具有对用户名的功能依赖性。因此,您可以将它们全部放在同一个表中,并且仍然具有规范化的数据库。

虽然您当然可以将first_name和last_name分隔到他们自己的表中,但如果将所有这些字段保存在一个表中,查询将变得更容易(更少的JOIN)。