微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 我应该在哪里管理数据库的一致性?

我想了解在代码中管理数据库一致性的优点/缺点,而不是使用sql功能.

只是为了解释:
一致性意味着如果我有用户,并且每个用户都有专辑并且每个专辑都有图像,则删除用户意味着删除(或软删除)所有专辑和图像.这也可能意味着在每个用户和每个专辑的主键上都有连续ID的图像.

代码中意味着在我的框架代码中使用“on inserted,deleted,updated”事件(例如Eloquent)

sql功能意味着使用级联,触发器等.

人们抱怨这是基于意见的,但事实并非如此.如果使用mysql shell,那么仅应用代码规则并且没有约束可能会导致不一致 – 这是事实.
此外,如果某人有最佳实践和参考资料的链接,那也很好,我真的很想知道谷歌的开发人员做了什么 – 例如again.not.opinions.but.facts.

编辑:拼写,格式化,呼吁重新打开基于问题的事实措辞.

解决方法:

一个Laravel答案

因为你用标记了这个问题,我将给你一个支持Laravel开发风格的答案. Laravel通过Artisan支持Eloquent ORM和数据库迁移.这将允许您在代码中保持这种“一致性”,而不是严格地在DB上.

ORM

有大量资源可用于了解ORM是什么以及它是如何工作的. Laravel使用Eloquent,允许您为模型及其元素强制执行关系和规则.

迁移

使用migrations,我们可以以对我们的模型有意义的方式构建我们的数据库,同时使其在大多数数据库(MysqL与Postgres)之间保持可移植性.

多开发人员应用程序

由多个开发人员开发的应用程序需要一种保持同步的方法.如果一个开发人员决定添加具有某些约束的表,则需要将其传达给团队的其他成员.直接向数据库添加规则可能会在与其他团队成员通信时导致问题并且会引起麻烦.相反,使用迁移和ORM来描述正在改变的内容以及原因.迁移将允许任何其他开发人员简单地将他们的数据库“迁移”到最新版本并保持同步.

结论

要与其他一些列出的答案进行比较:

>所有代码仍在一个地方.迁移和模型是用PHP制作的,并保存在项目仓库中.
>由于ORM和迁移的数据库规则,它已在应用程序中实施.
>实用,因为Laravel社区内有大量关于这些主题的文档和帮助,可以说这是解决这个问题的“官方”方法.
> KISS这将使一切变得简单,特别是如果您正在与其他开发人员和环境打交道,因为它非常便携.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