订货数据库设计 2.docx
《订货数据库设计 2.docx》由会员分享,可在线阅读,更多相关《订货数据库设计 2.docx(20页珍藏版)》请在冰豆网上搜索。
订货数据库设计2
目录
1.需求分析1
1.1需求分析1
1.2可行性分析1
1.3问题域描述1
1.4数据流图2
1.5数据字典2
1.5.1数据项2
1.5.2数据字典表示2
2.概念设计4
2.1数据库的实体及属性4
2.2系统E-R图设计5
2.2.1本系统各实体的E-R图表示5
2.2.2各实体联系的E-R图8
3.逻辑设计8
4.物理设计9
4.1通常对关系数据库物理设计的内容主要包括9
4.2物理设计的基本步骤10
4.3开发环境10
5.数据库的实施10
6.数据库的运行和维护10
7.实验结果11
8.试验心得体会13
8.1本次课程设计做得比较好地方13
8.2什么地方做得不太好,以后如何改正13
8.3从本设计得到的收获14
9.参考文献14
10.主要代码14
订货数据库设计
1.需求分析
1.1需求分析
需求分析的任务是调查应用领域,对应用领域中各种应用的信息要求和操作要求进行详细分析,形成需求分析说明书。
需求分析过程一般分一下几个阶段:
(1)调查组织机构的总体情况
(2)熟悉各部门的业务活动情况
(3)分析用户的需求
(4)确定新系统的边界
1.2可行性分析
订货时很多发展的必然趋势,有人说订货的好坏,决定了当季销售业绩
一半。
订货一方面可以保证我们发货的总量维持不变,公司所发货品总数即为
售总数,这样可以为公司控制货品销售争取主动,能够较准确地掌控生产与库
总量;另一方面可以控制一定量的滞销款返回以促进其销售,为公司疏缓库存力。
由于订货的好处和它处理数据的庞大行,订货系统应运而生。
由于顾客或订货商们订货时会有各种不同的需求,而且随着顾客量的增顾
的信息量也在增加,而且必须确保顾客信息的准确和完整性。
订购的货物有其
性,如:
货物名,订货价等。
不同的顾客会与公司建立不同的订货单,这些订
单对应着不同的订货细则。
这些都是很庞大的数据量,需要建立一个数据库来
存和方便的查询。
1.3问题域描述
顾客找供货商订货,这时候顾客要把顾客的姓名,收获地址等信息给供货商。
顾客可以签订多份订货单。
在每个订货单中可以有多种货物。
每个订货单就可以对应多份订货细则。
供货商根据订货单给顾客发货。
顾客可以登录到订货管理系统查询自己的信息。
供货商可以进入订货管理系统对顾客信息进行添加,删除,修改等。
这个时候还要考虑到顾客只能够看而不能够去修改其数据。
1.4数据流图
1.5数据字典
1.5.1数据项
数据项是数据的最小单位,对数据相的描述包括:
数据项名、含义、别名、类型、长度、取值范围以及与其他数据项的逻辑关系。
顾客(顾客号、收货地址、赊购限额、余额、折扣)
订货单(订单号、顾客号、收货地址、订货日期、订货细则)
订货细则(订货细则编码、货物号、订货数量)
货物(货物号、制造厂商、厂商的实际存量、最低存货量、货物描述)
1.5.2数据字典表示
顾客:
列名
数据类型
长度
允许空
顾客号
varchar
10
收货地址
varchar
20
收货限额
varchar
8
余额
varchar
8
是
折扣
varchar
8
是
订货单:
列名
数据类型
长度
允许空
订单号
varchar
20
顾客号
varchar
10
收货地址
varchar
20
订货日期
varchar
8
订货细则编号
varchar
10
订货细则:
列名
数据类型
长度
允许空
订货细则编码
varchar
10
货物号
varchar
10
订货数量
varchar
10
货物:
列名
数据类型
长度
允许空
货物号
varchar
10
制造厂商
varchar
20
厂商的实际存量
varchar
8
最低存货量
varchar
8
货物描述
varchar
20
是
2.概念设计
概念设计结构通常有自顶向下、自底向上、逐步扩张、混合策略4类方法。
其中最经常采用的策略是自底向上的方法。
即自顶向下的进行需求分析,然后在自底向上地设计概念结构。
概念数据模型,主要在系统开发的数据库设计阶段使用,是按照用户的观点来对数据和信息进行建模,利用实体关系图来实现.它描述系统中的各个实体以及相关实体之间的关系,是系统特性和静态描述.数据字典也将是系统进一步开发的基础.
一般先画出组织的局部E-R图,然后将其合并,在此基础进行优化和美化。
概念结构设计是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。
客户定购登记数据库概念结构设计应达到以下要求:
能真实充分地反映客户定购商品的管理流程,包括客人与订单、订单与商品之间的联系;
容易理解,从而可以使对数据库不熟悉的操作员也可以使用;
容易更改,当应用环境或功能需求发生变化时,能方便地对概念模型进行修改和扩充。
易于用关系数据库实现。
2.1数据库的实体及属性
顾客(顾客号、收货地址、赊购限额、余额、折扣)
订货单(订单号、顾客号、收货地址、订货日期、订货细则)
订货细则(订货细则编码、货物号、订货数量)
货物(货物号、制造厂商、厂商的实际存量、最低存货量、货物描述)
2.2系统E-R图设计
为了把系统的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型(E-R图)。
它描述了从用户角度看到的数据,它反映了用户的显示环境,而且与在软件中的实现方法无关。
2.2.1本系统各实体的E-R图表示
顾客:
顾客:
主码是顾客号,顾客号唯一的标示一位顾客。
一个顾客号可以对应多个订单号。
属性有收货地址,赊购限额,余额,折扣.
订货单:
订货单:
订货单是主码,订单号唯一的确定一个订单,在订货细则里可以看到一个订单里以应多个订单细则编码。
订单号作为订货细则里的外码。
订货单属性有顾客号,收货地址,订货日期,订货细则。
订货细则:
描述:
订货细则编码是主码,订货细则编码可以唯一的确定一份订货细则。
顾客订购一种货物的话只能对应一个订单细则号.但是一个订单细则号只能对应一种货物号。
订单里不同的细则号就可以对应多种货物了,货物号是外码。
订货细则属性有货物号,订货数量。
货物:
描述:
货物号是主码,货物号可以唯一的确定以中货物。
通过货物号与订单细则编码联系起来就可以实现一份订单里可以购买多种货物。
货物属性有制造厂商,厂商的实际存量,最低存货量,货物描述。
2.2.2各实体联系的E-R图
各个实体由很多的属性构成而且每个实体都有相应的主码,主码标识了这个实体的主属性,而且有的实体还有相应的外码,外码是有别的实体相联系的关键的单位。
在上面的E-R图我们可以看见一个顾客可以签订多个订货单,顾客里面包含了唯一标示顾客的顾客号(主码)。
在每个订货单里面可以有唯一标示该订单的订单号(主码),并且一个订单号只能对应一个顾客号(外码)。
而一个顾客号可以对应多个订单号。
即一位顾客可以签订多个订单。
一个订单可以有多个订货细则所构成。
在每一个订货细则里都有唯一标示的订货细则编号(主码),一个订货细则号对应一种货物,也可以是多个订货细则对应一种货物。
这样的话一个订单就可以购买多个货物。
货物由货物号(主码)识别,一个订单可以由多个货物组成。
3.逻辑设计
E-R图向关系模型的转换要解决的问题是如何将实体和实体型间的联系转换为关系模型式,如何确定这些关系模式的属性和码。
关系模型的逻辑结构是一组关系模式的集合。
E-R图则是由实体型,实体型的属性和实体间的联系3个要素组成夫人。
所以将E-R图转换为关系模型实际上就是要将实体型、实体型的属性和实体间的联系转换为一组关系模式。
实体:
顾客(顾客号、收货地址、赊购限额、余额、折扣)
此为顾客实体型对应的关系模式。
该关系模式包含了联系----“发出”所对应
关系模式。
顾客号为主码。
订货单(订单号、顾客号、收货地址、订货日期、订货细则)
此为订货单实体型对应的关系模式。
该关系模式包含了联系----“参照”所对应
关系模式。
订单号为主码,顾客号是订货单的外码。
订货细则(订货细则编码、货物号、订货数量)
此为订货细则实体型对应的关系模式。
该关系模式包含了联系----“订购”所对应关系模式。
订货细则编码为主码。
货物(货物号、制造厂商、厂商的实际存量、最低存货量、货物描述)
此为货物实体型对应的关系模式。
货物号为主码。
联系实体:
发出
参照
订购
4.物理设计
数据库在实际物理设备上的存储结构和存取方法称为数据库的物理结构。
对应设计好的逻辑数据模型选择一个符合运用要求的物理结构就是数据库的物理设计。
在进行物理设计的候,设计人员可能用到的数据库产品是多种多样的。
不同的数据库产品所提供的物理环境、存储结构和存取方法也各不相同,能供设计人员调整和控制的系统配置变量、存储分配参数等也不一样,因此只能给出一般的设计内容和原则。
4.1通常对关系数据库物理设计的内容主要包括
为关系选择存取方法,建立存取路径;
确定数据库存储结构,即确定关系、索引、聚簇、日志、备份等设计的存储安排和存储结构;
确定系统配置;
等等
4.2物理设计的基本步骤
数据库物理设计的内容
关系存取方法选择
确定数据库的存储结构
评价物理结构
4.3开发环境
WINDOWS7系统下的SQLSERVER2008。
5.数据库的实施
数据库的实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。
数据库应用程序的设计应该与数据库设计同时进行,因此在组织数据入库的同时还要调试应用程序。
应用程序的设计、编码和调试的方法、步骤在软件工程等课程中有详细的讲解。
数据库实施的步骤:
数据的载入和应用程序的调试
数据库的试运行
6.数据库的运行和维护
数据库是运行合格后,数据库开发工作就基本完成,即可投入正式运行了。
但是,由于应用环境在不断地变化,数据库运行过程中物理存储业会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。
对数据库经常性的维护工作主要是由DBA完成的,它包括:
(1)数据库的转储和恢复
(2)数据库的安全性、完整性控制
(3)数据库性能的监督、分析和改造
(4)数据库的重组织和重构造
对于本数据库来说,主要完成数据库的完整性控制。
例如五个表中主码不能为空,对于特别说明的不能为空的属性也不能为空,还有前四个表中的对应关系要注意,它们就是用户自定义的完整性。
在账号管理中设计权限保证数据的安全操作。
7.实验结果
顾客:
订货单:
订货细则:
货物:
8.试验心得体会
8.1本次课程设计做得比较好地方
本次课程设计条理清楚,能够运用SQL语言进行数据库的设计。
在数据库的SQL语言设计当中实现各个的功能。
通过本次课程设计我发现了数据库的强大的功能,而且可以独立的完成代码的编写。
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。
8.2什么地方做得不太好,以后如何改正
实验中一些不太好的部分就是本次实验虽然完成了老师所要求的任务,但是数据库SQL语言的运用还不是很优秀,用户体验不是很好,以后需要在这方面改进。
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
8.3从本设计得到的收获
通过这次课程设计,我对操作系统有了更进一层的理解,同时对以前学的数据库SQL设计语言也有了更深的理解。
在本次实验中我遇到了很多困难,本次实验中的程序编写花了很久。
在这次课程设计中,我自己先熟悉各种知识,然后查找相关资料来实现一些所需要的功能,尤其是在那两个方法时所要运用到的一些知识。
我觉得在以后的学习过程中还应该多做这样的设计,它可以让我们把所学的理论用于实践,一方面可以检验并巩固我们所学的内容,另一方面可以让我们在实践中感到所学知识的实用性,从而提高我们的学习兴趣。
9.参考文献
1《数据库系统简明教程》,王珊,高等教育出版社
2《SQLServer2000高级开发指南》,精英科技,中国电力出版社
3《数据库系统与应用:
SQLServer》,赵致格,清华大学出版社
10.主要代码
/*创建顾客表*/
CREATETABLE顾客
(顾客号varchar(10)Notnullprimarykey,
收货地址varchar(20)Notnull,
赊购限额varchar(8)Notnull,
余额varchar(8)Null,
折扣varchar(8)Null,)
/*创建订货单表*/
CREATETABLE订货单
(订单号varchar(20)NotNullprimarykey,
订货细则编号varchar(10)NotNull,
顾客号varchar(10)NotNull,
收货地址varchar(20)NotNull,
订货日期varchar(8)NotNull,
foreignkey(顾客号)references顾客(顾客号)
)
/*创建订货细则表*/
CREATETABLE订货细则
(订货细则编码varchar(10)NotNullprimarykey,
货物号varchar(10)NotNull,
订货数量varchar(10)NotNull,
foreignkey(货物号)references货物(货物号)
)
/*创建货物表*/
CREATETABLE货物
(货物号varchar(10)NotNullprimarykey,
制造厂商varchar(20)NotNull,
厂商的实际存量varchar(8)NotNull,
最低存货量varchar(8)NotNull,
货物描述varchar(20)Null,
)
/*插入表货物*/
INSERT
INTO货物
values('1001','武汉','100','50',null)
INSERT
INTO货物
values('1002','江苏','120','45',好用不贵)
INSERT
INTO货物
values('1003','安徽','75','20',挺好)
INSERT
INTO货物
values('1004','湖南','300','100',null)
/*更新表货物*/
update货物
set最低存货量='40'
where货物号='1003';
/*插入表顾客*/
insertinto顾客
values('001','武汉','1000','1000','95%')
insertinto顾客
values('002','南京','5000','20000','85%')
insertinto顾客
values('003','西安','5000','100',Null)
insertinto顾客
values('004','兰州','200',Null,Null)
/*插入表订货细则*/
insertinto订货细则
values('2001','1001','100')
insertinto订货细则
values('2002','1002','500')
insertinto订货细则
values('2003','1002','500')
insertinto订货细则
values('2004','1003','1000')
/*插入表订货单*/
insertinto订货单
values('010001','2001','001','武汉','20130124')
insertinto订货单
values('010002','2002','002','南京','20130214')
insertinto订货单
values('010003','2002','002','南京','20130214')
insertinto订货单
values('010004','2004','004','南通','20131020')
/*视图*/
createview批发商查询
asselect货物号,制造厂商
from货物
/*视图查询*/
select货物号,制造厂商
from批发商查询