Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL(SQL)中建模父-子对_Mysql_Orm_Parent Child - Fatal编程技术网

如何在MySQL(SQL)中建模父-子对

如何在MySQL(SQL)中建模父-子对,mysql,orm,parent-child,Mysql,Orm,Parent Child,我有一个数据模型,其中包括元素类型Stage、Actor和Form。从逻辑上讲,阶段可以被分配成对的(表单参与者),可以重复多次(即,同一个人和同一表单在以后的日期/时间添加到同一阶段) 现在,我正在使用以下表格对此进行建模: Stage Form Actor Form_Actor _______________ |Id | |FormId | --> Id in Form |ActorId | --> Id in Actor

我有一个数据模型,其中包括元素类型Stage、Actor和Form。从逻辑上讲,阶段可以被分配成对的(表单参与者),可以重复多次(即,同一个人和同一表单在以后的日期/时间添加到同一阶段)

现在,我正在使用以下表格对此进行建模:

Stage
Form
Actor

Form_Actor    
_______________
|Id           |
|FormId       | --> Id in Form
|ActorId      | --> Id in Actor


Stage_FormActor
__________________
|Id              |
|StageId         | --> Id in Stage
|FormActorId     | --> Id in Form_Actor
我正在使用CodeSmith为这个设置生成数据层,没有一个模板真正知道在生成类时如何正确处理这种类型的关系。理想情况下,ORM将具有Stage.FormActors,其中FormActor将是成对形式Actor

这是建立这些关系模型的正确方法吗。我也尝试在一个表中使用所有三个ID

Stage_Form_Actor
______________
|Id          |
|StageId     | --> Id in Stage
|FormId      | --> Id in Form
|ActorId     | --> Id in Actor

这也不能很好地生成。想法?

我对CodeSmith一无所知,但用于定义这三个实体之间固有的多对多关系的数据库模式是正确的(StageFormActor one是最好的)


需要注意的一点是,您可能希望为该关联表定义一个复合主键(而不是使用人工ID主键)

到目前为止,我一直将主键用作所有四列。我主要是想确定我在DB方面是如何建模的。键的不同之处在于模板用来决定要建模的关系类型,因此我想我可能需要使用更多的键才能从CodeSmith获得正确的输出。我应该使用所有四列,还是您会提出其他建议(因为表单参与者是成对处理的)每个参与者只执行一个表单?或者一个参与者可以执行多个表单吗?参与者可以在一个stagraphy中分配任意数量的表单任意次数使用mysql workbench将其可视化,这可能会使您更容易查看关系。