客户订购登记数据建模.docx

上传人:b****5 文档编号:6351104 上传时间:2023-01-05 格式:DOCX 页数:18 大小:192.57KB
下载 相关 举报
客户订购登记数据建模.docx_第1页
第1页 / 共18页
客户订购登记数据建模.docx_第2页
第2页 / 共18页
客户订购登记数据建模.docx_第3页
第3页 / 共18页
客户订购登记数据建模.docx_第4页
第4页 / 共18页
客户订购登记数据建模.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

客户订购登记数据建模.docx

《客户订购登记数据建模.docx》由会员分享,可在线阅读,更多相关《客户订购登记数据建模.docx(18页珍藏版)》请在冰豆网上搜索。

客户订购登记数据建模.docx

客户订购登记数据建模

客户订购登记————逻辑数据库设计

1.客户订购登记

一个公司希望为其客户订购行为建立一个数据库。

一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。

每个订单有一个发票,可以通过多种方式来支付,例如支票,信用卡或者现金。

开始运行这个客户登记的员工的名字要被记录下来。

有一个相应的部门工作人员来负责整理订单并把这些订单发给顾客。

如果订单上的货物在库中没有,就需写明库中有什么,这样在订单中可能就会用其他货物来填充。

我为当前系统提供了如下描述。

1.1数据需求

1.客户

每个客户的详细信息包括客户号、客户姓名、地址(街区、城市、州和邮编)、家庭电话号码、传真、出生日期。

对每个公司来说,客户号是唯一的。

2.员工

员工中每个成员的详细信息包括员工号、员工姓名(姓和名)、地址、家庭电话号码、邮箱、社会保障号码、出生日期、职位、性别、全年工资、工作开始日期。

在整个业务中,员工号是唯一的。

3.发票

每一个订单有一个发票。

记录发票的详细情况包括发票号码、开发票日期、支付发票日期、信用卡号、持卡者姓名、订单号、支付发票方式号。

在整个组织中,发票号是唯一的。

4.订单

订单的详细信息包括订单号、订单日期、送货地址(街区、城市、州和邮编)、预订日期、客户号、员工号。

在整个组织中,订单号是唯一的。

5.订单细节

每个订单可以由一种或多种商品。

订单细节的详细信息包括订单号、商品号、预订数量。

每个订单对应的商品号是唯一的。

6.付款方式

发票可以通过多种方式来支付,例如支票、信用卡或者现金。

付款方式的详细信息包括付款方式号、付款方式。

在整个组织中,付款方式号是唯一的。

7.商品

每个商品的详细信息包括商品号、商品名称、序列号、统一价格、预订数量。

在整个组织中,商品号是唯一的。

8.装载的货物

装载货物的详细信息包括装载货物号、数量、装货日期、完成情况、订单号、商品号、员工号、支付方式号。

在整个组织中,装载的货物号是唯一的。

9.运货方式

运货方式的详细信息包括运货方式号、运货方式。

在整个组织中,运货方式号是唯一的。

1.2事务需求

1.数据应该能够支持下述维护事务

(a)创建和维护记录客户订购登记的详细信息和每个客户的记录

(b)创建和维护记录员工的详细信息的记录

(c)创建和维护记录发票的详细信息

(d)创建和维护记录订单的详细信息的记录

(e)创建和维护记录订单细节的详细信息的记录

(f)创建和维护记录支付方式中支票、信用卡和现金的详细信息的记录

(g)创建和维护记录商品的详细信息的记录

(h)创建和维护记录装载的货物的详细信息的记录

(i)创建和维护记录运货方式的详细信息的记录

2.数据应该能够支持下述查询事务

(a)列出基于某一运货方式运送的货物。

(b)列出对某一给定订单所对应的订单细节的详细信息。

(c)列出对某一给定的员工开出订单的详细信息。

(d)列出基于给定的订单提供的发票的详细信息。

(e)为某一给定的客户列出没有支付发票的详细信息。

(f)列出根据订单细节查询到具体的运货方式。

(g)列出针对某一订单细节所要装载的货物。

(h)列出发票费用的最大值、最小值和平均值。

(i)以报表形式列出客户所选择的运货方式。

(j)列出公司的货物总数,按货物号排序。

(k)列出特定客户的订单的描述。

(l)列出支付发票方式的情况描述。

(m)以报表形式列出每名员工需要准备的货物。

(n)列出查询属于订单细节上的商品。

(p)列出客户所选择的支付方式。

2.使用逻辑数据库设计方法

2.1步骤1.1:

表示实体

逻辑数据库设计的第一个步骤是标识在数据库中必须描述的主实体。

由上面的描述,可以标识如下实体:

