我有一个数据库,在对象级别下面是自构造的,或者至少它在需要时创建和更改兄弟表,并在表和对象表之间创建关系。
Structure:
<Projects>
- id _______ <collections>
.... | - id ______________ <objects> <some_object>
|_____> - project_id | - id___________________>
.... |___> - collection_id | <some_other_object>
.... |___>
|
....
有人能建议一种简洁的方法来创建链接到给定集合记录的每个条目的副本,而这些记录又会链接到新的集合记录吗?
每个表都有一个object_id列,它对objects.id有一个外键约束,表结构的其余部分可能不同。
采用以下示例:
|Collections|
------------------
| id | Title |
------------------
| 1 | Col1 |
| 2 | Col2 |
------------------
|Objects|
--------------------------------------------
| id | Collection_id | Object Type |
--------------------------------------------|
| 1 | 1 | Classification |
| 2 | 1 | Space |
| 3 | 2 | Classification |
--------------------------------------------|
自构造元素创建一个具有Object类型名称的表。这不会影响方法,但应该使示例的下一部分不那么混乱。
|Classification (or other self-constructing table)|
------------------------------------------------------------
| id | object_id | Some column | ,,, | ,,, |
--------------------------------------------|---------------
| 1 | 1 | val |
| 2 | 1 | val |
| 3 | 2 | val |
--------------------------------------------|
所以上面的记录说我们正在寻找从集合及其家属创建“Col1”的传真,我们会说新的集合.id = 3.
结果表结构如下:
|Collections|
------------------
| id | Title |
------------------
| 1 | Col1 |
| 2 | Col2 |
| 3 | Col1 |
------------------
|Objects|
--------------------------------------------
| id | Collection_id | Object Type |
--------------------------------------------|
| 1 | 1 | Classification |
| 2 | 1 | Space |
| 3 | 2 | Classification |
| 4 | 3 | Classification |
| 5 | 3 | Space |
--------------------------------------------|
|Classification (or other self-constructing table)|
------------------------------------------------------------
| id | object_id | Some column | ,,, | ,,, |
--------------------------------------------|---------------
| 1 | 1 | val |
| 2 | 1 | val |
| 3 | 2 | val |
| 4 | 4 | val |
| 5 | 4 | val |
| 6 | 5 | val |
--------------------------------------------|
有效克隆整个对象结构,并为给定节点(用作id的节点)创建子节点