综合性、设计性实验报告
实验课程名称 数 据 库 原 理
专业 计算机科学与技术 班级 1102
学号 201108001202 姓名 朱晓强
学号 201108001212 姓名 毛 威
学号 201108001218 姓名 方 姣
指导教师及职称 段华斌(讲师)
开课学期 2012 至 2013 学年 第二 学期
设计时间 2013年6月6日~2013年6月18日
湖南科技学院教务处编印
设计题目 服装销售管理系统的后台数据库设计
1. 实验目的:
本课程设计的目的是为了让学生能够全面了解数据库应用系统的整个开发过程,逐步掌握系统开发的以下相关技术:
(1)巩固数据库理论知识,熟悉一种具体的数据库管理系统(例如:SQL Server)的使用方法。
(2)掌握针对特定应用环境数据库的设计。
(3)综合使用SQL Server中数据库、表、视图、索引、触发器、存储过程的创建使用方法。
(4)体会运用软件工程的设计思想进行软件系统开发的过程与方法。
2. 软硬件环境:
软件环境:Microfoft SQL Server 2005;Windows 7;
硬件环境:2GB内存;Intel pentiue B950;32位操作系统
3. 实验设计简述:
服装管理系统主要是用于店主管理服装的销售情况。
其中包括进货信息、销售信息、退货信息及库存信息
此系统可以帮助店主统计服装的销售数量,便于店主查询服装销售情况、库存情况及服装所存在的问题,从而看出本季服装走向、哪款颜色销售得更火,便于进货。 4. 系统需求分析与功能设计(根据课题的要求进行简单的需求分析,设计相应的数据流图,得出相应的系统功能需要, 系统数据流图)
(1)系统需求分析:
针对服装销售管理系统,分别对进货、销售、库存管理的任务和功能进行分析,总结如下的需求信息:
1. 商品按类别管理,同一个大的类别还可以细分。
2. 需要记录供应商的详细信息。
3. 在涉及商品数量的地方,要给出相应的单位。
4. 在进货信息中要包括商品供应商等信息。
5. 商品销售信息单中要登记商品销售数量、单价、折扣比例等信息。
6. 每一条进货、销售、库存等信息都要对应一张单据。
7. 当进行了进货和销售操作后能及时更新相应的库存数量。
经过上述分析,考虑到将来功能上的扩展,设计如下数据项:
① 服装信息:商品编号、商品名称、颜色、型号、进价、售价等。
② 进货信息:进货单号、供应商编号、商品编号、数量、进货日期、总金额等。
③ 销售信息:销售单号、商品编号、销售日期、数量、折扣、盈利等。
④ 库存信息:商品编号、更新日期、数量等。
⑤ 退货信息:退货单号、销售单号、退货日期、退货原因等。
⑥ 供应商信息:供应商编号、供应商名称、地址、账号、开户银行、联系人等。
(2)数据流图
(3)概念结构设计
M 1 1 1
M
1
店主
库存信息 顾客
店主 1 M 1
M 顾客 确认 发送 销售单 销售明细
发送
出货单 提货
查询
发送 供应单 服 装
进货信息 确认 发送 供应单 进货单 1 M
1 1 1 M 5. 概念模型设计 (按数据库设计方法和规范化理论,从实践概括抽象出ER模型)
1、局部E-R图:
根椐关系模型,在SQL数据库中建立数据表和数据表之间的关系如下:
(1)进货信息
图1.进货信息表E-R图
(2)销售信息
图2.销售作息表E-R图
(3)退货信息
图3.退货信息表E-R图
(4)库存信息
图4.库存信息表E-R图
(5)服装信息
图5.服装信息表E-R图
(6)供应商信息
图6.供应商表E-R图
2、全局E-R图
N
1
M 1
1
M 退货日期
退货原因 退货单号 销售单号 销售信息
商品编号
销售单号 折扣 数量 销售日期 进货信息 总金额 数量
商品编号
进货单号
供应商编号 进货日期
库存信息
数量
更新日期 商品编号 退货信息
服装信息
商品名称 商品编号 颜色 型号 进价 售价
供应商信息
供应商编号
地址 账号 联系人 供应商名称
开户银行
选择 进货信息
进货日期 进货单号
商品编号 数量 总金额 供应商编号
售价 商品名称
服装信息 进价 库存信息 数量 更新日期
商品编号 供应商编号 地址 账号 联系人
供应商名称 开户银行
供应商信息
选择 选择
1 1 M M 6.逻辑模型设计(按数据库设计方法和规范化理论得出符合3NF的逻辑模型, ER图设计,ER图转化为相应的关系模式,设计数据库的逻辑模型)
通过E-R模型到关系模型的转化,可以得到如下关系模式:
(1)供应商实体集转换为 关系:Supplier(SupID, Supplier,Address,Account,Bank,Linkman)
(2)服装实体集转换为 关系:Cloth(ID, Name,Color,Size,B_prise,S_prise)
(3)销售联系关系转换为 关系:S(Sno ,ID, Discount, Snum, Sdate)
(4)进货联系关系转换为 关系:B(Bno ,ID, Bnum, SupID , Money ,Bdate)
(5)退货联系关系转换为 关系:R(Rno, Sno, Sdate,Rdate ,Resion,)
(6)库存实体集转换为 关系:W(ID, Wdate, Wnum)
每个关系模式的主键码都用下划线标出。
同时,从联系导出的关系sell(销售),buy(进货),return(退货),使用与之相联系的实体集的主键码作为自己的键码,必须符合外键码约束。
对于supplier(供应商),cloth(服装)和warehouse(库存)之间,不存在直接约束,所以可以存在没有供应商供应的服装。
7.物理模型设计(存储记录结构设计,物理文件的安排和建立索引)
1、存储记录结构设计
Supplier表(供应商信息:供应商编号、供应商名称、地址、账号、开户银行、联系人)
列名 类型 长度 约束
SupID Int Primary key
Supplier Char 20
Address Char 20
Account int
Bank Char 20
Linkman Char 20
Cloth表(服装信息:商品编号、商品名称、颜色、型号、进价、售价)
列名 类型 长度 约束
ID Int Primary key
Name Char 20 Not null
Color Char 20
Size Char 10
B_price Int Default 0
S_price Int Default 0
S表(销售信息:销售单号、商品编号、数量、折扣、销售日期)
列名 类型 长度 约束
Sno Int Primary key
ID Int Foreign key(Cloth)
Discount Int
Snum Int
Sdate Float 20 Not null
B表(进货信息:进货单号、商品编号、数量、供应商编号、总金额、进货日期)
列名 类型 长度 约束
Bno Int Primary key
ID Int Foreign key(Cloth)
Bnum Int
SupID Int Foreign key(Supplier) Money Int
Bdate Float 20 Not null
R表(退货信息:退货单号、销售单号、退货日期、退货原因)
列名 类型 长度 约束
Rno Int Primary key
Sno Int Foreign key(Cloth)
Rdate Float 20 Not null
Reason Char
W表(库存信息:商品编号、数量、更新日期)
列名 类型 长度 约束
ID Int Primary key
Wnum Int
Wdate Float 20 Not null
2、为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是各表中建立索引的表项:
(1)Supplier(SupID)
(2)Cloth(ID)
(3)S(Sno ,ID)
(4)B(Bno ,ID,SupID)
(5)R(Rno, Sno)
(6)W(ID) 8.实现(数据库结构设计的程序代码,基本操作的程序代码)
--建立数据库
create database ClothSale
--建立Supplier表
create table Supplier
(SupID int primary key,
Supplier char(20),
Address char(20),
Account int,
Bank char(20),
Linkman char(20)
)
--建立Cloth表
create table Cloth
(ID int primary key,
Name char(20) not null,
Color char(20),
size char(10),
B_price int default 0,
S_price int default 0
)
--建立S表
create table S
(Sno int,
ID int,
Discount float,
Snum int,
Sdate float(20) not null,
primary key(Sno,ID),
foreign key(ID) references Cloth(ID)
)
--建立B表
create table B
(Bno int,
ID int,
SupID int,
Bnum int,
Money int,
Bdate float(20) not null,
primary key(Bno,ID,SupID),
foreign key(ID) references Cloth(ID),
foreign key(SupID) references Supplier(SupID),
)
--建立R表
create table R
(Rno int,
Sno int,
Rdate float(20) not null,