Cumtomer(客户)         Employee(员工)

Invoice(发票)         Order(订单)

OrderDetail(订单细节)     PaymentMethod(支付方式)

Product(商品)         Shipment(装载的货物)

ShipmentMethod(运货方式)

为实体命名时,应该有意义的并且对用户直观的名字,在数据字典中记录他们的详细信息。

实体名称

描述

情况

客户

对企业产品和服务有特定需求的群体

服务请求方

员工

指企业(单位)中各种用工形式的人员

服务供应方

发票

参加经营活动所提供给对方的收付款的书面证明,是财务收支的法定凭证,是会计核算的原始依据,也是审计机关、税务机关执法检查的重要依据

一切单位和个人在购销商品、提供劳务或接受劳务、服务以及从事其他经营活动时

订单

部门向原材料、燃料、零部件、办公用品等的供应者发出的定货单

输入订单和退货单时

订单细节

部门向原材料、燃料、零部件、办公用品等的供应者发出的定货单

输入订单和退货单时

支付方式

购物或消费需要付款形式的多种选择支付捷径

支付时

商品

经过交换且非进入使用过程的劳动产品

 

装载的货物

经过交换且非进入使用过程的劳动产品

 

运货方式

客户订购商品时所选择的运货方式

客户订购商品时

 

 

 

2.2步骤1.2:

标识关系

标识完实体后,下一步就是标识存在于这些实体之间的所有关系。

1.确定关系的多样性约束

2.使用实体——关系(ER)建模

在数据库设计阶段,将创建几个代表客户订购登记的ER模型。

实体关系实体

CustomerPlacesOrder

PaymentMethodpMethodForInvoice

OrderHasOrderDetail

RaisesInvoice

EmployeeProcessesOrder

PreparesShipment

ProductPartOfOrderDetail

OrderDetailPackageInShipment

ShipmentMethodsMethodForShipment

 

客户订购登记中的关系初稿

实体多样性关系多样性实体

Customer1..1Places1..*Order

PaymentMethod1..1pMethodFor1..*Invoice

Order1..1Has1..*OrderDetail

1..1Raises1..1Invoice

Employee1..1Processes0..*Order

1..1Prepares0..*Shipment

Product1..1PartOf1..*OrderDetail

OrderDetail1..1PackageIn1..*Shipment

ShipmentMethod1..1sMethodFor1..*Shipment

 

上面所定义的关系的多样性约束

客户订购登记的ER模型初稿

2.3步骤:

1.3标识实体或关系的有关属性

下一个步骤是标识与已经标识的实体或关系有关的属性。

对于客户订购登记而言,应该标识与实体有关的饿属性。

实体属性

CumtomercustomerNO,customerName,customerStreet,customerCity,customerState,customerZipCode,custTelNo,custFaxNo,DOB

EmployeeemployeeNo,title,FirstName,middleName,

lastName,address,WorkTelExt,homeTelNo,

empEmailAddress,SSN,DOB,position,sex,salary,DATeStarted

InvoiceinvoiceNo,DATeRaised,DATePaid,Credit

CardNo,holdersName,orderNo,pMethodNo

OrderOrderNo,orderDATe,billingState,BillingCity,

BillingStreet,BillingZipCode,PrimisedDate,

customerNO,employeeNo

OrderDetailOrderNo,productNo,quantityOrdered

PaymentMethodpMethodNo,paymentMethod

ProductproductNo,productName,serialNo,unitPrice

ShipmentshipmentNo,quantity,shipmentDate,comleteStates

orderNo,productNo,employeeNo,sMethodNo

ShipmentMethodsMethodNo,shipmentMethod

 

与实体有关的属性

2.4步骤1.4:

确定属性域

现在要为上一步在数据字典中所标识的属性添加必要的属性域。

2.5步骤1.5:

确定候选键、主键和备用键属性

这个步骤主要是为实体标识候选键,然后选择其中之一作为主键。

在标识主键过程中,要特别注意实体是强实体还是弱实体。

在标识候选键时,应该注意到Cumtomer实体的客户号,Employee实体的员工号,Invoice实体的发票号,Order实体的订单号,OrderDetail实体的订单/商品号,PaymentMethod实体的支付方式号,Product实体的商品号,Shipment实体的装载货物号,ShipmentMethod实体的运货方式号,这些号码在整个组织中都是唯一的。

实体候选键主键备用键

CustomercustomerNOcustTelNo

ustFaxNo

EmployeeemployeeNoSSN

InvoiceinvoiceNo

OrderorderNo

OrderDetailorderNo

productNo

PaymentMethodpMethodNo

ProductproductNoserialNo

ShipmentshipmentNo

