- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的老板要求我创建一个更简单的系统,通过将点与我们的 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/
我正在制作 BI类似银行机构的系统。该系统应管理信贷契约(Contract)、发票、付款、罚款和利息。 现在,我需要创建一个构建发票的方法。我必须计算客户现在必须支付多少钱。他欠债,他必须偿还。他还必
我是一名优秀的程序员,十分优秀!