0

我正在为数据库测试而学习,学习指南中有一些(很多)DB规范化和功能依赖的练习,但是老师没有做任何类似的练习,所以我希望有人帮助我理解这个攻击其他 16 个问题。

1) 给定以下逻辑模式:关系 product_sales

POS     Zone     Agent   Product_Code   Qualification   Quantity_Sold
123-A   Zone-1   A-1     P1             8               80
123-A   Zone-1   A-1     P1             3               30
123-A   Zone-1   A-2     P2             3               30
456-B   Zona-1   A-3     P1             2               20
456-B   Zone-1   A-3     P3             5               50
789-C   Zone-2   A-4     P4             2               20

假设: • 销售点被分组到区域中。• 每个销售点都有代理。• 每个代理都在一个 POS 中运行。• 同一销售点的两个代理商不能销售同一产品。• 对于代理商销售的每种产品,根据产品和销售数量为其分配一个资格。

a) 指出存在 4 个功能依赖关系。
b) 这个结构的正常形式是什么。

4

2 回答 2

1

为了让您开始查找 4 个函数依赖项,请考虑哪些属性依赖于另一个属性:

例如:区域是否依赖于 POS?(如果是这样,POS -> Zone)还是 POS 取决于区域?(在这种情况下Zone -> POS)。

您的五个陈述中有四个告诉您有关属性(或多个属性的组合)之间的依赖关系。


至于标准化,这里有一个(相对)清晰的教程。短语“key, the whole key, and nothing but the key”也是记住第一、第二和第三范式的好方法。

于 2011-07-24T19:54:39.607 回答
1

在你的评论中,你说

好吧,根据我读过的理论,我认为可能是,但我有很多疑问:POS → Zone,{POS,Agent} → Zone,Agent → POS,{Agent, Product_code, Quantity_Sold} → Qualification –</ p>

我认为这是一个很好的努力。

  1. 我认为 POS->Zone 是正确的。
  2. 我不认为 {POS, Agent} → Zone 是完全正确的。如果您查看示例数据并稍微考虑一下,我想您会发现 Agent->POSAgent->Zone。
  3. 我不认为 {Agent, Product_code, Quantity_Sold} → Qualification 是完全正确的。该要求规定“对于代理商销售的每种产品,根据产品和销售数量为其分配一个资格。” 其中重要的部分是“取决于产品和销售数量的资格”。资格取决于产品和数量,所以 {Product_code, Quantity}->Qualification。(要求中没有任何内容向我表明,来自两个不同代理的相同订单的资格可能不同。)

所以根据你的评论,我认为你到目前为止有这些功能依赖。

  • POS->区域
  • 代理->POS
  • 代理->区域
  • 产品代码,数量->资质

但是您至少缺少一个对确定键有重大影响的方法。这是要求。

同一销售点的两个代理商不能销售同一产品。

您如何表达该要求中隐含的功能依赖性?

于 2011-07-29T22:02:16.853 回答