——货存控制系统6.1数据库设计概述㈠数据库设计的概念:数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
㈡数据库设计的特点1、数据库建设是硬件、软件和干件的结合:三分技术、七分管理、十二分基础数据,技术与管理的界面称之为干件。
2、数据库设计过程是结构设计和行为设计的密切结合:结构设计是设计数据库结构,行为设计是设计应用程序、事务处理等。
㈢数据库设计的方法1、手工试凑法:设计质量与设计人员的经验和水平有直接关系,缺乏科学理论和工程方法的支持,工程质量难保证。
2、规范设计法:基本思想是过程迭代和逐步求精。
㈣数据库设计的基本步骤准备工作:选定参加设计的人员。
⑴分析员:数据库设计的核心人员,自始至终参与数据库设计,其水平决定了数据库系统的质量。
⑵用户:主要参加需求分析和数据库的运行维护,用户的积极参与将加速数据库设计,提高数据库设计的质量。
⑶程序员:在系统实施阶段参与进来,负责编制程序。
⑷操作员:在系统实施阶段参与进来,准备软硬件环境。
㈤数据库设计的过程(六个阶段)1、需求分析阶段:准确了解与分析用户需求(包括数据与处理),是整个设计过程的基础,是最困难、最耗费时间的一步。
2、概念结构设计阶段:整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型3、逻辑结构设计阶段:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
4、数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5、数据库实施阶段:运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库、编制与调试应用程序、组织数据入库并进行试运行。
6、数据库运行和维护阶段:数据库应用系统经过试运行后即可投入正式运行,在运行过程中不断对其进行评价、调整与修改。
设计一个数据库应用系统往往是上述六个阶段的不断反复。
㈥数据库设计各阶段的模式形成:1、需求分析阶段:综合各个用户的应用需求。
2、概念设计阶段:形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)。
3、逻辑设计阶段:首先将E-R图转换成具体DBMS支持的数据模型,如关系模型,形成数据库逻辑模式;然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据的外模式。
4、物理设计阶段:根据DBMS特点和处理需要,进行物理存储安排,建立索引,形成数据库内模式。
一、课程设计题目:货存管理系统一个公司希望为控制它的货存建立一个数据库,货存中的产品被分为几类,如服装、食品和文具。
当产品需要从供应商那里重新订购时,工作人员需要提出一个购买订单。
跟踪记录要提供买进、卖出的货物以及其他的费用。
实验课程任务与要求目的与任务:1. 掌握数据库设计和实现的基本过程2. 掌握数据库模式设计、分析和实现的方法3. 了解数据库应用系统软件开发的一般过程。
实验基本要求:(1)学习相关的预备知识(2)按照数据库设计与实现过程完成数据库的设计,应用程序的开发,上机调试、运行(3)写出课程设计报告二、功能需求分析:根据系统要求分析,本系统功能如下:用户管理:添加用户,修改用户密码。
客户管理:添加客户,查询客户信息。
供应商管理:添加供应商,查询供应商信息。
仓库管理:添加仓库,查询仓库信息。
货物管理:添加物品信息,物品类型信息。
入库管理:货物的入库信息的添加和修改。
出库管理:货物的出库信息的添加和修改。
1、CREATE TRIGGER Tr_入库表 ON 入库表after insert,update,deleteASbeginupdate a set a.库存数量=a.库存数量 +b.入库数量from 零件信息表 a,(select 零件号,sum(入库数量) 入库数量 from inserted group by 零件号 ) b --如果每次插入时零件号不重复,则不必聚合where a.零件号 =b.零件号;goupdate a set a.库存数量=a.库存数量 -b.入库数量from 零件信息表 a,(select 零件号,sum(入库数量) 入库数量 from deleted group by 零件号 ) b --如果每次插入时零件号不重复,则不必聚合where a.零件号 =b.零件号;goend2、CREATE TRIGGER Tr_出库表 ON 出库表after insert,update,deleteASbeginupdate a set a.库存数量=a.库存数量 -b.出库数量from 零件信息表 a,(select 零件号,sum(出库数量) 出库数量 from inserted group by 零件号 ) b --如果每次插入时零件号不重复,则不必聚合where a.零件号 =b.零件号;goupdate a set a.库存数量=a.库存数量 +b.出库数量from 零件信息表 a,(select 零件号,sum(出库数量) 出库数量 from deleted group by 零件号 ) b --如果每次插入时零件号不重复,则不必聚合where a.零件号 =b.零件号;goend库存信息:对货物的现有信息存量查询。
三、数据库概念设计:本实例根据根据上面的设计规划出的实体有仓库实体、客户实体、供应商实体、管理员实体、货物实体、货物类型实体、入库实体、出库实体、库存实体。
各个实体的E-R图描述如下:仓库实体E-R图供应商实体E-R图客户实体E-R图管理员实体E-R图货物实体E-R图货物类型实体E-R图入库实体E-R图出库实体E-R图库存实体E-R图整体E-R图如下所示:四、数据库逻辑设计:关系数据库的数据模型(即关系模型)由一组关系模式组成,因而ER图向关系模型的转换实际上就是将实体(包括实体的属性)和联系转换为关系模式,一般遵循以下基本原则:1. 一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
2. 一个1:X(X为1或n)联系通常与某一端的关系模式合并,其中1:n的联系需要与n端对应的关系模式合并。
需要在合并的关系模式的属性中加入另一个关系模式的码和联系本身的属性。
3. 一个m:n联系转换为一个关系模式。
与该关系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
4. 三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体的码的组合。
5. 具有相同码的关系模式可合并。
使用SQL server 2000企业管理器建立数据库和表(也可使用SQL语句建立数据库)。
数据库包括:1.仓库的数据项描述: Storage数据项名对应英文名数据项含义类型长度说明仓库编号Sno仓库的编号char5主键2.供应商的数据项描述:Provider3.客户的数据项描述:Client4.货物的数据项描述:Goods5.货物类型的数据项描述:Type6.管理员的数据项描述:Manager7.库存的数据项描述: Stock8.入库的数据项描述:Stock_In9.出库的数据项描述:Stock_Out五、系统开发1. 数据库建立Create database storage_manage;供应商 Providercreate table Provider( Pno char(5) primary key, Pname char(20),Padddr char(40), Postcode char(6),Ptel char(11));客户 Clientcreate table Client( Cno char(5) primary key, Cname char(20),Caddr char(40),Ctel char(11));货物类型 Typecreate table Type(Tno char(5) primary key, Tname char(20), Tdescription char(50) );货物 Goodscreate table Goods(Gno char(5) primary key,Gname char(20),Tno char(5),foreign key(Tno) references Type(Tno));管理员 Managercreate table Manager( Mno char(5) primary key, Mname char(20),PW char(6));仓库 Storagecreate table Storage( Sno char(5) primary key, Sname char(20),Saddr char(40),Mno char(5),Ssize int,foreign key(Mno) references Manager(Mno) );库存 Stockcreate table Stock(Gno char(5),Sno char(5),Gname char(10),Tname char(20),Gnum int,primary key(Gno),foreign key(Gno) references Goods(Gno), foreign key(Sno) references Storage(Sno) );入库 Stock_Increate table Stock_In(Gno char(5),Pno char(5),Gname char(10),Tname char(20),Ginprice real,Innum int,Inprice real,Indata char(20),primary key(Gno,Pno),foreign key(Gno) references Goods(Gno), foreign key(Pno) references Provider(Pno) );出库 Stock_Outcreate table Stock_Out(Gno char(5),Cno char(5),Gname char(10),Tname char(20),Goutprice real,Outnum int,Outprice real,Outdata char(20),primary key(Gno,Cno),foreign key(Gno) references Goods(Gno),foreign key(Cno) references Client(Cno));六、总结:本次课程设计虽然经历了许多困难,但是也学到了很多东西,觉得还是很有收获。