是否使用一对一的MySQL关系?

时间:2015-01-14 12:19:26

标签: php mysql one-to-one

我有用户表,我需要使用作者合作伙伴数据进行扩展。我应该在同一个表中添加其他列,还是使用一对一关系创建另外两个表( user_author user_partner )?

例如,表和列已经过简化。

用户

id
name
email
password
avatar
is_active

user_author

user_id => user.id (PK, UNQ)
description
amount_per_text
max_text
is_active

user_partner

user_id => user.id (PK, UNQ)
name
description
image_logo
is_active

用户不能同时是作者和合作伙伴。然后我可以为普通用户提供类似 User.php 的课程, UserPartner.php UserAuthor.php 扩展 User.php 上课。

是否有意义,或者我应该将这些列放在用户表中?

1 个答案:

答案 0 :(得分:1)

这两种方法都有效且经常使用。

由于数据一致性的原因,关系模式的规范化理论不允许将所有数据放在单个表中。这有利于多表方法。

在单表方法中,您最终会在表中的每个记录中包含大量空(空)字段。

但是,在使用多个表时,您可能必须执行一个或两个连接才能确定记录是合作伙伴还是作者。因此,从性能的角度来看,单表解决方案是可取的。

在这两种情况下,您都可以添加一个额外的字段,例如“recordType”,在用户中快速轻松地区分不同类型的记录。这将提供最佳的运行时性能。