我有2个基本上有父子关系的表。因此子表有一个引用父表主键的列。
简而言之,父表就像子表的聚合,其中父表的每一行包含子表和子表中一组行的数据的总和,该组中的每一行都引用父表中的“summed / total”行 现在我不确定如何正确建模。
我的意思是我在子表中插入行,让父键的列为NULL
(步骤1)。
然后,当需要添加/汇总行时,我在父表中插入一条新记录(步骤2),其中包含我碰巧收集的组的总数。
现在我遇到的问题(第3步)是如何使用刚刚插入的行创建的父ID更新子行?
此时我也不知道我总结的行的ID。
我应该选择行的ID,然后对这些行进行更新,以使用新的父ID替换NULL
吗?这应该在交易中吗?
我这样做错了吗?这些步骤是否应该由于约束而以某种方式自动发生?
答案 0 :(得分:0)
您的步骤应该是
1. Insert into parent table and get the parent id (Guessing auto increment) in a variable.
At this time, your sum field would be 0/null. (This calculation should have happened prior to insert ideally.)
2. Insert into child table along with the parent id.
3. Get the sum of all fields (Based on your requirement) based on the parentID
4. Update back the parent table with the patientID.
这是你在找?我是否会错过任何明显的事情?
答案 1 :(得分:0)
实际上这是一个很重要的设计,它取决于你在寻找答案的预期。
首先,设计应明确说明父母之间应保持完整性
和子表。
见下面的例子,
如果以下是任何特定时间的儿童桌。
ID值 1 3
1 1
1 3
2 3
2 5
2 1
3 2
3 6
3 4
父表应该看起来像
ID值 1 7
2 9
3 12
你应该清楚地提到,如果从Child删除/更新行或与Parent相同,会发生什么。
现在
从发展的角度来看,你需要触发器。
假设在子项中插入了新的Id,则必须在父表中同时插入记录。
同样,更新和删除需要传播到父级,父级的删除需要传播给子级。
如有任何其他疑问,请与我们联系。