我有用户表,我需要使用作者和合作伙伴数据进行扩展。我应该在同一个表中添加其他列,还是使用一对一关系创建另外两个表( 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 上课。
是否有意义,或者我应该将这些列放在用户表中?
答案 0 :(得分:1)
这两种方法都有效且经常使用。
由于数据一致性的原因,关系模式的规范化理论不允许将所有数据放在单个表中。这有利于多表方法。
在单表方法中,您最终会在表中的每个记录中包含大量空(空)字段。
但是,在使用多个表时,您可能必须执行一个或两个连接才能确定记录是合作伙伴还是作者。因此,从性能的角度来看,单表解决方案是可取的。
在这两种情况下,您都可以添加一个额外的字段,例如“recordType”,在用户中快速轻松地区分不同类型的记录。这将提供最佳的运行时性能。