资源描述
长沙 学 院课程设计指导书课程设计名称 数据库系统原理课程设计系 (部) 计算机科学与技术 (盖章)专 业 计算机科学与技术 班 级 计四 2010年 06 月 17 日 长沙学院课程设计鉴定表姓名阳锟学号专业计科班级班设计题目工厂数据库管理系统指导教师朱永娇指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;课程设计任务书课程名称:数据库系统原理设计题目:工厂数据库管理系统已知技术参数和设计要求:需求说明及要求题目:工厂数据库管理系统(难度系数1.4)某工厂需建立一个管理数据库存储以下信息:1、 工厂包括厂名和厂长名。2、 一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。3、 一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。4、 一个车间生产多种产品,产品有产品号、产品名称和价格。5、 一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。6、 一个产品由多种零件组成,一种零件也可装配出多种产品。7、 产品与零件均存入仓库中。8、 厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。各阶段具体要求:1、需求分析阶段l 定义数据项的含义和取值2、概念结构设计阶段l 画出实体模型E-R图3、逻辑结构设计阶段l 将实体模型转化为关系模型l 给出每个关系的主关键字和函数依赖集l 分析你所设计的关系数据库模式是否属于3NF4、物理设计阶段l 确定所有字段的名称、类型、宽度、小数位数及完整性约束 l 确定数据库及表的名称及其组成 l 确定索引文件和索引关键字5、数据库安全及维护设计阶段l 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)6、实施阶段l 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。设计工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。工作计划:安排两周时间进行课程设计,软件开发步骤如下,第一周完成14,第二周完成58,论文同步进行;1)分组,定题目2)需求分析3)概念结构设计4)逻辑结构设计5)物理设计6)数据库安全及维护设计7)数据库上机实现8)答辩计划时间指导老师学生第15周16周朱永娇阳锟朱永娇阳锟朱永娇阳锟朱永娇阳锟注意事项n 提交文档 长沙学院课程设计任务书(每学生1份) 长沙学院课程设计论文(每学生1份) 长沙学院课程设计鉴定表(每学生1份)指导教师签名: 日期: 教研室主任签名: 日期:系主任签名: 日期:摘 要在计算机日益普及的今天,对个人而言若采用一套行之有效的工厂管理系统来管理生产,会方便许多。对工厂管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到高效的管理效率。为了便于工厂产品和职工的管理,需要有效的工厂管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高产品生产信息管理效率的目的。采用数据库技术生成的工厂管理系统将会极大地方便了工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。基于这个问题,开发了工厂数据库管理系统。本文通过作者设计和开发一个中小型工厂管理系统的实践,阐述了工厂数据库管理软件中所应具有的基本功能、设计、实现。分别从设备管理和用户管理等角度进行处理,并对需求分析、概念设计、逻辑设计、物理设计、数据库实施和维护进行了阐述,实行设备管理的计算机自动化。关键字:工厂数据库 职工管理 生产管理 目录1. 本论文的目标与任务12. 数据库设计1 2.1 需求分析阶段1 2.2 概念设计阶段2 2.3 逻辑设计阶段3 2.4 物理设计阶段3 2.5 数据库安全及维护设计5 2.6 数据库实施阶段6 2.6.1建立数据库、数据表、索引6 2.6.2数据入库93.系统调试和测试164.课程设计总结21参考文献221本论文的目标与任务建立一个某工厂管理数据库存储以下信息:1、 工厂包括厂名和厂长名。2、 一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。3、 一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。4、 一个车间生产多种产品,产品有产品号、产品名称和价格。5、 一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。6、 一个产品由多种零件组成,一种零件也可装配出多种产品。7、 产品与零件均存入仓库中。8、 厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。针对各工厂信息管理情况,设计出适合它们的计算机辅助工厂数据库管理系统。实现对工厂产品和职工基本信息进行计算机辅助管理,完成有关信息的记录、修改、查询、删除等一系列任务的计算机管理与实现。系统有对产品、零件、车间和职工等信息的管理,其功能是实现对各部分数据内容进行添加、修改、查询等操作。 2数据库设计2.1需求分析阶段(1)对象处理:工厂信息:厂名、厂长名。车间信息:车间号、车间主任姓名、地址和电话。职工信息:职工号、姓名、年龄、性别和工种。产品信息:产品号、产品名称和价格。零件信息:零件号、重量和价格。仓库信息:仓库号、仓库主任姓名和电话。(2)功能及要求:能对一定量的工厂信息进行管理,主要包括:存储管理工厂信息,修改和查询工厂信息以及管理职工和工作人员信息。系统安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过用户授权机制,通过用户登陆来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。近而可以满足用户的基本数据安全性要求。完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以不取值。根据实际需要,采取一定的手段来满足用户的完整性需求。 -1- (3)数据结构 表2.1数据结构名数据结构含义组成 fac 工厂基本信息Fname, fn_name room 车间基本信息Rno Rname Raddr Rcall worker 工人基本信息Wno Wname Wage Wsex Wtype product 产品基本信息Pno Pname Price component 零件基本信息Cno weigt Price store 仓库基本信息Sno Sname Scall2.2 概念设计阶段(1)实体通过对上面的系统总体分析,可以得到大概的实体-关系模型(E-R模型),如下:工厂:厂名,厂长名工人:职工号,姓名,性别,年龄,工种 车间:车间号,车间主任姓名,地址,电话产品:产品号,价格,产品名 零件:零件号,价格,重量仓库:仓库号,仓库主任姓名,电话(2)由各子E-R合并得到的基本E-R如下图所示:图2.1-2-2.3逻辑结构设计根据上面的数据库ER图,现在需要将上面的数据库概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合 逻辑结构设计的任务是将概念结构设计的E-R图,转化为与选用的DBMS所支持的数据模型相符的逻辑结构,形成逻辑模型。工厂(厂名, 厂长名)车间(车间号,车间主任姓名,地址,电话)工人(职工号,姓名,年龄,性别,工种)产品(产品号,产品名称,价格)零件(零件号,重量,价格)仓库(仓库号,仓库主任姓名,电话)生产(车间号,零件号,生产日期)组装(产品号,零件号,组装数)存入(仓库号, 产品号,零件号,存储量)2.4 物理结构设计操作环境 windows 2KS ,SQL 2000数据库系统.确定数据库及表的名称及其组成:建立数据库create database factory,数据库名称factory(工厂数据库)数据说明处理: store(仓库)fac(工厂),room(车间)worker(工人), -3- product(产品),component(零件),room_com(零件与车间的联系)pro_com(零件与产品的联系),com_str(零件与仓库的联系)pro_str(产品与仓库的联系);基本表的组成: 表2.1 基本表数据结构含义组成 fac 工厂基本信息Fname, fn_name room 车间基本信息Rno ,Rname, Raddr, Rcall worker 工人基本信息Wno,Wname,Wage,Wsex,Wtype product 产品基本信息Pno, Pname, Price component 零件基本信息Cno, weigt, Price store 仓库基本信息Sno, Sname, Scall room_com 零件与车间的联系Rno, Cno,Stime pro_com 零件与产品的联系Pno, Cno, number com_str 零件与仓库的联系Cno, Sno, Strnum1 pro_str 产品与仓库的联系Pno, Sno, Strnum2工厂表 表2.2 列名数据类型能否空值默认值键/索引说明fnamevarchar(20)否主键、索引厂名fn_namevarchar(20)否厂长名车间表 表2.3 列名数据类型能否空值默认值键/索引说明Rno varchar(10)否主键、索引 车间号Rname varchar(20)否车间主任姓名Raddr varchar(20)否 车间地址Rcall int否 电话零件表 表2.4 列名数据类型能否空值默认值键/索引说明Cno varchar(10)否主键、索引零件号weight int否重量Pricenumeric(5,1) 否价格工人表 表2.5 列名数据类型能否空值默认值键/索引说明Wno varchar(10)否主键、索引 职工号Wname varchar(20)否 姓名Wage int否年龄Wsex varchar(2)否性别Wtype varchar(20)否 工种 产品表 表2.6 列名数据类型能否空值默认值键/索引 说明Pno varchar(10)否主键、索引产品号Pname varchar(20)否产品名称Pricenumeric(5,1) 否价格 -4-仓库表 表2.7 列名数据类型能否空值默认值键/索引说明Sno varchar(10)否主键、索引仓库号Sname varchar(20)否仓库主任姓名Scall int否仓库电话生产表 表2.8 列名数据类型能否空值默认值键/索引说明Rnovarchar(10)否主键车间号 Cnovarchar(10)否主键零件号 Stimedatetime否生产日期组装表 表2.9 列名数据类型能否空值默认值键/索引说明 Pnovarchar(10)否主键产品号 Cnovarchar(10)否主键零件号 numberint否组装数存放表 表2.10 列名数据类型能否空值默认值键/索引说明 Snovarchar(10)否主键仓库号 Cnovarchar(10)否主键零件号 Pnovarchar(10)否主键产品号 Strnum1Int否零件存放量 Strnum2int否产品存放量建立索引:索引中记录了表中的关键值,提供了指向表中行的指针。它既可以在定义表时创建,也可以在定义表之后的任何时候创建。索引可以创建在一个列或多个列的组合上。(1)、在车间信息表车间号列上创建索引create index roomRno on room(Rno)(2)、在车间信息表的车间主任姓名列上创建索引create index roomRname on room(Rname)为数据库中各基本表建立的索引如下:由于有的基本表经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;2.5 数据库安全及维护设计(1)在数据库fac中添加新用户xcm.use factoryexec sp_grantdbaccess yangkun,xcm(2)创建登录名,添加角色exec sp_addlogin yangkun ,1234,factoryexec sp_addsrvrolemember yangkun ,sysadmin -5-(3)授权与基本表grant select,updateon productto xcm;grant all privileges on workerto xcm;grant all privileges on componentto xcm;grant all privileges on storeto xcm;grant all privileges on roomto xcm;(4)创建视图create view IS_storeasselect Sno,Sname,Scallfrom storecreate view IS_workerasselect Wno,Wname,Wsexfrom workerwhere Wsex=女create view IS_productasselect Pno,Pname,Pricefrom productwhere Pno=12.6 数据库实施阶段2.6.1建立数据库、数据表、索引 -6-(1)建立数据库create database factoryon primary(name=factory_data,filename=d:cxmfactory.mdf,size=50MB,maxsize=70MB,filegrowth=1MB)log on(name=factory_log,filename=d:cxmfactory.ldf,size=10MB,maxsize=15MB,filegrowth=1MB)(2)创建基本表创建工厂表create table fac(fname varchar(20) primary key, fn_name varchar(20) not null, );创建车间表create table room(Rno varchar(10)primary key,Rname varchar(20),Rcall int,Raddr varchar(20),fname varchar(20)not null,foreign key(fname)references fac(fname);创建工人表create table worker(Wno varchar(10) primary key,Wname varchar(20),Wage int,Wsex varchar(2) check(Wsex in (男 , 女),Wtype varchar(20),Rno varchar(10)not null,foreign key(Rno)references room(Rno); -7-创建产品表create table product(Pno varchar(10)primary key,Pname varchar(20),Price numeric(5,1) default 0,check(Price0),Rno varchar(10)not null,foreign key(Rno)references room(Rno);创建零件表create table component(Cno varchar(10)primary key,Price numeric(5,1)default 0,check(Price0),weight int);创建仓库表create table store(Sno varchar(10)primary key,Sname varchar(20),Scall int,fname varchar(20)not null,foreign key(fname)references fac(fname);创建生产表create table room_com(Rno varchar(10) not null, Cno varchar(10) not null,Stime datetime, primary key(Rno,Cno), foreign key(Rno)references room(Rno), foreign key(Cno)references component(Cno);创建组装表create table pro_com(Cno varchar(10) not null,Pno varchar(10) not null,number int, primary key(Pno,Cno), foreign key(Pno)references product(Pno), foreign key(Cno)references component(Cno); -8-创建存放表1create table pro_str(Pno varchar(10) not null, Sno varchar(10) not null,Strnum1 int, primary key(Pno,Sno), foreign key(Pno)references product(Pno), foreign key(Sno)references store(Sno);创建存放表2create table com_str(Cno varchar(10) not null, Sno varchar(10) not null,Strnum2 int, primary key(Cno,Sno), foreign key(Cno)references component(Cno), foreign key(Sno)references store(Sno);(3)创建索引create index roomRno on room(Rno)create index roomRname on room(Rname)create index proPno on product(Pno)create index facfneme on fac(fname)create index comCno on component(Cno)create index strSno on store(Sno)2.6.2数据入库(1)存储过程create proc worker(Wno varchar(10),Wname varchar(20),Wage int,Wsex varchar(2),Wtype varchar(20),Rno varchar(10)asinsert into workervalues(Wno,Wname,Wage,Wsex,Wtype,Rno); -9-create proc room(Rno varchar(10),Rname varchar(20),Rcall int,Raddr char(8),fname varchar(20)asinsert into roomvalues(Rno, Rname,Rcall,Raddr,fname);create proc product1(Pno varchar(10),Pname varchar(20),Price numeric(5,1),Rno varchar(10)asinsert into productvalues(Pno,Pname,Price,Rno);create proc component1(Cno varchar(10),Price float,weight float,)asinsert into componentvalues(Cno,Price,weight);create proc store1(Sno varchar(10),Sname varchar(20),Scall int,fname varchar(20)asinsert -10-into storevalues(Sno,Sname,Scall,fname);create proc fac1(fname varchar(20),fn_name varchar(20)asinsert into facvalues(fname,fn_name );create proc room_com1(Rno varchar(10),Cno varchar(10),stime datetime)asinsert into room_comvalues(Rno,Cno,stime);create proc pro_com1(Cno varchar(10),Pno varchar(10),number int)asinsert into pro_comvalues(Cno,Pno,number);create proc pro_str1(Pno varchar(10),Sno varchar(10),Strnum1 int)asinsert into pro_strvalues(Pno,Sno,Strnum1); -11-create proc com_str1(Cno varchar(10),Sno varchar(10),Strnum2 int)asinsert into com_strvalues(Cno,Sno,Strnum2);(2)存储数据execfac1fname=奔驰 ,fn_name=张磊execroom1Rno=1,Rname=刘基,Rcall=,Raddr=长沙,fname=奔驰execroom1Rno=2,Rname=刘择机,Rcall=,Raddr=株洲,fname=奔驰execworker1Wno=102,Wname=刘雄峰 ,Wage=40 ,Wsex=男 ,Wtype=搬运工,Rno=1 execworker1 -12-Wno=103,Wname=刘芸 ,Wage=21 ,Wsex=女 ,Wtype=经理,Rno=2 execworker1Wno=101,Wname=郑凡 ,Wage=21 ,Wsex=女 ,Wtype=前台接待,Rno=1 execworker1Wno=104,Wname=黄晓明 ,Wage=27 ,Wsex=男 ,Wtype=技术人员,Rno=2 execproduct1Pno=201 ,Pname=轮胎 ,Price=500,Rno=1 exec product1Pno=202 ,Pname=引擎 ,Price=9584.1,Rno=2 exec product1Pno=203 ,Pname=挡风玻璃 , -13-Price=1584.1,Rno=1 execproduct1Pno=204 ,Pname=奔驰摩托 ,Price=9999.9,Rno=1exec product1Pno=205 ,Pname=奔驰货车 ,Price=9999.0,Rno=2execcomponent1Cno=c1002 ,Price=6520 ,weight=200 execcomponent1Cno=c1001 ,Price=520 ,weight=10 execcomponent1Cno=c1003 ,Price=925 ,weight=150 execcomponent1Cno=c1004 ,Price=654 ,weight=100 execstore1 -14-Sno=101 ,Sname=刘羽琦 ,Scall= ,fname=奔驰execstore1Sno=102 ,Sname=吉鹏 ,Scall= ,fname=奔驰execroom_com1Rno=1 ,Cno=c1002,stime=2009-05-26execroom_com1Rno=2 ,Cno=c1003,stime=2009-06-01execpro_com1Cno=c1002,Pno=204,number=45execpro_com1Cno=c1004,Pno=201,number=89execpro_com1Cno=c1001,Pno=202,number=124exec -15-pro_str1Pno=201 ,Sno=101 ,Strnum1=345exec pro_str1Pno=203 ,Sno=102 ,Strnum1=1254execcom_str1Cno=c1001,Sno=102,Strnum2=458execcom_str1Cno=c1004,Sno=101,Strnum2=1461execcom_str1Cno=c1002,Sno=101,Strnum2=1852execcom_str1Cno=c1003,Sno=102,Strnum2=25413.系统调试和测试工厂表 表3.1 车间表 表3.2 -16- 零件表 表3.3 产品表 表3.4 工人表 表3.5 仓库表 表3.6存放表 表3.7存放表 表3.8组装表 -17- 表3.9生产表 表3.10插入零件号=c1005结果截图insert into component(Cno,price,weight)values(c1005,98,695) 表3.11查询产品信息select Pno,Pname,Pricefrom product 表3.12查在长沙生产地产品名称和产品价格select Pname,Pricefrom product,roomwhere product.Rno=room.Rno and room.Raddr=长沙 表3.13 -18-把产品号为203的产品改成车头update productset Pname=车头where Pno=203 表3.14查询价格大于2000.0元产品的信息select *from productwhere Price2000.0 表3.15删除零件号为c1005的零件信息deletefrom componentwhere Cno=c1005 表3.16把重量大于100的零件的价格改成65689.1update componentset Price=5689.1where weight100 表3.17 -19-创建用户use factoryexec sp_grantdbaccess yangkun,xcm 图3.1创建的视图 图3.2 -20- 图3.3 图3.64.课程设计总结这次课程设计加深了我对数据库系统概论相关知识和SQL SERVER相关功能的理解。例如对建立基本表、视图、索引等,都比以前更加的熟练。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在导入导出数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。另外我还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。有时候,我自己觉得我写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙了才向专家请教。尽管向专家请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立的思考对我的学习提高帮助非常大。由于我的知识浅薄,经验不足及阅历颇浅,在设计的过程中也存在一些问题。比如需求分析阶段的工作完成的不是很充分,在后面的设计过程中,前后时常会出现矛盾,不一致现象,因此要反复的修改前面的结果,导致整个工作进行的不是很顺利。另外比如功能过少等问题,我会在工作的使用过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。 -21-参考文献:1 萨师煊,王珊,数据库系统概论(第四版). 北京:高等教育出版社,2008 -22-
展开阅读全文