我试图更多地掌握简单的数据库概念,但在更高的规范化方面遇到了麻烦。例如,以下在 Boyce Codd 范式 (BCNF) 和第四范式 (4NF) 中会是什么样子?
发票(客户编号、名字、姓氏、电话、发票编号、日期输入、日期输出、项目类型、数量、项目价格、扩展价格、特殊说明)
到目前为止,我已经这样做了,但我知道我还没有做到这一点:
CUSTOMER(CustomerNumber, FirstName, LastName, Phone, InvoiceNumber) INVOICE(InvoiceNumber, DateIn, DateOut, ItemType, Quantity, ItemPrice, SpecialInstructions)
根据我正在阅读的书,以下假设已经存在:
- CustomerNumber --> (FirstName, LastName),但不是 CustomerNumber -->--> (FirstName, LastName)
- 客户编号 -->--> 电话。每个客户可能有多个电话号码。
- 一个客户有很多订单,但每个订单只关联一个客户。
- 一个 ORDER 有多个 ItemType,但每个 ItemType 在任何 ORDER 中只出现一次。
- 项目价格不会因订单而异,因此 ItemType 确定 ItemPrice。
- SpecialInstructions 与每个项目类型相关联,因为可以针对不同的项目给出不同的指令。
- 订单号是分配给订单本身的编号,与任何特定客户无关。因此,我们有“123454”、123455 等数字,而不是“客户 101,订单 1”、客户 101、订单 2”、客户 102、订单 1”等。
- ItemPrice 可以随订单而变化,以便在价格中反映特价优惠。
谁能帮我吗?