gpt4 book ai didi

php - SQL触发器和技术债务

转载 作者:行者123 更新时间:2023-11-29 08:23:31 26 4
gpt4 key购买 nike

我的老板要求我创建一个更简单的系统,通过将点与我们的 mysql 数据库中的用户表关联来查找点。旧系统只有事件、分数值,然后是另一个表,其中包含为用户完成的事件,然后另一个表仅包含管理员给定的分数。所以我的工作是将这些全部加在一起并将它们放在一列中。现在他说问题是仍然有所有查询围绕添加点运行,但他们建议我使用触发器简单地将点添加到用户列,而不是将它们更改为在任务完成时简单地添加点到用户列,当其他列之一添加了点时。

对我来说,这听起来像是使用解决方法并产生技术债务。我错了吗?

我是系统新手,我不知道所有查询在 php 页面中的确切位置,但如果这会造成技术债务,那么解决此问题的适当方法是什么。

我是新人,可能只会使用 sql 触发器,以免违背老板的建议,我至少想知道做事的明智/最佳方式。

尽我最大努力提供不是实际的,但接近实际的数据库模式事件:ID、积分值、描述用户事件:用户 ID、事件 ID、完成状态GIVEN-POINTS:USERID, POINTS_GIVEN, DESC (给出了每个时间点,因此它更像是日志而不是更新点)

我在基本用户表中添加了一个点列触发器将是当用户事件完成状态=完成时,查找点值,添加到用户中的点,而不是更改查询来执行此操作。

最佳答案

只要业务规则相当简单,触发器就是完成您想要做的事情的完全有效的方法。

有很多方法可以实现将数据从一个表移动到另一个表。您可以使用触发器、某种同步 PHP 进程或使用某种消息队列的异步进程。

触发器的优点是编码、维护和运行简单且快速。好处是您只需执行一次代码,这特别好,因为您不知道接触这些表的所有查询在哪里。缺点是您可能会将业务逻辑放入数据库中,这可能是您开始陷入技术债务的地方。另一个缺点是您添加了另一个业务层,这对于下一个开发人员来说可能并不明显,因此他们可能会花费大量时间试图弄清楚汇总表如何以及为何更新。在这种情况下,评论是一件好事。

同步 PHP 进程的好处是代码的执行位置非常明显。另一个好处是您可以访问整个 PHP 应用程序上下文,并可以创建更复杂的业务规则。缺点是您必须将函数或方法调用放入可能触及表的每个位置。

异步 ​​PHP 进程与同步 PHP 进程具有相同的优点和缺点,但额外的好处是它们不会降低用户体验。它们的创建也稍微复杂一些;您必须处理未收到消息或未按正确顺序收到消息的情况。

关于php - SQL触发器和技术债务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com