收藏 分销(赏)

工厂数据库管理系统.doc

上传人:精*** 文档编号:3908432 上传时间:2024-07-23 格式:DOC 页数:47 大小:499KB 下载积分:14 金币
下载 相关 举报
工厂数据库管理系统.doc_第1页
第1页 / 共47页
工厂数据库管理系统.doc_第2页
第2页 / 共47页


点击查看更多>>
资源描述
工厂数据库管理系统 课程设计说明书 题目 工厂数据库管理系统 系(部) 计算机科学与技术系 专业(班级) 姓名 学号 指导教师 起止日期 课程设计任务书 课程名称:数据库系统原理 设计题目:数据库系统课程设计 工厂数据库管理系统 1、某工厂需建立一个管理数据库存储以下信息: 工厂包括厂名和厂长名。 一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。 一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。 一个车间生产多种产品,产品有产品号、产品名称和价格。 一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。 一个产品由多种零件组成,一种零件也可装配出多种产品。 产品与零件均存入仓库中。 厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。 2、系统功能的基本要求: 按照一定条件查询、统计工人和产品等基本信息,能模拟工厂生产过程中对原材料(零件)、产品检测、库存环节的管理。 各阶段具体要求: 1、需求分析阶段 l 定义数据项的含义和取值 l 定义目标系统的数据流 2、概念结构设计阶段 l 画出实体模型E-R图 3、逻辑结构设计阶段 l 将实体模型转化为关系模型 l 给出每个关系的主关键字和函数依赖集 l 分析你所设计的关系数据库模式是否属于3NF 4、物理设计阶段 l 确定所有字段的名称、类型、宽度、小数位数及完整性约束 l 确定数据库及表的名称及其组成 l 确定索引文件和索引关键字 5、数据库安全及维护设计阶段 l 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图) l 为了实现复杂的数据完整性约束,设计适当的触发器 l 设计一个适合的数据库备份策略 6、实施阶段 l 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。 设计工作量: (1)软件设计:完成问题陈述中所提到的所有需求功能。 (2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。 工作计划: 安排两周时间进行课程设计,软件开发步骤如下,第一周完成1~4,第二周完成5~8,论文同步进行; 1) 选定题目 2) 需求分析 3) 概念结构设计 4) 逻辑结构设计 5) 物理设计 6) 数据库安全及维护设计 7) 数据库上机实现 8) 答辩 设计工作量: 40课时 工作计划: 见课表 指导教师签名:         日期:         教研室主任签名:        日期:         系主任签名:          日期:        长沙学院课程设计鉴定表 姓名 学号 专业 班级 设计题目 工厂数据库管理系统 指导教师 指导教师意见: 评定等级: 教师签名: 日期: 答辩小组意见: 评定等级:     答辩小组长签名:     日期:     教研室意见: 教研室主任签名: 日期:   系(部)意见: 系主任签名:        日期:      说明 课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类; 摘 要 根据而今信息时代,信息越来越多,越复杂,这时就需要一种管理数据的软件,本次课程设计运用SQL server 来实现数据的管理,本次试验经过SQL语句来实现工厂的流程,使工厂运行效率达到最大值,需要对其进行分析需求,逻辑设计,物理设计,安全性分析,权限设置等操作。 关键词:SQL 管理数据 工厂 目 录 一、引言 7 1.1 编写目的 7 1.2 参考资料 7 二、 需求规约 8 2.1 业务描述 8 2.2 需求分析 8 三、 数据库环境说明 9 四、 数据库的命名规则 9 4.1 数据库对象命名规则 9 4.2 数据项编码规则 9 五、 逻辑设计 10 5.1创立数据库系统的关系模型……………………………………………………………………………11 六、 物理设计 12 6.1 表汇总 12 6.2 表总汇 13 6.3 视图的设计 19 6.4 存储过程、函数及触发器的设计 21 七、 安全性设计 23 7.1 防止用户直接操作数据库的方法 24 7.2 用户帐号密码的加密方法 24 7.3 角色与权限 25 八、 数据库管理与维护说明 25 九、总结…………………………………………………………………………………………………………25 十.附录………………………………………………………………………………………………………..26 一、引言 1.1 编写目的 本文档是数据库系统设计文档的组成部分,编写此数据库设计文档的目的是:根据工人数据库管理系统建立一个数据库存储信息,数据库表名包含工厂,车间,工人,产品,零件,仓库。其中工厂包括多个车间和多个仓库,车间有多个工人,一个车间生产多种产品和多种零件,一个零件也可能为多个车间制造,一个产品由多种零件组成,一种零件也可装配出多种产品,产品和零件均存入仓库中等信息,结合此信息经过sql语言来实现此管理系统的运用,模拟工厂生产过程中队原材料(零件)、产品检测、库存环节的管理。本文档遵循《《工人数据库管理系统和开发规范》》。本文档的读者对象是需求人员,系统设计人员,开发人员,测试人员。 1.2 参考资料 列出有关资料的名称、作者、文件编号或版本等。参考资料包括: a.需求说明书、架构设计说明书等; b.本项目的其它已发表的文件; c.引用文件、资料、软件开发标准等。 资料名称 作者 文件编号、版本 《数据库系统概论》 王珊、萨师煊 5月第4版 《《数据库系统原理》实验指导书 徐长梅、汪祥 9月第一版 二、 需求规约 2.1 业务描述 (1)数据库系统创立的背景 运用数据库相关信息来实现工人管理系统的生产和运作。 (2)数据库系统要完成的业务流程及工作内容 根据工人管理系统模拟生产过程,实现对原材料、产品检测、库存的管理 (4)揭示该数据库的资源需求和设计约束 根据工人的各个生产所需的阶段,来建立不同的表,并将这些表连接起来,画出实体模型E-R图,确定所有字段的名称、类型、宽度、小数位数及完整性约束,并将实体模型转化为关系模型,并设计关键字,以及设计适当的触发器 2.2 需求分析 (1) 分析该业务流程的内在联系 分析业务流程后得出:工厂与车间为一对多关系, 车间与工人为一对多关系, 车间与产品为一对多关系,仓库与产品为一对多关系,仓库与零件为一对多关系, 车间与零件为多对多关系, 产品和零件为多对多关系, 工厂与仓库为一对多关系 (2) 对象处理如下: 对象处理: 工厂信息:厂名、厂长名。 车间信息:车间号、车间主任姓名、地址和电话。 职工信息:职工号、姓名、年龄、性别和工种。 产品信息:产品号、产品名称和价格。 零件信息:零件号、重量和价格。 仓库信息:仓库号、仓库主任姓名和电话。 (3) 实现功能与分析如下: 实现功能:实现功能其中需要注意的是,安全性需要根据其需要来给予其一定程度的安全性,再经过用户授权机制,经过用户登陆来识别用户级别,再根据这个级别来分配用户权限,从而实现更高层次的安全保密功能。完整性要求描述各信息间的关联关系和制约关系,需要根据各个值的实际情况来分析数据的数据范围及注意其是否为NULL(空),根据实际需要来满足要求。 分析:此系统首先画出了其E-R图,并用word文档插入表格并写入各个表的信息,在对work(工厂信息)进行给该和查询,包括:创立数据库信息,查询各表信息,更改element(零件表)信息,workman(工人表)信息,建立一个名为manage存储过程,实现修改element(零件表)信息,workman(工人表)信息。 对于安全性操作,建立了一个名为chenquanyu的登录名,名为cqy的用户,并赋予其表element(零件表),product(产品表)和storage(仓库表)的privilege(因此权限)操作,对product(产品表)创立一个名为IS_product的视图,对workman(工人信息表) 创立一个名为IS_work的视图。并对product(pno)(产品号)和element(eno)创立一个索引,并删除其索引。创立一个名为tri_update_delete_product的触发器,来触发更新产品价格,并触发删除产品号为3的信息。最后创立一个磁盘备份,名字为work_full,地址为'd:beifen\work.bak',并实现完全备份和日记备份。 三、 数据库环境说明 提示: (1)说明所采用的数据库系统,设计工具,编程工具等 (2)详细配置 例如: 数据库实例 数据库系统 数据库部署环境 数据库设计工具 数据库存放位置 说明 工人数据库管理系统 SQL server 硬件:2GB内存,512M以上 软件:windows xp Microsoft Office Visio 和SQL server D盘根目录 查询、统计工人和产品基本信息,模拟工厂生产过程 四、 数据库的命名规则 4.1 数据库对象命名规则 数据库对象 命名规则 备注 表 功能描述字符串 例如: factory 工厂表 视图 view_功能描述字符串 例如: view_factory 工厂视图 索引 index_功能描述字符串 例如:index_factory 工厂索引 存储过程 procedure_功能描述字符串 例如: procedure_factory 工厂存储过程 触发器 trigger_功能描述字符串 例如: trigger_factory 工厂触发器 4.2 数据项编码规则 数据项 命名规则 数据类型 长度范围 备注 车间号 车间序号(两位整数00-99) 定长字符串 10位 workshop_no车间号 职工姓名 姓名(不定长) 不定长字符串 4位 wname 职工姓名 产品价格 价格(不定长) 浮点型 10 pprice 产品价格 五、 逻辑设计 一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。 一个1:n联系能够转换为一个独立的关系模式,也能够与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系能够转换为一个独立的关系模式,也能够与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系能够转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合 逻辑结构设计的任务是将概念结构设计的E-R图,转化为与选用的 DBMS所支持的数据模型相符的逻辑结构,形成逻辑模型。 给表信息包含如下: 工厂(厂名, 厂长名) 车间(车间号,车间主任姓名,地址,电话) 工人(职工号,姓名,年龄,性别,工种) 产品(产品号,产品名称,价格) 零件(零件号,重量,价格) 仓库(仓库号,仓库主任姓名,电话) 生产(车间号,零件号,生产日期) 组装(产品号,零件号,组装数) 存入(仓库号, 产品号,零件号,存储量) 5.1创立数据库系统的关系模型如下 工厂信息表:factory 字段中文名 字段名 数据类型 是否为空 约束 厂名 fno varchar(10) NOT NULL Primary key 厂长名 fdname vachar(10) //工厂与车间一对多 车间信息表:workshop 字段中文名 字段名 数据类型 是否为空 约束 车间号 workshop_no char(10) NOT NULL Primary key 车间主任姓名 wdname varchar(10) 地址 wAddress varchar(10) 电话 wtel varchar(20) 厂名 fno varchar(10) NOT NULL Foreign key(外键) //车间与工人一对多 工人信息表: workman 字段中文名 字段名 数据类型 是否为空 约束 职工号 wno char(10) NOT NULL Primary key 姓名 wname varchar(10) 年龄 wage int 工种 wtype varchar(10) 车间号 workshop_no char(10) NOT NULL Foreign key(外键) //车间与产品一对多,仓库与产品一对多 产品信息表:product 字段中文名 字段名 数据类型 是否为空 约束 产品号 pno varchar(10) NOT NULL Primary key 名称 pname varchar(10) 价格 pprice float 车间号 workshop_no char(10) NOT NULL Foreign key(外键) 仓库号 sno char(10) NOT NULL Foreign key(外键) //仓库与零件一对多 零件信息表:element 字段中文名 字段名 数据类型 是否为空 约束 零件号 eno char(10) NOT NULL Primary key 重量 eweight float 价格 eprice float 仓库号 sno char(10) NOT NULL Foreign key(外键) //车间与零件多对多 车间与零件信息表: workshop_element 字段中文名 字段名 数据类型 是否为空 约束 车间号 workshop_no char(10) NOT NULL Primary key 零件号 eno char(10) NOT NULL Primary key //产品和零件多对多 产品与零件信息表:product_element 字段中文名 字段名 数据类型 是否为空 约束 产品号 pno varchar(10) NOT NULL Primary key 零件号 eno char(10) NOT NULL Primary key //工厂与仓库一对多 仓库信息表:storage 字段中文名 字段名 数据类型 是否为空 约束 仓库号 sno char(10) NOT NULL Primary key 仓库主任姓名 sdname 电话 stel 厂名 fno varchar(10) NOT NULL Foreign key(外键) 六、 物理设计 6.1表汇总 表名 功能说明 表element 查询,插入,索引,存储过程 表product 查询,插入,修改,视图,索引,权限设置,创立存储过程 表storage 查询,更新,删除,权限设置,存储过程 6.2工厂表如下: 1. 工厂信息表:factory 表名 工厂信息表:factory 数据库用户 work 主键 fno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 fno Varchar(10) N 主键 2 fdname Varchar(10) sql脚本 create table factory ( fno varchar(10) NOT NULL primary key, fdname varchar(10) ) 备注 [备注信息] 2. 车间信息表:workshop 表名 车间信息表:workshop 数据库用户 work 主键 workshop_no 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 workshop_no char(10) N 主键 2 wdname varchar(10) 3 waddress varchar(10) fno varchar(10) N Foreign key(外键) sql脚本 create table workshop ( workshop_no char(10) NOT NULL primary key, wdname varchar(10), waddress varchar(10), wtel varchar(20), fno varchar(10) NOT NULL, foreign key (fno) references factory(fno) ) 备注 工厂与车间一对多 3. 工人信息表: workman 表名 工人信息表: workman 数据库用户 work 主键 wno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 wno char(10) N 主键 2 wname varchar(10) 3 wage int 4 wtype varchar(10) 5 workshop_no char(10) N Foreign key(外键) sql脚本 create table workman ( wno char(10) NOT NULL primary key, wname varchar(10), wage int, wtype varchar(10), workshop_no char(10) NOT NULL, foreign key (workshop_no) references workshop(workshop_no) ) 备注 车间与工人一对多 4. 产品信息表:product 表名 产品信息表:product 数据库用户 work 主键 pno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 pno varchar(10) N 主键 2 pname varchar(10) 3 pprice float 4 workshop_no char(10) N Foreign key(外键) 5 sno char(10) N Foreign key(外键) sql脚本 create table product ( pno varchar(10) NOT NULL primary key, pname varchar(10), pprice float, workshop_no char(10) NOT NULL, sno char(10) NOT NULL, foreign key (workshop_no) references workshop(workshop_no), foreign key (sno) references storage(sno) ) 备注 车间与产品一对多,仓库与产品一对多 5. 零件信息表:element 表名 零件信息表:element 数据库用户 work 主键 eno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 eno char(10) N 主键 2 eweight float 3 eprice float 4 sno char(10) N Foreign key(外键) sql脚本 create table element ( eno char(10) NOT NULL primary key, eweight float, eprice float, sno char(10) NOT NULL, foreign key (sno) references storage(sno) ) 备注 仓库与零件一对多 6. 车间与零件信息表: workshop_element 表名 车间与零件信息表: workshop_element 数据库用户 work 主键 workshop_no,eno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 fno workshop_no char(10) N 主键 2 fdname eno char(10) N 主键 sql脚本 create table workshop_element ( workshop_no char(10) NOT NULL , eno char(10) NOT NULL , primary key(workshop_no,eno), foreign key (workshop_no) references workshop(workshop_no), foreign key (eno) references element(eno) ) 备注 车间与零件多对多 7. 产品与零件信息表:product_element 表名 产品与零件信息表:product_element 数据库用户 work 主键 pno,eno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 pno varchar(10) N 主键 2 eno char(10) N 主键 sql脚本 create table product_element ( pno varchar(10) NOT NULL , eno char(10) NOT NULL , primary key(pno,eno), foreign key (pno) references product(pno), foreign key (eno) references element(eno) ) 备注 产品和零件多对多 8. 仓库信息表:storage 表名 仓库信息表:storage 数据库用户 work 主键 sno 其它排序字段 索引字段 序号 字段名称 数据类型(精度范围) 允许为空Y/N 唯一Y/N 区别度 默认值 约束条件/说明 1 sno char(10) N 主键 2 sdname varchar(10) stel varchar(20) fno varchar(10) N Foreign key(外键) sql脚本 create table storage ( sno char(10) NOT NULL primary key, sdname varchar(10), stel varchar(20), fno varchar(10) NOT NULL, foreign key (fno) references factory(fno) ) 备注 工厂与仓库一对多 6.3视图的设计 各表关系图如下: 图6.3.1 创立视图过程如下 (1)给产品表创立一个拥有paname(产品名称),price(产品价格),以及外键的sno(仓库号)的视图 create view IS_product as select sno,pname,pprice from product 效果图如下: 图6.3.1 (2)给工人信息表创立一个包含有workman(生产表)的所有信息的视图 create view IS_workman as select * from workman 效果图如下: 图6.3.2 6.4存储过程、函数及触发器的设计 6.4.1存储过程代码如下: create procedure manage --创立一个名字为manage的存储过程 (@eno char(10), --定义一些参数 @wname varchar(10), @sdname char(10), @sno char(10) ) as declare @eweight1 float=80.4 --申明一个变量@eweight1 if exists(select eweight from element where eweight< @eweight1) update element set eweight=80.4 --将element(零件)表中的eweight都定义为80.4 select * from element select eprice from element where eno=@eno update workman set wage=10 where wname = @wname select * from workman update storage set sdname=@sdname where sno=@sno select * from storage print'修改后的零件表' exec manage @eno='e03', --当eno中为e03时,再查询此时此刻的pprice(价格) @wname='贺江平', @sdname='张攀攀', @sno='B2' 首先创立了一个名字为manage的存储过程,定义一些能够用到得相关参数,如@eno,@wname,@sdname,@sno,经过这些参数传递确定的数据,利用SQL语句结合在存储过程从而实现想要更改,删除,插入等相关的操作. 存储过程执行后的效果图为: 图6.4.1 6.4.2索引的建立 建立索引使查询的时候按顺序排列 create unique index propno on product(pno) --为product表的pno(产品号)建立索引 create unique index eeno on element(eno) --为element表的eno(零件号)建立索引 6.4.3触发器的建立与实现操作 为product表创立一个基于update操作和delete操作的复合型触发器,当修改了该表的pprice(价格)或者删除了pno(产品号)时,触发器被激活生效,显示相关的操作信息 (1)创立触发器 create trigger tri_update_delete_product --创立触发器 on product for update,delete as if update(pprice) --更新价格 begin select inserted.pno,deleted.pprice as 原价格,inserted.pprice as 新价格 from deleted,inserted where deleted.pno=inserted.pno end else if columns_updated()=0 begin select deleted.pno as 被删除的产品号,deleted.pname,deleted.pprice as 原价格 from deleted end (2)触发触发器 1.在查询命令窗口中输入以下update语句,修改产品号为’01’的价格,激发触发器 update product set pprice=pprice+1 where pno='01' 视图如下: 2.在查询命令窗口中输入以下delete语句,删除产品为号为’03’的记录,激发触发器 delete product where pno='03' 视图如下: (3)删除新创立的触发器 drop trigger tri_update_delete_product 视图如下: 七、 安全性设计 SQL包括了windows认证和sql server混合认证,其中sql server混合认证提供了用户登录方式,而用户登录后想更改操作的话,必须分配给用户名权限,才能对数据库的表进行相关操作。 以下是用SQL语句实现的用户名登录,和受权操作: exec sp_grantdbaccess 'chenquanyu','cqy' //允许新建登录名和用户,其中chenquanyu是登录名,cqy是用户 exec sp_addlogin 'chenquanyu','123456','work' //用户名登录,密码为123456,默认数据库为work exec sp_addsrvrolemember 'chenquanyu','sysadmin' //授予用户名chenquanyu一些数据库操作的权限 GRANT ALL privileges on product to cqy GRANT ALL privileges on element to cqy grant update on storage to cqy //将product产品表和零件表的所有权限授予给cqy用户,仓库信息表的更新权限授予给cqy用户 使用查询分析器管理备份设备和备份数据库 //创立一个磁盘备份设备,名字为work_full,地址为'd:beifen\work.bak' exec sp_addumpdevice 'disk','work_full','d:\beifen\work.bak' backup database work to work_full with init --完全备份 备份执行如下: backup log work to work_full with noinit --日记备份,使用备份语句backup来备份数据库 日记备份执行如下: 7.1防止用户直接操作数据库的方法 不授予用户操作的权限。 用户只能用帐号登陆到应用软件,经过应用软件访问数据库,而没有其它途径操作数据库。 7.2用户帐号密码的加密方法 用户账户密码加密是在程序里实现的,将用户密码经过某种算法加密转换后再存入数据库。 对用户帐号的密码进行加密处理,确保在任何地方都不会出现密码的明文。用户帐号采用MD5进行数据加密后再录入数据库,以防止任何地方密码的安全性要求。 7.3角色与权限 确定每个角色对数据库表的操作权限,如创立、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限等于她所兼角色的权限之和。 角色 能够访问的表与列 操作权限 例如:管理员 可访问所有表 完全控制权限 角色B Product表 可操作此表全部信息 element表 可操作此表全部信息 Storage表 只能操作update权限 八、 数据库管理与维护说明 提示:在设计数据库的时候,及时给出管理与维护本数据库的方法,有助于将来撰写出正确完备的用户手册。 在运行数据库的同时先要在脑海里想好需求分析,然后再根据要求画出E-R图,然后再根据逻辑结构在word文档下根据表的信息,依次完成各信息表,然后根据表与表对应的,1:1,1:n或n:m关系确定好表的主外键,注:多对多的表还要另外创立一表来表示两表之间的关系。完成表的建立后,接下来的操作就是往各个表中插入相关实际信息,以及利用SQL语句来实现表的插入,插入完毕后,可运用建立一个存储过程来完成表的更新,删除,插入等操作,操作完毕后可,用SQL语句建立视图,好让操作员更能体会表与表之间的关系,而且看不出关键隐私代码,这样就能很好的维护数据库的管理和专利。在设置安全性的时候,注意用户必须要授权才能对各表进行操作,备份需要用语句实现。 九、 总结 本次数据库课程设计让我深刻体会到了,书本前后的衔接性,这次课程设计涉及到了书本几乎全部知识点,而在本次课程设计之前,我一直都没搞懂很多知识点,而且运用起来很生疏,尽管刚
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服