0

我试图更多地掌握简单的数据库概念,但在更高的规范化方面遇到了麻烦。例如,以下在 Boyce Codd 范式 (BCNF) 和第四范式 (4NF) 中会是什么样子?

发票(客户编号、名字、姓氏、电话、发票编号、日期输入、日期输出、项目类型、数量、项目价格、扩展价格、特殊说明)

到目前为止,我已经这样做了,但我知道我还没有做到这一点:

CUSTOMER(CustomerNumber, FirstName, LastName, Phone, InvoiceNumber) INVOICE(InvoiceNumber, DateIn, DateOut, ItemType, Quantity, ItemPrice, SpecialInstructions)

根据我正在阅读的书,以下假设已经存在:

  1. CustomerNumber --> (FirstName, LastName),但不是 CustomerNumber -->--> (FirstName, LastName)
  2. 客户编号 -->--> 电话。每个客户可能有多个电话号码。
  3. 一个客户有很多订单,但每个订单只关联一个客户。
  4. 一个 ORDER 有多个 ItemType,但每个 ItemType 在任何 ORDER 中只出现一次。
  5. 项目价格不会因订单而异,因此 ItemType 确定 ItemPrice。
  6. SpecialInstructions 与每个项目类型相关联,因为可以针对不同的项目给出不同的指令。
  7. 订单号是分配给订单本身的编号,与任何特定客户无关。因此,我们有“123454”、123455 等数字,而不是“客户 101,订单 1”、客户 101、订单 2”、客户 102、订单 1”等。
  8. ItemPrice 可以随订单而变化,以便在价格中反映特价优惠。

谁能帮我吗?

4

1 回答 1

0

我不知道如何回复这篇文章(请参阅这篇元帖子),所以我只是提出一些想法,而不是一个“答案”,希望能让你朝着正确的方向前进。

@Analytic,看来您只完成了第 2 项!你的 ORDER 表在哪里?项目呢?请将其添加到您的帖子中,以便我们知道您的第一次尝试是什么(我们不会为您做作业!)。

因此,由于您只在 #1 和 #2 上为我们付出了努力,我将对客户电话号码发表评论。您的设计仅允许每个客户使用一个电话号码,因此不符合要求,对吗?你会想象什么样的数据结构可以让你为一个客户拥有多个电话号码?您会在客户表上创建更多字段,例如 Phone1、Phone2、Phone3 等吗?那会实用吗?你会放几个?如果客户曾经拥有比您计划的更多的东西怎么办?查看描述一对多)关系的这个网页。

如果您想在这篇文章中添加更多工作并付出真诚的努力,我们会尽力帮助您。

祝你好运。

于 2013-09-01T05:33:06.960 回答