当前位置:文档之家› (工厂管理)数据库课程设计工厂数据库

(工厂管理)数据库课程设计工厂数据库

(工厂管理)数据库课程设计工厂数据库-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN长沙学院课程设计指导书课程设计名称数据库系统原理课程设计系(部)计算机科学与技术(盖章)专业计算机科学与技术班级计四2010年 06 月 17 日课程设计任务书课程名称:数据库系统原理设计题目:工厂数据库管理系统已知技术参数和设计要求:需求说明及要求题目:工厂数据库管理系统(难度系数)某工厂需建立一个管理数据库存储以下信息:1、工厂包括厂名和厂长名。

2、一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。

3、一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。

4、一个车间生产多种产品,产品有产品号、产品名称和价格。

5、一个车间生产多种零件,一个零件也可能为多个车间制造。

零件有零件号、重量和价格。

6、一个产品由多种零件组成,一种零件也可装配出多种产品。

7、产品与零件均存入仓库中。

8、厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。

各阶段具体要求:1、需求分析阶段定义数据项的含义和取值2、概念结构设计阶段画出实体模型E-R图3、逻辑结构设计阶段将实体模型转化为关系模型给出每个关系的主关键字和函数依赖集分析你所设计的关系数据库模式是否属于3NF4、物理设计阶段确定所有字段的名称、类型、宽度、小数位数及完整性约束确定数据库及表的名称及其组成确定索引文件和索引关键字5、数据库安全及维护设计阶段设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)6、实施阶段要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。

设计工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。

(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。

工作计划:安排两周时间进行课程设计,软件开发步骤如下,第一周完成1~4,第二周完成5~8,论文同步进行;1) 分组,定题目2) 需求分析3) 概念结构设计4) 逻辑结构设计5) 物理设计6) 数据库安全及维护设计7) 数据库上机实现8) 答辩计划时间指导老师学生第15周~16周朱永娇阳锟朱永娇阳锟朱永娇阳锟朱永娇阳锟注意事项提交文档长沙学院课程设计任务书(每学生1份)长沙学院课程设计论文(每学生1份)长沙学院课程设计鉴定表(每学生1份)指导教师签名:日期:教研室主任签名:日期:系主任签名:日期:摘要在计算机日益普及的今天,对个人而言若采用一套行之有效的工厂管理系统来管理生产,会方便许多。

对工厂管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到高效的管理效率。

为了便于工厂产品和职工的管理,需要有效的工厂管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高产品生产信息管理效率的目的。

采用数据库技术生成的工厂管理系统将会极大地方便了工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。

基于这个问题,开发了工厂数据库管理系统。

本文通过作者设计和开发一个中小型工厂管理系统的实践,阐述了工厂数据库管理软件中所应具有的基本功能、设计、实现。

分别从设备管理和用户管理等角度进行处理,并对需求分析、概念设计、逻辑设计、物理设计、数据库实施和维护进行了阐述,实行设备管理的计算机自动化。

关键字:工厂数据库职工管理生产管理目录1. 本论文的目标与任务 (1)2. 数据库设计 (1)需求分析阶段 (1)概念设计阶段 (2)逻辑设计阶段 (3)物理设计阶段 (3)数据库安全及维护设计 (5)数据库实施阶段 (6)建立数据库、数据表、索引 (6)数据入库 (9)3.系统调试和测试 (16)4.课程设计总结 (21)参考文献 (22)1本论文的目标与任务建立一个某工厂管理数据库存储以下信息:1、工厂包括厂名和厂长名。

2、一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。

3、一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。

4、一个车间生产多种产品,产品有产品号、产品名称和价格。

5、一个车间生产多种零件,一个零件也可能为多个车间制造。

零件有零件号、重量和价格。

6、一个产品由多种零件组成,一种零件也可装配出多种产品。

7、产品与零件均存入仓库中。

8、厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。

针对各工厂信息管理情况,设计出适合它们的计算机辅助工厂数据库管理系统。

实现对工厂产品和职工基本信息进行计算机辅助管理,完成有关信息的记录、修改、查询、删除等一系列任务的计算机管理与实现。

系统有对产品、零件、车间和职工等信息的管理,其功能是实现对各部分数据内容进行添加、修改、查询等操作。

2数据库设计需求分析阶段(1)对象处理:工厂信息:厂名、厂长名。

