处理MySQL中的一对多引用

时间:2014-06-03 15:10:14

标签: php mysql sql database database-normalization

我不知道如何给予这个标题,但我有以下数据库:

accidentDetain(id, location, weather_conditions desc (and few more columns));
weatherConditions(id, title)
acc_weat_cond(id, wc_id, ad_id)
wc_id = weatherConditions ID, ad_id = accidentDetain ID

现在的情况是用户可以存储多种天气条件,如(雨,湿,雪冰雾等)

我们假设用户从这6个选项中选择了3个,这些选项将存储在acc_weat_cond表格中,其中包含意外明细ID和天气状况ID。

保存后,用户决定更改并取消选中其中一个选项,然后按下保存按钮。问题是,有3条记录已经存储到 acc_weat_cond 表中,我将如何更改并将其转换为两条记录。

我是否必须从数据库中删除第一条记录,然后再次存储新检查的选项?或者是否有更简单的方法来处理上述情况。

最后一个选项是我违反了数据库规范化的角色,并直接存储在accidentDetails表中,并用逗号分隔值。

随时询问是否需要更多信息......

2 个答案:

答案 0 :(得分:0)

我会有一个<input type='hidden'name='checkedflds' value='1,2,3' />字段,其中包含在用户更新之前检查过的值。然后在回发之后,您可以将新列表与此进行比较,并且很容易看到他做了哪些添加以及删除了哪些元素......

答案 1 :(得分:0)

我会调用所有选项并与选中的内容进行比较,并删除您需要的内容。如果将其存储在表单上,​​则可能存在过期数据。