标准化数据库,其中 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 Cost
和 Total Cost
没有约束(特别是,它们可以在不同的行中单独和成对复制)这对不形成 table。因此,如果 table 包含在功能上仅依赖于该对的任何其他列,则它不能处于第三范式。
如果期望 Total Cost
始终等于 Item Cost
+ Shipping Cost
,则构成对 Item Cost
和 Shipping Cost
的函数依赖,这意味着table 不在 3NF 中。您可以通过删除 Total Cost
列将 table 转换为 3NF。您在这里的线索可能是删除该列不会丢失任何数据。
如果您假设一个计算系统无法执行算术(或无法直接计算的关系),那么您可以将其移至单独的 table 而不是完全删除 Total Cost
列(Item Cost
、Shipping Cost
、Total Cost
)。不过,对于这种特殊情况,这似乎很愚蠢。
我没有看到 Sold to
和 Sale Date
列有任何规范化问题。据我所知,每个都完全取决于 Product
列,我将其作为 table.
唯一候选键的唯一成员
假设我保留了所售产品的运输记录。
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 Cost
和 Total Cost
没有约束(特别是,它们可以在不同的行中单独和成对复制)这对不形成 table。因此,如果 table 包含在功能上仅依赖于该对的任何其他列,则它不能处于第三范式。
如果期望 Total Cost
始终等于 Item Cost
+ Shipping Cost
,则构成对 Item Cost
和 Shipping Cost
的函数依赖,这意味着table 不在 3NF 中。您可以通过删除 Total Cost
列将 table 转换为 3NF。您在这里的线索可能是删除该列不会丢失任何数据。
如果您假设一个计算系统无法执行算术(或无法直接计算的关系),那么您可以将其移至单独的 table 而不是完全删除 Total Cost
列(Item Cost
、Shipping Cost
、Total Cost
)。不过,对于这种特殊情况,这似乎很愚蠢。
我没有看到 Sold to
和 Sale Date
列有任何规范化问题。据我所知,每个都完全取决于 Product
列,我将其作为 table.