Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CakePHP或MySQL FKs处理级联?_Mysql_Performance_Cakephp_Cascade - Fatal编程技术网

使用CakePHP或MySQL FKs处理级联?

使用CakePHP或MySQL FKs处理级联?,mysql,performance,cakephp,cascade,Mysql,Performance,Cakephp,Cascade,从性能和一致性的角度来看,我是应该让cakephp处理cascade delete,还是应该在MySQL中用外键定义它们?数据库是为处理这些事情而创建的,这是他们工作的一个组成部分,因此他们知道如何最有效地完成这项工作,没有理由重新发明轮子——更不用说管理代码和测试了 此外,如果数据库设计得很好,无论发生什么情况,都可以保证其完整性。即使你在代码中的某个点上搞砸了,db也会抓住它并挽救这一天 因此,我看不出有任何理由离开数据库。您的应用程序是否使用MySQL外键来强制引用完整性?您的数据是否会从

从性能和一致性的角度来看,我是应该让cakephp处理cascade delete,还是应该在MySQL中用外键定义它们?

数据库是为处理这些事情而创建的,这是他们工作的一个组成部分,因此他们知道如何最有效地完成这项工作,没有理由重新发明轮子——更不用说管理代码和测试了

此外,如果数据库设计得很好,无论发生什么情况,都可以保证其完整性。即使你在代码中的某个点上搞砸了,db也会抓住它并挽救这一天


因此,我看不出有任何理由离开数据库。

您的应用程序是否使用MySQL外键来强制引用完整性?您的数据是否会从Cakephp以外的其他“应用程序”中删除(例如,命令行、MySQL工具、php)?嗯,我想使用FKs强制引用完整性,但我在某个地方读到,如果在FK上未设置操作,则无法删除其他位置的行引用。所以我最终打算让Cakephp来处理它;另一个问题是对多条记录的删除,因为CakePHP必须检索每一个要级联删除的单个ID,这可以走得很远,而MySQL可以更快。但我认为我的应用程序中不会有任何用户端的deleteAll(),所以我想应该可以。请告诉我您对我将在MySQL中实现的(除了MySQL,我不应该使用任何其他工具)的看法,因为您正在创建外键。您还可以在将来的任何时候从Cakephp外部删除一条记录,并具有级联功能。事实上,我考虑过这一点,我将使用Cakephp,因为有时我只想软删除相关记录(将字段删除设置为1),有时我需要删除与记录关联的文件。所以我不能使用MySQL级联。软删除仍然与db外键兼容。您只需添加额外字段并添加一个行为即可完成此操作。除非你承诺永远不删除任何内容,否则当你实际删除一个引用的字段时会出现的问题不会消失。是的,不幸的是,这不是我可以承诺的选项。谢谢你