MySQL表更好地将数据放在一个表或两个具有外键的表中

时间:2013-08-03 16:26:33

标签: mysql cakephp-1.3

您好我正在开发cakephp中的一个小应用程序。我正在使用Auth组件进行用户登录。

每个用户都有个人资料。 每个用户都将处于“管理员”或“初学者”或“专业”的任何角色

我有users table和user_roles表。

对于个人资料,我应该创建另一个表“个人资料”,还是我可以在用户表中创建字段?哪个查询更快?两张桌子或一张桌子

我是否真的需要user_roles表,或者我可以在添加用户表单代码中分配角色?硬编码或在用户表中带有foregin密钥的数据库中?

任何建议都表示赞赏。

谢谢。

2 个答案:

答案 0 :(得分:2)

对于配置文件,如果同一用户可以创建不同的配置文件,则应创建一个不同的表,否则只需将它们放在一个表中。它看起来更有条理,将它放在不同的表中,但它没有必要。

对于user_roles,如果用户可以拥有多个角色,请将它们放在不同的表中,否则您可以将它放在同一个表中。

单个表比多个表略快。

答案 1 :(得分:1)

如果您希望用户拥有多个角色/配置文件,您应该有第二个表来识别它们。

如果您确定每个用户只能给一个角色,那么您可以拥有第二个表,但您可能希望在用户表的另一列中执行此操作。