学说2:两个表之间的多重关系

时间:2013-09-18 10:17:04

标签: symfony database-design doctrine-orm foreign-keys entity-relationship

我对数据库关系的问题比Doctrine本身更多。 我有一个表“项目”和一个表“project_data”。我的表“project_data”始终链接到项目条目。 但是,在我的表“project”中,我可以有两个对project_data条目的引用:project_data_id和project_data_waiting_id。但是,这些引用可以为null,与project_data表中设置的“project_id”无关。

问题:

  • 如何定义所有这些关系?我希望能够拥有没有任何project_data引用的项目条目。

  • 如何使用Doctrine处理它?我对Doctrine和数据库设计都很陌生,而且我在桌子之间必须做的所有连接之间有点迷失。

我加入了一个图表,以便更好地了解我想要做的事情。

谢谢。

EER Diagram

1 个答案:

答案 0 :(得分:1)

在这种情况下,我会给你两个选项(假设project_data总是只有一个project):

<强>首先

project
- id
- project_data_id
- project_data_waiting_id

project_data
- id
- name

在这种情况下,您可以在项目类上定义两个一对一的关系。请查看http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#one-to-one-bidirectional以获取有关如何处理此问题的更多信息。

第二:选项:

也可以创建多对多关系并为project_data提供状态。它看起来像这样:

project
- id

project_data
- id
- name
- project_id
- status_id

project_data_status
- id
- name

在这种情况下,projectproject_data具有多对一关系,而project_dataproject_data_status具有一对多的关系。此解决方案为您提供更多灵活性您可以根据需要向project_data添加任意数量的project个对象。

如何在doctrine2中定义关系可以在我在本文中提供的同一页面上找到。

希望这会指出你正确的方向。