PHP更新MYSQL的多对多关系
|
我有一个多对多关系,用 MySQL中的关联表实现.我有一张儿童餐桌和一张父母餐桌.子项可以有多个父项,保存在parent_child_link关联表中,并带有其ID. 可以通过HTML表单更新子项,父项是HTML多选.现在我需要更新数据库中的记录,但我的解决方案效率不高.这是伪代码我做的: >更新child_id = x的子信息 这种解决方案效果很好,但是当父母没有改变时,例如只更改了孩子的名字,然后执行了2个不必要的查询.如何避免那些不必要的查询?有没有办法检查多选中的父母是否没有改变? 当然,我可以忽略所有这些麻烦,因为它已经有效,但我真的希望尽可能保持高效. 尝试在子表的定义中使用ON UPDATE CASCADE和ON DELETE CASCADE在数据库中而不是在应用程序层中解决它.MySQL网站略有修改的示例: CREATE TABLE parent (id INT NOT NULL,PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT,parent_id INT,INDEX par_ind (parent_id),FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB;
查看文档:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html 编辑:对于你的多对多关系,你可以使用类似的东西: CREATE TABLE parent_child_link (
parent_id INT NOT NULL,child_id INT NOT NULL,PRIMARY KEY(parent_id,child_id),FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE ON UPDATE CASCADE,FOREIGN KEY (child_id) REFERENCES child(id)
ON DELETE CASCADE ON UPDATE CASCADE
);
希望这可以帮助. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
