gpt4 book ai didi

mysql - 关系数据库管理系统 : How to represent a composite entity

转载 作者:行者123 更新时间:2023-11-29 21:56:57 25 4
gpt4 key购买 nike

我有一个实体,例如 compound_tax。每个compound_tax 可以由另一个实体tax 的多个实例组成。例如,一个 compound_tax 可以由两种税组成(顺序可能很重要):

VAT:         4.5% of Net Total (tax)
Service Tax: 3.4% of Net Total (tax)
------------------------------------
Total Tax: 7.9% of Net Total (compound_tax)

创建这些表的最佳方法是什么?有标准做法吗?

这是我想到的解决方案,尽管我不确定这是否是正确的解决方案。如果可能的话,请让我听听优点和缺点:

Table: taxes {PK: tax_id}
+--------+-------------+------+------------+
| tax_id | tax_name | rate | tax_type |
+--------+-------------+------+------------+
| 1 | VAT | 4.5 | single |
+--------+-------------+------+------------+
| 2 | Service Tax | 3.4 | single |
+--------+-------------+------+------------+
| 3 | Total Tax | 7.9 | compound |
+--------+-------------+------+------------+

Table: compound_taxes {PK: (ctax_id, tax_id), FK(tax_id)}
+--------+-------------+--------+
| ctax_id | tax_id | order |
+---------+------------+--------+
| 3 | 1 | 1 |
+-------- +------------+--------+
| 3 | 2 | 2 |
+---------+------------+--------+

更新:@Егор Рогов 问题的回答:

  • 同一个“单一税”可以属于几种不同的复合税吗?” - 可以。

  • 某些复合税是否有可能由另一种复合税组成? - 是的。

  • 您要对这些表执行什么查询?” - 我需要快速列出所有税费和税率,本质上是对税费的选择。我需要能够更新税费,包括复合税,其中将涉及 compound_taxes 以及 taxes 上的 INSERT、UPDATE 和 DELETE。

  • 您想要计算复合税的总税率还是将其“硬编码”到表中?” - 我都可以。我对它进行了硬编码,因为这样我就运行了一个简单的 SELECT taxes 以获取所有税费以及税率的列表。

最佳答案

应该是相反的。您应该在税收表(其名称应该是税收,而不是税收)上有一个指向复合税的外键(compound_tax_id),因此您可以有多个税收指向相同的复合税。此选项卡中也会有“订单”字段。

另一个表应该称为compound_tax。而且它只有一个字段(id)。要了解属于compound_tax的税收,您可以通过compound_tax_id对税收表执行SELECT查询

关于mysql - 关系数据库管理系统 : How to represent a composite entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058269/

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