综合性、设计性实验报告
实验课程名称  数  据  库  原  理   
专业 计算机科学与技术     班级 1102
学号 ************    姓名 朱晓强   
学号 ************    姓名 毛 威   
学号 ************    姓名 方 姣   
指导教师及职称      段华斌(讲师) 
开课学期 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.当进行了进货和销售操作后能及时更新相应的库存数量。
  经过上述分析,考虑到将来功能上的扩展,设计如下数据项:
1服装信息:商品编号、商品名称、颜、型号、进价、售价等。
2进货信息:进货单号、供应商编号、商品编号、数量、进货日期、总金额等。
3销售信息:销售单号、商品编号、销售日期、数量、折扣、盈利等。
4库存信息:商品编号、更新日期、数量等。
5退货信息:退货单号、销售单号、退货日期、退货原因等。
6供应商信息:供应商编号、供应商名称、地址、账号、开户银行、联系人等。
退货单
填入退货单
(2)数据流图
(3)
               
(3)概念结构设计
                M                1                1                1
          M
M
1
1
M
                             
1
                                     
          1
1
1
1
M
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图
M
M
                                            N
   
   
   
                  group by的用法及原理详解1   
                        M           
    1
1
                                       
1
   
                      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,
Reason char(30),
primary key(Rno, Sno),
foreign key(Sno) references Cloth(Sno)
)
--建立W表
create table W
(ID int primary key,
Wnum int,
Wdate float(20) not null,
foreign key(ID) references Cloth(ID)
)
--新增王五的信息
insert into Supplier
values(1002,'森马','岳阳',622202,'CBC','王五')
--查供应商王五的信息
select Linkman,Supplier,Address
from Supplier
where SupID = '1002'
--查询进价在以下的服装
select Name
from Cloth
where B_price <100
--创建视图
create view kc
as
select Wnum,Wdate
from W
where ID = '100'
--创建索引
create index fuzhuangming on Cloth(name,B_price)
--查看索引
sp_helpindex Cloth
--创建名为Start_sale的存储过程
if exists(select name from sysobjects
where name = 'Start_sale' and type = 'p')
drop proc Start_sale
create procedure Start_sale
as
select sno as 订单号,
ID as 服装号,
Discount as 折扣
from S
where Sdate = '20130618'       
--查看存储过程
exec Start_sale
--创建触发器
if exists(select name from sysobjects
where name = 'Start_delete' and type = 'TR')
drop proc Start_delete
create trigger Start_delete
on Supplier
instead of delete
as
  print  'instead of触发器开始执行'
  print '本表数据不允许删除'
delete from Supplier
where Linkman = '李四'
--统计进价大于五十的服装编号及进价,并按进价的降序排列
select ID,max(B_price) as B_price
from Cloth
group by ID
Having max(B_price)>50
order by B_price DESC
--若服装销量小于六件和大于十件则更改折扣信息
update S
set Discount = case when S.Snum<6 then S.Discount*0.9
                      when S.Snum>10 then S.Discount*1.1
                      else S.Discount*1
      end
--查询售价为的销售单号
select Sno
from S
where ID in(
select ID
from Cloth
where S_price ='120')
--查询牛仔裤卖了多少件
select Snum
from S
where ID in(
select ID
from Cloth
where name='牛仔裤')
9.实验总结
(主要对本实验开发过程进行归纳和总结,还应包括在设计过程中所遇到的技术难点及解决方法,尚存在的问题以及进一步开发的见解与建议。)
我们做的这个系统比较简单,是属于比较小的一个服装管理系统,很多功能还有待加强,它仅仅适用于小型商店。
刚开始的时候代码能执行成功,但结果总是运行不出来,后来才发现是忘记把它指定到当前数据库。在编程过程中,因为对group by 和 having不熟悉,所以总是出错,经过查课本和实验指导书才成功的实现了这个功能;还有对case语句的用法不太熟练以及对T-SQL语言不大熟悉,导致敲代码的速度较慢。
在这个系统中,可以扩展顾客信息以及职工信息,以适应于大型的服装店的销售管理;还可以扩展月盈利和年盈利,这样能使得系统更加完善,方便店主了解服装销售盈利情况。
10.参考文献
[1]段华斌,韦美燕,郭美珍编著.数据库原理实验指导.
[2]王珊,萨师煊编著.数据库系统概论(第四版)北京:高等教育出版社,2006
指导老师评语及得分:                                                 
                   
                                          签名:              年    月      日

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。