以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  数据库系统原理课件  (http://www.njcie.com/bbs/list.asp?boardid=19)
----  练习——顾客产品订单  (http://www.njcie.com/bbs/dispbbs.asp?boardid=19&id=914)

--  作者:admin
--  发布时间:2010/11/3 8:43:08
--  练习——顾客产品订单

需求为:

 

在一个订货系统的数据库中,存有顾客、货物和订单的信息
每个顾客包含顾客号(唯一)、收货地址(一个顾客可有多个地址)、赊购限额、余额和折扣
每个订单包含订单号(唯一)、顾客号、收货地址、订货日期、订货细则(每个订单有多条)、每条订单细则内容货物号以及订货数量
每种货物包含货物号(唯一)、制造厂商、每个厂商的实际存货量、规定的最低存货量和货物描述
由于处理上的要求,每个订单的每一项订货细则中还应该有一个未发货量(此值初始值为订货数量,随着发货将减为零)

 

ER图为:

 


此主题相关图片如下:t.jpg
按此在新窗口浏览图片

表结构

顾客(顾客号,赊购限额,余额,折扣)

收货地址(收货地址号,收货地址,顾客号)

订单(订单号,订货日期,收货地址号,顾客号)

订货细则(订单号,货物号,订货数量,未发货量)

货物(货物号,实际存货量,制造厂商,最低存货量,货物描述)


 

范式分析

先将所有不可分割的属性做成一张表结构,在进行分析

(顾客号,收货地址,赊购限额、余额,折扣,订单号,收货地址,订货日期,货物号,订货数量,制造厂商,实际存货量,最低存货量,货物描述)

主键为:订单号、货物号

订单号,货物号—>订货数量,未发货量

订单号—>订货日期,收货地址,顾客号

顾客号—>赊购限额,余额,折扣

收货地址—>顾客号

货物号—>实际存货量,制造厂商,最低存货量,货物描述


 

对没有主键的表定义主键,如增加收货地址号

订单号,货物号—>订货数量,未发货量

订单号—>订货日期,收货地址号,顾客号

顾客号—>赊购限额,余额,折扣

收货地址号—>收货地址,顾客号

货物号—>实际存货量,制造厂商,最低存货量,货物描述


 

最后生成表结构

订货细则(订单号,货物号,订货数量,未发货量)

订单(订单号,订货日期,收货地址号,顾客号)

顾客(顾客号,赊购限额,余额,折扣)

收货地址(收货地址号,收货地址,顾客号)

货物(货物号,实际存货量,制造厂商,最低存货量,货物描述)


 

[此贴子已经被作者于2010-11-03 08:59:59编辑过]

--  作者:客人
--  发布时间:2010/11/7 13:45:17
--  
hh
--  作者:客人
--  发布时间:2010/11/12 22:31:28
--  
每个厂商的实际存货量,里面没有体现
--  作者:admin
--  发布时间:2010/11/13 7:27:49
--  回复

所谓的厂商存货量应该就是货物的存货量


--  作者:cie2009
--  发布时间:2010/11/17 22:26:19
--  
 但是题目说了是每个厂商
--  作者:admin
--  发布时间:2010/11/18 20:58:34
--  回复

有道理,如果是这样的话,厂商就需要单独定义成一个实体

与货物的关系为多对多


--  作者:admin
--  发布时间:2012/3/29 14:31:09
--  字段的英文名称建议

顾客(顾客号,赊购限额,余额,折扣)

Customers(CustomerID,CreditLimit,Balance,Discount)

 

收货地址(收货地址号,收货地址,顾客号)

Addresses(AddressID,DetailInformation,CustomerID)

 

订单(订单号,订货日期,收货地址号,顾客号)

Orders(OrderID,OrderDate,AddressID,CustomerID)

 

订货细则(订单号,货物号,订货数量,未发货量)

OrderDetails(OrderID,ProductID,Quantity,NotShippedQuantity)

 

货物(货物号,实际存货量,制造厂商,最低存货量,货物描述)

Products(ProductID,Stock,Manufacturer,ReorderLevel,Description)