ShipmentMethodsMethodNo

 

客户订单的逻辑数据模型

2.6步骤1.6:

特化和泛化实体

当前的PaymentMethod实体的定义已经为继续进行逻辑数据库设计方法学的其他步骤做好了准备。

但是,为了更准确的建模,可能想要增加额外的信息。

需求说明表明支票、信用卡和现金有唯一的编号来区分它们。

因此,可以把check、creditcard和cash作为PaymentMethod实体的特殊类型。

2.7步骤1.7:

检查模型的数据冗余

现在,得到了一个客户订购登记的逻辑数据模型。

检查冗余,必须要:

重新检查一对一关系

删除冗余关系

2.8步骤1.8:

检查模型是否支持用户事务

在这个步骤中,检查已经创建的局部逻辑数据模型是否支持用户所需的服务。

检查包括如下方面:

数据模型中是否存在必须的属性

如果属性要从多个实体中得到,则两个实体间是否有通路;换句话说,在两个实体之间要有已经标识了的关系,不论是直接的还是间接的。

2.9步骤2.1:

创建表

在这个步骤中,从逻辑数据模型创建表达用户视图中所描述的实体和关系的表2,这时,要为关系数据库使用数据库设计语言。

最后,将从逻辑数据模型创建的表的全部结构都存档。

Customer(customerNO,customerName,customerStreet,customerCity,customerState,customerZipCode,custTelNo,custFaxNo,DOB)

PrimaryKeycustomerNO

AlternateKeycustTelNo

AlternateKeyustFaxNo

PaymentMethod(pMethodNo,PaymentMethod)

PrimaryKeypMethodNo

Employee(employeeNo,title,

FirstName,middleName,

lastName,address,WorkTelExt,

homeTelNo,empEmailAddress,SSN,

DOB,position,sex,salary,

DATeStarted)

PrimaryKeyemployeeNo

AlternateKeySSN

Product(productNo,productName,serialNo,unitPrice)

PrimaryKeyproductNo

AlternateKeyserialNo

Invoice(invoiceNo,DATeRaised,

DATePaid,CreditCardNo,

holdersName,orderNo,pMethodNo)

PrimaryKeyinvoiceNo

ForeignKeyorderNo

ReferencesOrder(OrderNo)

ForeignKeypMethodNoReferences

PaymentMethod(pMethodNo)

Shipment(shipmentNo,quantity,

shipmentDate,comleteStates,

orderNo,productNo,employeeNo,

sMethodNo)

PrimaryKeyshipmentNo

ForeignKeyorderNo,productNo

ReferencesOrderDetail

(orderNo,productNo)

ForeignKeyemployeeNoreferences

Employee(employeeNo)

ForeignKeysMethodNoreferences

ShipMethod(sMethodNo)

Order(OrderNo,orderDate,

billingState,billingCity,

BillingStreet,billingZipCode,

PrimisedDate,customerNO,

employeeNo)

PrimaryKeyorderNo

ForeignKeycustomerNoreferences

Customer(customerNo)

ForeignKeyempolyeeNoreferences

empolyee(empolyeeNo)

OrderDetail(OrderNo,productNo,

quantityOrdered)

PrimaryKeyorderNo,productNo

ForeignKeyorderNoreferencns

Order(orderNo)

ForeignKeyproductNoreferencns

product(productNo)

ShipmentMethod(sMethodNo,

shipmentMethod)

PrimaryKeysMethodNo

 

 

 

2.10步骤2.2:

用规范化方法检查表结构

在这个步骤中,要确保上一步所建的表至少要满足第三范式。

如果发现了不满足第三范式的表则可能表明逻辑数据模型中的某些部分是错误的,或者是从模型产生表的时候产生了错误。

2.11步骤2.3:

检查模型是否支持用户服务

在这个步骤中,除了要检查从实体到表的映射关系并且要确定外键的关系之外,在这个情况下,还可以再次检查从实体到表的映射是否正确的完成,以及所创建的表是否支持用户服务。

2.12步骤2.4:

检查业务规则

业务规则是为了防止数据库不一致而强加的约束。

六种完整性约束中,有四种在上一步已经标识了,并且存档在数据字典中。

这四种是:

需要的数据、属性域约束、实体完整性和多样性。

1.参照完整性

2.其他业务规则

3.将所有的业务规则存档

Invoice

ForeignKeypMethodNoReferencesPaymentMethod(pMethodNo)

ONUPDATECASCADEONDELETENOACTION

ForeignKeypMethodNoReferencesPaymentMethod(pMethodNo)

ONUPDATECASCADEONDELETENOACTION

Order

ForeignKeycustomerNoreferencesCustomer(customerNo)

