设计具有关系ManyToOne的实体

时间:2015-01-18 17:27:09

标签: php symfony doctrine-orm

我有两个实体用户代理商,每个用户都可以创建自己的代理商。一个代理商可以拥有许多固定电话,许多移动电话,许多传真,许多电子邮件......

正确的设计方法是为每个人制作一个实体吗?

例如实体固定电话,实体移动电话,实体传真,实体电子邮件 ...然后制作一个ManyToOne与实体或代理商的关系还是有另一种好方法吗?

1 个答案:

答案 0 :(得分:0)

您可能最好创建2个实体User和ContactInfo。用户与ContactInfo有一对多的关系,ContactInfo与User有多对一的关系。联系信息将包含字段typeId和info其中typeId已映射常量,而info只是值。

例如,您的contactInfo表可能如下所示:

1 = landline
2 = mobile
3 = fax
4 = email

typeId | userId  |  info
*****************************
1      |   1     |  (111) 111-1111
4      |   1     |  bobdole@bobdole.com
2      |   2     |  (222) 222-2222

这样,如果您需要添加新形式的联系信息,您只需添加对新typeId的支持,您就可以开始了。为每种形式的联系添加一个完整的新实体是一种非常难以管理数据的方式。