将我的规范化表格关联起来

时间:2012-06-28 16:44:36

标签: php mysql database normalization

我有一系列表格,我已针对用户个人资料部分进行了规范化。表格如下;

用户 - > userProfileSettings - > userPersonalInfo - > userContactInfo - > userAddresses - > userBusinessInfo - > userBusinessTags - > userBusinessLogo

users表包含用户名和密码,其中的配置文件设置包含有关帐户是处于活动/非活动状态以及成为其成员的日期的信息。我在脑海中的方式是 - 用户每个表中只能有一个条目 - 并且每个表中必须有一个条目(除了userBusinessLogo)才能成为成员,唯一允许多行的表被识别给用户的将是userBusiness标签。

实现这一目标的最佳方法是什么,因为一对多关系会允许同一用户的多行?我一直在寻找类似的设置,但我似乎找不到任何例子。

1 个答案:

答案 0 :(得分:1)

您可能已过度规范化架构。通常,如果表之间存在严格的一对一关系,则应认真考虑将它们合并到单个表中。如果用户真的只能拥有一组个人信息,一组联系信息,一个地址和一组业务信息,那么将它们全部放在一个表中,这样您就不必担心无意中违反这些约束在你的数据库中。

经验告诉我,联系信息和地址通常最终与人/用户记录的多对一关系,因此您可能会重新考虑他们(或其他表)是否真正一对一用于此目的你的应用程序。