首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要使用真正的内部连接吗?

我需要使用真正的内部连接吗?
EN

Software Engineering用户
提问于 2015-01-22 15:37:17
回答 2查看 272关注 0票数 3

想象一下,有一位勤杂工,他的服务:

代码语言:javascript
复制
+----+-----------------+--------+
| id |      name       | amount |
+----+-----------------+--------+
|  1 | hair cut        |     40 |
|  2 | shampoo         |     10 |
|  3 | french manicure |     90 |
+----+-----------------+--------+

设想一张交易表:

代码语言:javascript
复制
+----+------------+------------------+
| id | id_service | date_transaction |
+----+------------+------------------+
|  1 |          1 | 01/01/2015       |
|  2 |          1 | 02/01/2015       |
|  3 |          1 | 02/01/2015       |
|  4 |          2 | 02/01/2015       |
|  5 |          2 | 02/01/2015       |
|  6 |          1 | 06/01/2015       |
|  7 |          1 | 06/01/2015       |
|  8 |          3 | 06/01/2015       |
|  9 |          2 | 06/01/2015       |
| 10 |          2 | 10/01/2015       |
| 11 |          1 | 10/01/2015       |
| 12 |          3 | 10/01/2015       |
| 13 |          1 | 10/01/2015       |
| 14 |          2 | 10/01/2015       |
| 15 |          2 | 11/01/2015       |
| 16 |          1 | 16/01/2015       |
+----+------------+------------------+

使用一个简单的INNER JOIN,我们可以读到,例如,特定一天的总和。

但我们的首席执行官并没有对技术上瘾,明天他将改变每一项服务。

因此,为了防止这一幕,我必须如何设置我的网络应用程序?

1)我每次在事务表中重复service.name和amount.name?所以,我不使用内部连接?

1a)我也可能失去分组的可能性,没有数字ID。而且我不能从服务表中使用它们,因为服务更改(或最坏的)被删除了……

2)我需要阻止用户编辑/删除他的服务(S)?

3)你的考虑是什么?

EN

回答 2

Software Engineering用户

发布于 2015-01-22 23:11:51

如果您想要确保有一个已建立的服务列表(从表到内部连接),那么您需要管理这个表的更改,而不中断历史记录的联接。

  1. 使用软删除。向名为: IsDeleted的服务列表中添加一个字段。当您不再提供服务时,请检查它。身份将保持不变。我可能会将此字段作为日期字段,以了解删除是何时进行的。
  2. 使用服务表中的“开始日期”字段和“结束日期”字段指示何时提供这些服务。这些领域也可以张贴已知的价格变化在未来。

所有这些都需要更多的编码来处理什么服务在什么时候可用的逻辑。

票数 2
EN

Software Engineering用户

发布于 2015-01-23 13:22:50

您的事务表不应该依赖于服务表。这是因为事务一旦完成,与服务表的关系就会丢失。为什么?显然,在“服务”表中,您的服务名称或服务数量可能会更改。在历史事务表中,名称和金额将是您将其输入事务表时的名称和数量,如果服务表中有更改,则不会更改。

这也是为什么“金额”不应该出现在“服务”表中,而应该有它自己的表。这样你就能保持历史上的价格记录。不,您也不会在事务表中引用该数据。因为价格可以是任何东西。(比方说你进来了,但因为你还带着你的孩子,这孩子可以用半价理发。)事务表必须有接收任何自定义金额的自由。)。

当然,您可以保留对服务表的引用,因此,如果您的客户决定将“超级发型”更改为“超棒的发型”,这是另一个名称下的相同服务,那么您仍然可以分组。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/270850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档