我应该使用单独的mysql表

时间:2014-07-03 22:13:11

标签: php mysql sql

我有一个关于在mysql数据库中存储信息的问题。

如果我有用户信息,我是否应该有单独的表来存储每种类型的信息?或者我应该使用1张单桌?

假设我有用户电子邮件,用户名,密码,名字,姓氏,地址,性别等......

我应该有1个表来存储电子邮件,用户名和密码,还有另一个表用于名字,姓氏,地址和性别?也许与用户信息和帐户信息分开?你觉得怎么样?

从查询/性能的角度来看,我不确定是否会因分割而产生任何差异。此外,使用assoc的JOIN查询。 index应该能够通过用户ID或其他一些自动增量值链接两个表。不知道该怎么做!

谢谢!

2 个答案:

答案 0 :(得分:3)

除非您有非常充分的理由,否则请使用proper database normalization技术并为每个实体类型设置一个表。

您在这里谈论的是一个用户,所以除非用户和个人根本不同,否则您应该将其存储在一个表格中。

如果一个用户可以进行多次登录,希望情况并非如此,因为它往往会让人感到困惑,那么您可能希望将其与一对多分开。否则,请使用可能有效的最简单的东西

与往常一样,请遵循指南中的建议,例如PHP The Right Way支付特定关注密码安全的部分。

使用 像development framework这样的Laravel是一个更好的计划,因为它具有内置的安全模型,您可以使用。

答案 1 :(得分:1)

取决于您的应用程序/功能的功能。

但是,应该规范化您的数据模型。

看看Codd,http://en.wikipedia.org/wiki/Database_normalization

我们谈论了多少条记录?即使有几千,也不用担心。一旦你进入100K +然后加入(和索引)变得越来越重要。然后你想确保你的数据模型正常化。