标准化数据库,其中 B 依赖于 A,C 依赖于 A,但 D 依赖于 B+C

Normalizing a database where B depends on A, C depends on A, but D depends on B+C

假设我保留了所售产品的运输记录。

Product | Type | Year Made | Item Cost | Shipping Cost | Total Cost | Sold to | Sale Date |
--------+------+-----------+-----------+---------------+------------+---------+------------
Ford 30 | Car  | 1962      | 1000      | 500           | 1500       | Bob     | 01/22/123 |
BOXXXXX | Box  | 1223      | 5         | 10            | 15         | Sam     | 03/44/321 |

如何标准化最后 3 列?另外,我是否遗漏了实现 3NF 的任何东西?

假设 Item CostTotal Cost 没有约束(特别是,它们可以在不同的行中单独和成对复制)这对不形成 table。因此,如果 table 包含在功能上仅依赖于该对的任何其他列,则它不能处于第三范式。

如果期望 Total Cost 始终等于 Item Cost + Shipping Cost,则构成对 Item CostShipping Cost 的函数依赖,这意味着table 不在 3NF 中。您可以通过删除 Total Cost 列将 table 转换为 3NF。您在这里的线索可能是删除该列不会丢失任何数据。

如果您假设一个计算系统无法执行算术(或无法直接计算的关系),那么您可以将其移至单独的 table 而不是完全删除 Total Cost列(Item CostShipping CostTotal Cost)。不过,对于这种特殊情况,这似乎很愚蠢。

我没有看到 Sold toSale Date 列有任何规范化问题。据我所知,每个都完全取决于 Product 列,我将其作为 table.

唯一候选键的唯一成员