我正在为内联网开发一个社交网络,我遇到了一个问题[?]。我将实体 用户 和 商家 作为网络的主要实体。
注意:商家不一定与用户建立关系。
遵循这个想法,我有一个组表,用户或可以创建组业务,有一个问题,如何在此表中创建作者字段?
我做了以下操作,创建了一个表 type ,其中包含以下数据:
id | name
1 user
2 business
我的表分组就像这样:
id
name
description
tid (FK -> type.id)
author (INT)
因此,如果组的tid等于1,则表示作者指的是用户,如果它的tid等于2,则表示到业务。
您对此实施有何看法?它是正确的? 我该怎么做才能改善它?
我正在使用PHP 5.3.6(Zend Framework和Doctrine2)+ MySQL 5.1。
答案 0 :(得分:2)
按要求:
这个术语是“多态的”。 Bill Karwin有一个很好的答案,我目前无法找到它。从数据库设计的角度来看,我被告知逻辑模型术语是一个“弧”关系。无论哪种方式,除了支持多位作者之外,我认为您发布的内容没有任何问题。
答案 1 :(得分:1)
关于这一点的坏处是,如果你这样做,就不能使用外键约束来检查和验证你的数据。
我建议改用2个表。一个用于存储用户和组之间的关系,另一个用于存储业务和组之间的关系。
这将允许您在删除组或业务或用户时使用所有fk好处,例如已删除的级联。