ONUPDATECASCADEONDELETENOACTION

ForeignKeyempolyeeNoreferencesempolyee(empolyeeNo)

ONUPDATECASCADEONDELETENOACTION

Shipment

ForeignKeyorderNo,productNoReferencesOrderDetail(orderNo,productNo)

ONUPDATECASCADEONDELETENOACTION

ForeignKeyemployeeNoreferencesEmployee(employeeNo)

ONUPDATECASCADEONDELETENOACTION

ForeignKeysMethodNoreferencesShipMethod(sMethodNo)

ONUPDATECASCADEONDELETENOACTION

OrderDetail

ForeignKeyorderNoreferencnsOrder(orderNo)

ONUPDATECASCADEONDELETENOACTION

ForeignKeyproductNoreferencnsproduct(productNo)

ONUPDATECASCADEONDELETENOACTION

 

2.13步骤2.5:

与用户一起讨论逻辑数据库设计

现在,逻辑数据库设计已经存档。

这时,应该与用户一同检查模型和支持文档。

客户订购登记——使用物理数据库设计方法学

1.1步骤3.1:

设计基本表

在逻辑数据库设计阶段,创建了一些描述逻辑数据模型中的实体和关系的基本表的设计包括:

对每个表,包括它的属性、主键、备用键、外键和完整性约束。

对每个属性,包括它的域、可选的默认值、是否可以为空和是否的派生的。

Customer:

CREATETABLE`customer`(`customerNo`int(10)NOTNULL,`customerName`char(10)NOTNULLdefault'',`customerStreet`char(10)NOTNULLdefault'',`customerCity`char(10)NOTNULLdefault'',`customerState`char(10)NOTNULLdefault'',`customerZipCode`int(6)NOTNULL,`custTelNo`int(11)NOTNULL,`custFaxNo`int(10)NOTNULL,`DOB`int(8)NOTNULL,PRIMARYKEY(`customerNo`,`customerName`))ENGINE=InnoDBDEFAULTCHARSET=gbk

 

Employee:

CREATETABLE`employee`(`employeeNo`int(10)NOTNULL,`employeeName`char(10)NOTNULLdefault'',`address`char(50)NOTNULLdefault'',`homeTelNo`int(8)NOTNULL,`empEmailAddress`char(50)NOTNULLdefault'',`SSN`int(10)NOTNULL,`DOB`int(8)NOTNULL,`position`char(10)NOTNULLdefault'',`sex`int

(2)NOTNULL,`salary`int(10)NOTNULL,`DATeStarted`int(8)NOTNULL,PRIMARYKEY(`employeeNo`))ENGINE=InnoDBDEFAULTCHARSET=gbk

 

Invoice:

CREATETABLE`invoice`(`invoiceNo`int(10)NOTNULL,`DATeRaised`int(8)NOTNULL,`DATepaid`int(8)NOTNULL,`creditCardNo`int(10)NOTNULL,`holdersName`char(10)NOTNULLdefault'',`orderNo`int(10)NOTNULL,`pMethodNo`int(3)NOTNULL,PRIMARYKEY(`invoiceNo`),)ENGINE=InnoDBDEFAULTCHARSET=gbk

 

Order:

CREATETABLE`order`(`orderNo`int(10)NOTNULL,`orderDATe`int(8)NOTNULL,`billingStreet`char(10)NOTNULL,`billingCity`char(10)NOTNULL,`billingState`char(10)NOTNULL,`billingZipCode`int(6)NOTNULL,`promisedDate`int(8)NOTNULL,`customerNo`int(10)NOTNULL,`employeeNo`int(10)NOTNULL,

PRIMARYKEY(`orderNo`),)ENGINE=InnoDBDEFAULTCHARSET=gbk

 

OrderDetail:

CREATETABLE`orderdetail`(`orderNo`int(10)NOTNULL,`productNo`int(10)NOTNULL,`quantiayOrdered`int(50)NOTNULL,PRIMARYKEY(`orderNo`),)ENGINE=InnoDBDEFAULTCHARSET=gbk

 

PaymentMethod:

CREATETABLE`paymentmethod`(`pMethodNo`int(3)NOTNULL,`paymentMethod`char(3)NOTNULL,PRIMARYKEY(`pMethodNo`))ENGINE=InnoDBDEFAULTCHARSET=gbk

 

Product:

CREATETABLE`product`(`productNo`int(10)NOTNULL,`productName`char(10)NOTNULL,`serialNo`int(10)NOTNULL,`unitPrice`int(10)NOTNULL,PRIMARYKEY(`productNo`))ENGINE=InnoDBDEFAULTCHARSET=gbk

 

Shipment:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1