我有一个关于在mysql数据库中存储信息的问题。
如果我有用户信息,我是否应该有单独的表来存储每种类型的信息?或者我应该使用1张单桌?
假设我有用户电子邮件,用户名,密码,名字,姓氏,地址,性别等......
我应该有1个表来存储电子邮件,用户名和密码,还有另一个表用于名字,姓氏,地址和性别?也许与用户信息和帐户信息分开?你觉得怎么样?
从查询/性能的角度来看,我不确定是否会因分割而产生任何差异。此外,使用assoc的JOIN查询。 index应该能够通过用户ID或其他一些自动增量值链接两个表。不知道该怎么做!
谢谢!
答案 0 :(得分:3)
除非您有非常充分的理由,否则请使用proper database normalization技术并为每个实体类型设置一个表。
您在这里谈论的是一个用户,所以除非用户和个人根本不同,否则您应该将其存储在一个表格中。
如果一个用户可以进行多次登录,希望情况并非如此,因为它往往会让人感到困惑,那么您可能希望将其与一对多分开。否则,请使用可能有效的最简单的东西。
与往常一样,请遵循指南中的建议,例如PHP The Right Way支付特定关注密码安全的部分。
使用 像development framework这样的Laravel是一个更好的计划,因为它具有内置的安全模型,您可以使用。
答案 1 :(得分:1)
取决于您的应用程序/功能的功能。
但是,应该规范化您的数据模型。
看看Codd,http://en.wikipedia.org/wiki/Database_normalization
我们谈论了多少条记录?即使有几千,也不用担心。一旦你进入100K +然后加入(和索引)变得越来越重要。然后你想确保你的数据模型正常化。