Php 具有多个关系的设计实体

Php 具有多个关系的设计实体,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有两个实体用户和代理,每个用户都可以创建自己的代理。一个机构可以有许多固定电话,许多移动电话,许多传真,许多电子邮件 正确的设计方法是为每个实体创建一个实体 例如,实体固定电话、实体手机、实体传真、实体电子邮件。。。然后与实体或机构建立多人关系或者有其他好方法?您最好创建两个实体用户和联系人信息。用户与ContactInfo有一对多关系,ContactInfo与用户有多对一关系。联系人信息将有typeId和info字段,其中typeId映射了常量,而info是任何值 例如,您的contactI

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

正确的设计方法是为每个实体创建一个实体


例如,实体固定电话、实体手机、实体传真、实体电子邮件。。。然后与实体或机构建立多人关系或者有其他好方法?

您最好创建两个实体用户和联系人信息。用户与ContactInfo有一对多关系,ContactInfo与用户有多对一关系。联系人信息将有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的支持,就可以了。为每种形式的联系人添加一个完整的新实体是一种非常困难的数据管理方式。

用户与代理的关系应该是
hasageneration
,其余的必备条件应该是
hasMany
我只需要为联系人信息创建两个实体:一个用于电话号码(两个字段:电话号码+类型:固定电话/手机/传真),一个用于电子邮件。这样,您就可以在机构和这些联系实体之间建立多对一关系。