车间信息:车间号、车间主任姓名、地址和电话。

职工信息:职工号、姓名、年龄、性别和工种。

产品信息:产品号、产品名称和价格。

零件信息:零件号、重量和价格。

仓库信息:仓库号、仓库主任姓名和电话。

(2)功能及要求:能对一定量的工厂信息进行管理,主要包括:存储管理工厂信息,修改和查询工厂信息以及管理职工和工作人员信息。

系统安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过用户授权机制,通过用户登陆来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。

近而可以满足用户的基本数据安全性要求。

完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以不取值。

根据实际需要,采取一定的手段来满足用户的完整性需求。

-1-(3)数据结构概念设计阶段(1)实体通过对上面的系统总体分析,可以得到大概的实体-关系模型(E-R模型),如下:工厂:{厂名,厂长名}工人:{职工号,姓名,性别,年龄,工种 }车间:{车间号,车间主任姓名,地址,电话}产品:{产品号,价格,产品名 }零件:{零件号,价格,重量}仓库:{仓库号,仓库主任姓名,电话}(2)由各子E-R合并得到的基本E-R如下图所示:图-2-逻辑结构设计根据上面的数据库ER图,现在需要将上面的数据库概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。

在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。

实体型转换为关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

对于实体间的联系则有以下不同的情况:一个m:n联系转换为一个关系模式。

与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

三个或三个以上实体间的一个多元联系可以转换为一个关系模式。

与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合逻辑结构设计的任务是将概念结构设计的E-R图,转化为与选用的DBMS所支持的数据模型相符的逻辑结构,形成逻辑模型。

工厂(厂名, 厂长名)车间(车间号,车间主任姓名,地址,电话)工人(职工号,姓名,年龄,性别,工种)产品(产品号,产品名称,价格)零件(零件号,重量,价格)仓库(仓库号,仓库主任姓名,电话)生产(车间号,零件号,生产日期)组装(产品号,零件号,组装数)存入(仓库号, 产品号,零件号,存储量)物理结构设计操作环境 windows 2KS ,SQL 2000数据库系统.确定数据库及表的名称及其组成:建立数据库create database factory,数据库名称factory(工厂数据库)数据说明处理:store(仓库)fac(工厂),room(车间)worker(工人),-3-product(产品),component(零件),room_com(零件与车间的联系)pro_com(零件与产品的联系),com_str(零件与仓库的联系)pro_str(产品与仓库的联系);建立索引:索引中记录了表中的关键值,提供了指向表中行的指针。

它既可以在定义表时创建,也可以在定义表之后的任何时候创建。

索引可以创建在一个列或多个列的组合上。

