【发布时间】:2011-07-04 02:33:17
【问题描述】:
我在 MySQL 中构建了一个大型数据库,并使用 SQLYog 创建了表之间的所有关系。这一切都很好,但是在我正在构建的 PHP 站点中,当从数据库中删除行时,我经常遇到麻烦,我经常遇到参照完整性约束。因此,我首先尝试从链接表中删除数据或将字段设置为 NULL。我通常可以通过一些试验和错误来让它工作,但似乎没有我应该这样做的方法或适当的过程。我应该使用'on delete set NULL or cascade delete settings'吗?我不知道该使用哪个,并担心它可能会删除其他表中的重要数据。
人们甚至会费心在他们的数据库中设置关系约束吗?我的意思是执行删除似乎要容易得多,然后编写一些额外的行来更新在 PHP 代码中链接到它的其他表。
任何帮助将不胜感激。
【问题讨论】:
-
我倾向于在我的数据库中添加尽可能多的约束:损坏的代码是暂时的,损坏的数据是永远的。是的,管理约束可能很困难,但由于缺乏约束而清理损坏的数据库甚至是不可能的。
-
确实,人们只需要完成一次涉及令人发指和损坏的数据库设计的死亡行军,就能体会到完整性检查的重要性。数据库不应信任中间层,而中间层不应信任表示层。
标签: mysql database-design constraints foreign-key-relationship referential-integrity