资源描述
杭州电子科技大学数据库课程设计课程设计手册 外贸公司的订单管理系统姓 名 学 号 07031760 设计小组长 其 他 设 计小 组 成 员 指 导 教 师 设 计 时 间 2009.9.7 至 2009.9.18 杭州电子科技大学管理学院编制一、需求分析1.针对外贸企业的订单管理系统,分别对商品、订单、订单明细、客户、生产商和供应商在整个订单管理系统中的定位进行详细的分析,获得其需求信息如下:订单的接收是按照商品分类进行的,所以需要有每个商品的信息。登记于同一张订单明细的必须是同一种商品。如果一个商品的订单有一个或者多个胜生产商满足,则该订单不可被退回。需要完整地记录商品、客户、生产商、供应商的信息。针对每一笔业务,在订单中的商品信息栏中都要仔细的纪录每一种商品的编号、日期、数量、单价和总价。在每一张订单中都要详尽的纪录下订单的单位名称、单位号、单位地址、交货日期、货品名称、货品号、货品单价和货品总价。把所有相同的产品纪录到同一张订单明细表中,每一张订单明细表中只能纪录同一种商品。在每一张订单明细表中需要纪录订单号、单位名称、商品号、商品名、规格、交货日期、数量、单价和签订日期等。根据货品名称、交货日期、货品数量、生产商的生产能力以及单位地址等实际因素,将订单明细表进行合理的合并和拆分,从而达到降低成本的目的。对接收订单的货品的生产商以及货品的供应商信息进行详尽的纪录。订单的接收、处理要有相应的业务员信息。只有管理员登录之后才可以使用系统。默认的管理员不可以删除。可以对作废的、待生产的、正生产的、生产完成的订单进行分类查找,但不能进行修改、添加、删除等操作。当进行订单接收和处理操作后,能相应更新数据库更新。对所接收的订单进行数据分析,总结相应商品的订单服务。2. 经上述系统功能分析和需求总结,考虑其业务和功能的不断扩展,设计如下的数据项和数据结构:商品信息,包括的数据项有: 商品号,名称,规格,单价,描述。订单明细信息,包括的数据项有: 订单号,单位名称,商品号,商品名,规格,交货日期,数量,单价,签订日期。订单信息,包括的数据项有: 订单号,单位,操作员号,地址,签订日期,单价,数量,商品号,交货日期。业务员信息,包括的数据项有: 职工号,姓名,年龄,职称。客户信息,包括的数据项有:客户姓名,账号,地址,联系方式。 生产订单信息,包括的数据项有:生产商,商品名,数量,单价,账号,联系方式。供应商信息,包括的数据项有: 姓名,地址,电话号码,账号。3.数据流图订单管理系统数据流图如下: 在整个数据流图中,P1,P2,P3,P4分别是客户信息管理系统,产品信息管理系统,员工信息管理系统,供应商管理系统,我们这里只作简单处理。P5.1,P5.2,P5.3是订单管理系统的核心部分,P5.2审核系统是根据客户的信用情况,剔除一部分不合格的订单并触发修改订单明细,P5.3是根据供应商的供应能力等情况对订单明细进行拆分和合并处理,最终形成生产订单。4.数据字典(1)、数据项数据项描述=职工号,char(6),000000999999,前两个数字表示所属部门,中间两个数字表示工作起始年份;姓名,varchar(8);年龄,int(2),1865,职工的年龄必须大于18周岁且小于65周岁;商品号,char(14) ,由阿拉伯数字和英文小写字母组成;单位名称,varchar(10)单位号,char(10)(2)、数据结构数据结构描述=业务员信息,组成:职工号,姓名,年龄,职称;订单信息,组成:订单号,单位号,操作员号,地址,签订日期,单价,数量,交货日期;客户信息,组成:客户号,客户姓名,账号,地址,联系方式;(3)、数据流数据流描述=员工信息流,来源:人工录入,去向:员工信息表,组成:业务员信息;(4)、数据存储数据存储描述=订单明细,客户信息流,产品信息流,员工信息流,订单明细信息流,组成:业务员信息,商品信息,客户信息;(5)、处理过程处理过程描述=下单,输入:客户信息流,产品信息流,员工信息流,输出:订单明细信息流,处理:通过员工的操作,使显示具体的订单信息表和订单明细表;2、 概念模型设计订单管理系统E-R图如下:在这里,我们为了简化数据库,将订单管理设置为只处理一种商品,所以订单的拆分和合并联系分别是1:n 和n:1 。在订单明细中可以反映商品的供应者,在生产订单中可以显示每个供应商的供应量等信息。生产订单属性中的生产商号和供应商供应商号为异名同义,订单明细属性中的单位名称和客户信息属性的客户姓名为异名同义。三、逻辑模型设计职工信息表属性名数据类型可否为空备注职工号Char(6)否主键姓名Varchar(8)否年龄Int否职称Varchar否订单信息表属性名数据类型可否为空备注订单号Char(6)否主键单位姓名 Varchar(20)否外键地址Varchar(100)否商品单价Money否数量Int否签订日期Datetime否交货日期Datetime否操作员号Char(6)否外键商品号Varchar(10)否外键商品信息表属性名数据类型可否为空备注商品号Varchar(10)否主键名称Varchar(20)否单价Money否规格Varchar(20)否描述Varchar(50)可订单明细表属性名数据类型可否为空备注订单号Char(6)否外键商品号Char(10)否外键商品名Varchar(20)否单价Money否数量Int否签订日期Datetime否交货日期Datetime否单位名称Char(10)否外键规格Varchar(20)否生产商号Char(10)否外键生产订单信息表属性名数据类型可否为空备注生产商Varchar(20)否外键地址Varchar(100)否单价Money否账号Varchar(20)否联系方式Varchar(21)否供应量Int否订单号Char(6)否外键商品号Char(10)否外键供应商信息表属性名数据类型可否为空备注姓名Varchar(20)否主键地址Varchar(100)否电话号码Varchar(20)可账号Varchar(20)否客户信息表属性名数据类型可否为空备注客户姓名Varchar(20)否主键账号Varchar(20)否地址Varchar(100)否联系方式Varchar(20)否4、 物理模型设计(1) 、由于经常在查询条件中出现,所以决定在职工信息表中的职工号上建立唯一索引;(2) 、由于经常在连接操作的链接条件中出现,所以决定在订单信息表中的订 单号上建立唯一索引;(3) 、由于经常在查询条件中出现,所以决定在客户信息表中的客户姓名上建立唯一索引;(4) 、由于经常在查询条件中出现,所以决定在供应商信息表中的姓名上建立唯一索引;(5) 、由于经常在连接操作的链接条件中出现,所以决定在商品信息表中的商品号上建立唯一索引;5、 数据库实施和维护1、 创建数据库create database 订单管理系统2、 创建表创建职工信息表create table 职工信息表(职工号 char(6) not null primary key,姓名 Varchar(8) not null,年龄 Int not null,职称 Varchar(10) not null,)创建商品信息表create table 商品信息表(商品号 Varchar(10) not null primary key,名称 Varchar(20) not null,单价 Money not null,规格 Varchar(20) not null,描述 Varchar(50)创建供应商信息表create table 供应商信息表(姓名 Varchar(20) not null primary key,地址 Varchar(100) not null,电话号码 Varchar(20) not null,账号 Varchar(50) not null)创建客户信息表create table 客户信息表(客户姓名 Varchar(20) not null primary key,账号 Varchar(20) not null,地址 Varchar (100)not null,联系方式 Varchar(20) not null)创建订单信息表create table 订单信息表(订单号 char(6) not null primary key,地址 Varchar(100) not null,商品单价 Money not null,数量 int not null,签订日期 datetime not null,交货日期 datetime not null,单位 Varchar (20) foreign key references 客户信息表(客户姓名),操作员号 char(6) foreign key references 职工信息表(职工号),商品号 Varchar(10)foreign key references 商品信息表(商品号)创建订单明细表create table 订单明细表(订单号 char(6) not null foreign key references 订单信息表(订单号),商品号 Varchar(10) not null foreign key references 商品信息表(商品号),商品名 Varchar(20) not null,单价 Money not null,数量 int not null,签订日期 datetime not null,交货日期 datetime not null,单位 Varchar(20) foreign key references 客户信息表(客户姓名),规格 Varchar(20) not null,生产商 Varchar (20) foreign key references 供应商信息表(姓名)创建生产订单信息表create table 生产订单信息表(地址 Varchar (100) not null,单价 Money not null,账号 Varchar(20) not null,联系方式 Varchar(21) not null,供应量 int not null,生产商 Varchar(20) not null foreign key references 供应商信息表(姓名),订单号 char(6) not null foreign key references 订单信息表(订单号),商品号 Varchar(10) not null foreign key references 商品信息表(商品号)3、创建视图Create view 订单明细视图As select 订单号,单位,商品号,生产商From 订单明细表Create view 生产订单视图As select 生产商,订单号,商品号,供应量,联系方式From 生产订单表4、 创建索引在主键属性和外键属性列上都建立索引,检查唯一性和完整性,加快连接查询速度。Create unique index IX_职工号 on 职工信息表(职工号);Create unique index IX_订单号 on 订单信息表(订单号);Create unique index IX_客户姓名 on 客户信息表(客户姓名);Create unique index IX_姓名 on 供应商信息表(姓名);Create unique index IX_商品号 on 商品信息表(商品号);5、 表中数据操作1、给数据库赋值insert into 职工信息表values(070934,kimikong,24,操作员);insert into 职工信息表values(070317,massa,29,主管);insert into 职工信息表Values(040201,aloso,34,操作员)Insert Into 商品信息表Values (07031760,klmin,2000,长度172cm,重量60KG,畅销货啊);Insert Into 商品信息表Values(07031763,lljing,1500,长度165cm,体重70KG,有点胖胖);Insert Into 客户信息表Values(雷敬文,07031761,16-624,15869027542);Insert Into 客户信息表Values(李俊,07031764,16-610,1586902432);InsertInto 订单信息表Values(001,杭电16#624,2000,10,2009.09.15,2009.09.18,雷经文,070934,07031760)InsertInto 订单信息表Values(002,杭电16#625,1500,20,2009.09.14,2009.09.17,李俊,040201,07031763)InsertInto 订单明细表Values(001,07031760,klmin,2000,10,2009.09.15,2009.09.16,雷经文,长度172cm,重量60KG,老大)InsertInto 订单明细表Values(002,07031763,lljing,1500,20,2009.09.14,2009.09.17,李俊,长度165cm,重量70KG,老邱)InsertInto 生产订单信息表Values(杭电2,2000,166261,110转1,10,老大,001,07031760)InsertInto 生产订单信息表Values(杭电3,1500,166262,110转2,20,老邱,002,07031763)InsertIn耀 供应商信息表Values(老大,杭电2,110转1,166261)InsertInto 供应商信息表Values(老邱,杭电3,110转2,166262)2、其他操作把客户信息表中李俊的联系方式更正为15869023242update 客户信息表set 联系方式=15869023242where 客户姓名=李俊;员工因故辞职Delete from 职工信息表where 职工号=0703176、 使用表格操作1、查找所有职工的年龄,并按年龄大小进行排序select 职工号,姓名,年龄from 职工信息表order by 年龄2、 查找订单号为001的商品的描述select 订单号,a.商品号,名称,单价,描述from 订单信息表 as a,商品信息表 as bwhere 订单号=001 and b.商品号 = (select 商品号from 订单明细表where 订单号=001)3、 查找由供应商老大供应商的商品情况select 商品号,商品名,单价,规格,数量from 订单明细表where 生产商=老大4、 查找指定客户购买的商品的具体信息select 商品号,名称,单价,规格,描述from 商品信息表where 商品号=(select 商品号from 订单明细表where 单位=雷经文)7、 创建触发器,游标和存储过程 在订单明细表上建立触发器,实现在商品规格作出改变时,相应的订单明细信息也作出更正。 Use 订单管理系统 Go Create trigger tri_商品信息更新 on 订单明细表 For update As If rowcount=0 Return Update 商品信息表 Set 规格=(select 规格 from inserted) Where 规格=(select 规格 from deleted) If error!=0 Begin Rollback Return End Return Go在客户信息表建立游标,用游标和变量逐行输出客户姓名和联系方式declare name varchar(20),telephone varchar(20)declare cur_1 cursor for select 客户姓名,联系方式from 客户信息表for read onlyopen cur_1fetch from cur_1 into name,telephoneprint 客户姓名+name+联系方式+telephonewhile fetch_status=0beginfetch from cur_1 into name,telephoneprint 客户姓名+name+联系方式+telephoneendclose cur_1deallocate cur_1在数据库中创建一个存储过程,返回指定的生产订单信息create proc pro_生产订单信息生产商 Varchar(20),订单号 char(6),商品号 Varchar(10),单价 Money,供应量 int outputAs select 订单号,商品号,单价,供应量 from 生产订单信息表 where 生产商=老邱Go6、 总结通过这次数据库课程,我学到了不少。我发现考试题目会做根本不代表也会设计数据库系统,整个数据库系统最重要的环节是需求分析,只有把业务流程都理顺了之后才能做下面的环节。我们的课题外贸公司的订单管理,网上资料比较少,在老师的指导下,我们最终搞明白了订单管理的具体流程和板块。E-R图不是那么好画的,在设计的时候要考虑的因素,因为我们是第一次,在转换为逻辑模式和后面的数据库实施时,我们对E-R图作了一遍又一遍的修改,发现最后的图跟刚开始的图已经很不一样了。在整个数据库设计过程中,我们得到了陈老师细心的指导,尤其是前面需求分析和概念模型设计阶段,这对我们的成果非常重要。
展开阅读全文