(1)、在车间信息表车间号列上创建索引create index roomRno on room(Rno)(2)、在车间信息表的车间主任姓名列上创建索引create index roomRname on room(Rname)为数据库中各基本表建立的索引如下:由于有的基本表经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;数据库安全及维护设计(1)在数据库fac中添加新用户xcm.use factoryexec sp_grantdbaccess 'yangkun','xcm'(2)创建登录名,添加角色exec sp_addlogin' yangkun ','1234','factory'exec sp_addsrvrolemember ' yangkun ','sysadmin'-5-(3)授权与基本表grant select,updateon productto xcm;grant all privilegeson workerto xcm;grant all privilegeson componentto xcm;grant all privilegeson storeto xcm;grant all privilegeson 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=1数据库实施阶段建立数据库、数据表、索引 -6-(1)建立数据库create database factoryon primary(name=factory_data,filename='d:\cxm\',size=50MB,maxsize=70MB,filegrowth=1MB)log on(name=factory_log,filename='d:\cxm\',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(Price>0),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(Price>0),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))asinsertinto 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))asinsertinto roomvalues(@Rno,@ Rname,@Rcall,@Raddr,@fname);create proc product1(@Pno varchar(10),@Pname varchar(20),@Price numeric(5,1),@Rno varchar(10))asinsertinto productvalues(@Pno,@Pname,@Price,@Rno); create proc component1(@Cno varchar(10),@Price float,@weight float,)asinsertinto 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))asinsertinto facvalues(@fname,@fn_name );create proc room_com1(@Rno varchar(10),@Cno varchar(10),@stime datetime)asinsertinto room_comvalues(@Rno,@Cno,@stime);create proc pro_com1(@Cno varchar(10),@Pno varchar(10),@number int)asinsertinto pro_comvalues(@Cno,@Pno,@number);create proc pro_str1(@Pno varchar(10),@Sno varchar(10),@Strnum1 int)asinsertinto pro_strvalues(@Pno,@Sno,@Strnum1); -11-create proc com_str1(@Cno varchar(10),@Sno varchar(10),@Strnum2 int)asinsertinto com_strvalues(@Cno,@Sno,@Strnum2);(2)存储数据execfac1@fname='奔驰 ',@fn_name='张磊'execroom1@Rno=1,@Rname='刘基',@Rcall=4254357,@Raddr='长沙',@fname='奔驰'execroom1@Rno=2,@Rname='刘择机',@Rcall=4250046,@Raddr='株洲',@fname='奔驰'execworker1@Wno=102,@Wname='刘雄峰' ,@Wage=40 ,@Wsex='男' ,@Wtype='搬运工',@Rno=1execworker1-12-@Wno=103,@Wname='刘芸' ,@Wage=21 ,@Wsex='女' ,@Wtype='经理',@Rno=2execworker1@Wno=101,@Wname='郑凡' ,@Wage=21 ,@Wsex='女' ,@Wtype='前台接待',@Rno=1execworker1@Wno=104,@Wname='黄晓明' ,@Wage=27 ,@Wsex='男' ,@Wtype='技术人员',@Rno=2execproduct1@Pno=201 ,@Pname='轮胎' ,@Price='500',@Rno=1execproduct1@Pno=202 ,@Pname='引擎' ,@Price='',@Rno=2execproduct1@Pno=203 ,@Pname='挡风玻璃' ,-13-@Price='',@Rno=1execproduct1@Pno=204 ,@Pname='奔驰摩托' ,@Price='',@Rno=1execproduct1@Pno=205 ,@Pname='奔驰货车' ,@Price='',@Rno=2execcomponent1@Cno=c1002 ,@Price='6520' ,@weight='200'execcomponent1@Cno=c1001 ,@Price='520' ,@weight='10'execcomponent1@Cno=c1003 ,@Price='925' ,@weight='150'execcomponent1@Cno=c1004 ,@Price='654' ,@weight='100'execstore1-14-@Sno=101 ,@Sname='刘羽琦' ,@Scall=6991431 ,@fname='奔驰'execstore1@Sno=102 ,@Sname='吉鹏' ,@Scall=6991254 ,@fname='奔驰'execroom_com1@Rno=1 ,@Cno=c1002,@stime='2009-05-26' execroom_com1@Rno=2 ,@Cno=c1003,@stime='2009-06-01' execpro_com1@Cno=c1002,@Pno=204,@number=45execpro_com1@Cno=c1004,@Pno=201,@number=89execpro_com1@Cno=c1001,@Pno=202,@number=124exec-15-pro_str1@Pno=201 ,@Sno=101 ,@Strnum1=345execpro_str1@Pno=203 ,@Sno=102 ,@Strnum1=1254execcom_str1@Cno=c1001,@Sno=102,@Strnum2=458execcom_str1@Cno=c1004,@Sno=101,@Strnum2=1461execcom_str1@Cno=c1002,@Sno=101,@Strnum2=1852execcom_str1@Cno=c1003,@Sno=102,@Strnum2=25413.系统调试和测试工厂表表车间表表-16-零件表表产品表表工人表表仓库表表存放表表存放表表组装表-17-表生产表表插入零件号=c1005结果截图insertinto component(Cno,price,weight) values('c1005',98,695)表查询产品信息select Pno,Pname,Pricefrom product表查在长沙生产地产品名称和产品价格select Pname,Pricefrom product,roomwhere = and ='长沙'表-18-把产品号为203的产品改成车头update productset Pname='车头'where Pno=203表查询价格大于元产品的信息select *from productwhere Price>表删除零件号为c1005的零件信息deletefrom componentwhere Cno='c1005'表把重量大于100的零件的价格改成update componentset Price=where weight>100表-19-创建用户use factoryexec sp_grantdbaccess 'yangkun','xcm'图创建的视图图-20-图图4.课程设计总结这次课程设计加深了我对数据库系统概论相关知识和SQL SERVER相关功能的理解。

相关主题