最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

工厂数据库管理系统

IT圈 admin 32浏览 0评论

2024年4月14日发(作者:艾群)

一、课程设计的目的

掌握数据库的基础知识、基本理论、原理和实现技术。

二、设计题目:工厂数据库管理系统

已知技术参数和设计要求:

需求说明及要求

题目:工厂数据库管理系统

某工厂需建立一个管理数据库存储以下信息:

1、工厂包括厂名和厂长名。

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

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

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

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

重量和价格。

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

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

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

各阶段具体要求:

1、需求分析阶段

 定义数据项的含义和取值

 定义目标系统的数据流

2、概念结构设计阶段

 画出实体模型E-R图

3、逻辑结构设计阶段

 将实体模型转化为关系模型

 给出每个关系的主关键字和函数依赖集

 分析你所设计的关系数据库模式是否属于3NF

4、物理设计阶段

 确定所有字段的名称、类型、宽度、小数位数及完整性约束

 确定数据库及表的名称及其组成

 确定索引文件和索引关键字

5、数据库安全及维护设计阶段

 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)

 为了实现复杂的数据完整性约束,设计适当的触发器

 设计一个适合的数据库备份策略

6、实施阶段

1

 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。

三、设计内容

1将概念模型转化为关系模型

从E-R图中可以看到有6个实体,所以我建立了6个实体关系表,并且把实体

键作为表的关键字,4个一对多的联系表,在建立关系模型的过程中,我是把一

这边的实体键放到多这边做为外键,4个多对多的联系,所以我建立了4个联系

表,并把相互联系的两实体的实体键,分别作为联系表的外键。在处理仓库与零

件多对多的联系和仓库与产品多对多的联系过程中有以下两种方法:

(1) 建立两个存储表,仓库零件存储表和仓库产品存储表,并把仓库号,零件

号和仓库号,产品号分别作为这两个联系表的外键,这样就保持了参照完

整性的约束条件,而且建立两个联系表清晰明了,更容易使人明白。

(2) 建立一个存储表,仓库物品存储表,它包含仓库号,物品号(零件号和产

品号),库存量3个属性,建立一个存储表更简洁,但是在建表的过程中

丢失的参照完整性。

综合考虑以上两种方法,我觉得第(1)中更好。

四、设计步骤

4.1需求分析阶段

(1)定义数据项的含义和取值

数据项名 含义

FacName 工厂名

FacMName 厂长名

CNo 车间主任编号

WorkNo 车间号

WorkAddress 车间地址

Workphone 车间电话

WorkerNo 职工号

WorkerName 职工名

WoerkerAge 职工年龄

WorkerSex 性别

WorkerType 工种

ProductNo 产品号

ProductName 产品名称

ProductPrice 产品价格

ComNo 零件号

ComWeight 零件重量

Comprice 零件价格

WareNo 仓库号

WNo 仓库主任编号

Warephone 仓库电话

类型

Char

Char

Char

Char

Char

Char

Char

Char

Int

Char

Char

Char

Char

Numeric

Char

Int

Numeric

Char

Char

Char

宽度

10

8

8

4

12

5

5

8

4

2

10

5

12

5

5

4

5

5

8

12

小数位数

1

1

2

(2)定义数据结构

数据结构

工厂

车间

职工

产品

零件

含义

工厂情况表

车间情况表

职工情况表

产品情况表

零件情况表

组成

FacName+FacMName

WorkName+CNo+

WorkNo+WorkAddress+

Workphone+FacName

WorkerNo+WorkerName+WorkerSex+

WorkerType+WorkerAge+WorkNo

ProductNo+ProductName+

ProductPrice+Snum1

ComNo+ComWeight+Comprice+Snu

m2

WareNo+WNo+Warephone+FacName 仓库

(3)定义数据流

数据流名

Factory

Workshop

WorkerQK

ProductQK

CompentsQK

WareQK

4.2概念结构设计阶段

画出实体模型E-R图

仓库情况表

含义

工厂情况表

车间情况表

职工情况表

产品情况表

零件情况表

仓库情况表

组成

FacName+FacMName

WorkNo+CName+WorkAddress+

Workphone+FacName

WorkerNo+ WorkerName+

WorkerSex+ WorkerType

ProductNo+ ProductName+

ProductPrice+WorkNo

ComNo + ComWeight+

Comprice

WareNo+WName+

Warephone+FacName

3

库存量

电话

仓库主任

编号

存入

产品名称

产品号

仓库号

仓库

零件号

重量

价格

零件

数量

价格

组装

数量

存入

产品

生产日

库存量

生产

年龄

姓名

生产

性别

工厂

车间

拥有

工人

工厂名

厂长名

车间号

车间主任

编号

地址

电话

职工号 工种

4.3逻辑结构设计阶段

(1)将实体模型转化为关系模型

实体转化成关系表

Factory

FacName FacMName

Workshop

WorkNo CNo WorkAddress Workphone

Worker

WorkerNo WorkerType WorkerSex WorkerName

Product

ProductNO ProductName ProductPrice WorkNo

4

FacName

WorkerAge

Compoents

ComNO ComWeight Comprice

Warehouse

WareNo WNo Warephone FacName

多对多的联系转化成实体表

W-C(生产)

WorkNo ComNo ComNum1

P-C(组装)

ProductNO ComNO ProNum ComNum2

WaC(仓库---零件)存储

WareNo ComNo Snum2

WaP(仓库---产品)存储

WareNo ProductNo Snum1

(2)每个关系的主关键字和函数依赖集

Factory(FacName,FacMName)

FacName──> FacMName

Workshop(WorkNo,CNo,WorkAddress,Workphone,FacName)

WorkNo──>WorkAddress, WorkNo──>CNo,WorkNo──>Workphone,

WorkNo──>FacName

Worker(WorkerNo,WorkerType,WorkerSex,WorkerName,WorkerAge,WorkNo)

WorkerNo──>WorkerType, WorkerNo──>WorkerSex, WorkerNo──>

WorkerName

WorkerNo──>WorkerAge, WorkerNo──>WorkNo

Product(ProductNo,ProductName,ProductPrice,WorkNo)

ProductNo──> ProductName, ProductNo──> ProductPrice, ProductNo──

> WorkNo

Components(ComNO,ComWeight,Comprice)

ComNO──>ComWeight, ComNO──>Comprice

Warehouse(WareNo,FacName,Warephone,WNo)

WareNo──> FacName, WareNo──> Warephone, WareNo──> WNo

WC(ComNo,WorkNo, ComNum1)

(ComNo,WorkNo)──>ComNum1

PC(ProductNO,ComNO,ProNum,ComNum2)

(ProductNO,ComNO)──>ProNum, (ProductNO,ComNO)──>ComNum2

5

WaC(ComNo,WareNo,Sum2)

(ComNo,WareNo)──>Sum2

WaP(WareNo,ProductNo,Sum1)

(WareNo,ProductNo)──>Sum1

以上的10个关系模式没有非主属性对主关键字的部分依赖和传递依赖,也不存

在属于主属性对主关键字的部分依赖和传递依赖,所以以上的10个关系模式都

属于3NF

4.4物理设计阶段

(1)确定所有字段的名称、类型、宽度、小数位数及完整性约束

数据项名 含义 类型 宽度 小数位 完整性要求

FacName 工厂名 Varchar 30 Primary key

FacMName 厂长名 Char 8 Not Null

CNo 车间主任编 Varchar 8 参照职工号

WorkNo 车间号 Varchar 10 Primary key

WorkAddress 车间地址 Varchar 20

Workphone 车间电话 Varchar 12

WorkerNo 职工号 Char 5 Primary key

WorkerName 职工名 Char 8

WoerkerAge 职工年龄 Int 4

WorkerSex 性别 Char 2 (男,女)

WorkerType 工种 Char 10

ProductNo 产品号 Char 5 Primary key

ProductName 产品名称 Char 12

ProductPrice 产品价格 numeric 5 1 >=0

ComNo 零件号 Char 5 Primary key

ComWeight 零件重量 Int 4 >=0

Comprice 零件价格 numeric 5 1 >=0

Number 数量 int 4 >=0

WareNo 仓库号 Varchar 10 Primary key

WNo 仓库主任编 Varchar 8 参照职工号

Warephone 仓库电话 Varchar 12

Snum1 仓库存储产 Int 4 >=0

品数量

Snum2 仓库存储零Int 4 >=0

件数量

6

(2)确定数据库及表的名称及其组成

关系名 Table 数据结构含义

工厂 Factory 工厂基本信息

车间 Worksho车间基本信息

p

职工 Worker 工人基本信息

产品

零件

Product 产品基本信息

Compen零件基本信息

ts

仓库 Warehou仓库基本信息 WareNo,WName,

s Warephone,FacName

生产 WC 零件与车间的联系 WorkNo ,ComNo , comNum1

组装 PC 零件与产品的联系 ProductNO,ComNo,comNum2

仓库-零WAC 零件与仓库的联系 WareNo,ComNo,Snum2

仓库-产WAP 产品与仓库的联系 WareNo,ProductNo,Snum1

工厂表

列名 数据类型 能否空值 默认值 键/索引 说明

FacName varchar(30) 否 主键、索引 厂名

FMName varchar(8) 否 厂长名

车间表

列名 数据类型 能否空值 默认值 键/索引 说明

WorkNO varchar(10) 否 主键、索引 车间号

CNo varchar(8) 否 车间主任

编号

WorkAddress varchar(20) 否 车间地址

Workphone Varchar(12) 否 电话

FcaName Varchar(30) 否 工厂名

零件表

列名 数据类型 能否空值 默认值 键/索引 说明

ComNo varchar(10) 否 主键、索引 零件号

ComWe int 否 重量

ight

ComPrnumeric(5,1) 否 价格

ice

7

组成字段

FacName,FMName

WorkNo,WorkAddress,Workphone,CNo,FacNa

me

WorkerNo,WorkerName,WorkerSex,WorkerTyp

e, WorkAge,WorkNo

ProductNo,ProductName, ProductPrice,

WorkNo

ComNo,ComWeight, Comprice

职工表

列名 数据类型 能否空值 默认值 键/索引 说明

Worker varchar(10) 否 主键、索引 职工号

NO

Worker varchar(8) 否 姓名

Name

Worker int 否 年龄

Age

Worker varchar(2) 否 性别

Sex

Worker varchar(20) 否 工种

Type

WorkNO Varchar(10) 否 车间号

产品表

列名 数据类型 能否空默认值 键/索引 说明

ProductNo varchar(10) 否 主键、索引 产品号

ProductName varchar(20) 否 产品名

ProductPricnumeric(5,否 价格

e 1)

WorkNo Varchar(10) 否 车间号

仓库表

列名 数据类型 能否空值

WareN varchar(10) 否

o

WName varchar(8) 否

Warep

hone

FacNa

me

Varchar(12) 否

Varchar(30) 否

默认值

键/索引

主键、索引

说明

仓库号

仓库主任

姓名

仓库电

工厂名

生产表

列名 数据类型 能否空值

Workvarchar(10) 否

No

varchar(10) 否

ComNo

Int 否

8

默认值

键/索引

主键

主键

说明

车间号

零件号

生产零件数

comNum1

组装表

列名 数据类型 能否空值 默认值

varchar(10) 否

ProductNo

ComNo varchar(10) 否

int 否

Comnum2

proNum Int 否

产品存储表

列名 数据类型 能否空值 默认值

WareNo varchar(10) 否

varchar(10) 否

ProductNo

Snum2 int 否

零件存储表

列名 数据类型 能否空值 默认值

WareNo varchar(10) 否

varchar(10) 否

ComNo

Snum1 Int 否

创建数据库和关系表

1.创建factory数据库

键/索引

主键

主键

说明

产品号

零件号

组装零件数

组装产品数

键/索引

主键

主键

说明

仓库号

产品号

产品存放量

键/索引

主键

主键

说明

仓库号

零件号

零件存放量

2创建factory(工厂)表

9

3创建workshop(车间)表

4创建worker(职工)表

5创建product(产品)表

6创建component(零件)表

7创建warehouse(仓库)表

10

8创建WC(生产)表

9创建PC(组装)表

10创建WaP(存储表1)仓库----产品

11创建Wac(存储表2)仓库----零件

11

(3)确定索引文件和索引关键字

Table 索引文件

Factory Factory_IDX

Workshop Workshop_IDX

Worker Worker_IDX

Product Product_IDX

Compoent Compents_IDX

Warehouse Warehouse_IDX

WC WC_IDX

PC PC_IDX

WAC WAC_IDX

WAP WAP_IDX

索引关键字

FacNo

WorkNo

WorkerNo

ProductNo

ComNo

WareNo

ProTime+WorkNo+ComNo

ProductNO+ComNO

WareNo+ComNo

WareNo+ProductNo

4.5数据库安全及维护设计阶段

(1)设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)

添加新用户hh

12

(2)添加角色

(3)授权

1把factory表的所有权限授给hh

2把workshop表的所有权限授给hh

3把worker表的所有权限授给hh

4把product表的所有权限授给hh

13

5把component表的所有权限授给hh

6把warehouse表的所有权限授给hh

14

(4)创建索引

1

为工厂表在工厂名FacName上建立索引

2

为车间表在车间号WorkNo上建立索引

15

3

为职工表在职工编号WorkerNo上建立索引

4

为产品表在产品号ProductNo上建立索引

5

为零件表在零件号ComNo上建立索引

16

6

为仓库表在仓库号WareNo上建立索引

(5)创建视图

(6)创建存储过程

1在工厂表上创建存储过程

2在车间表上创建存储过程

17

3在职工表上创建存储过程

4在产品表上创建存储过程

5在零件表上创建存储过程

6在仓库表上创建存储过程

18

7在生产表上创建存储过程

8在组装表上创建存储过程

9在零件存储表上创建存储过程

10在产品存储表上创建存储过程

19

执行存储过程

1向工厂表中插入数据

2向车间表中插入数据

3向职工表中插入数据

20

4向产品表中插入数据

5向零件表中插入数据

21

6向仓库表中插入数据

7向生产表中插入数据

22

8向组装表中插入数据

9向零件存储表中插入数据

23

10向产品存储表中插入数据

4.6.2查询存储过程

1功能是通过某一职工的姓名查询他的全部信息

2功能是通过某一产品的名称查询该产品的基本信息

24

3功能是通过某一零件的名称查询该零件的基本信息

4功能是通过某一产品的名称查询该产品所需要的零件种类与数量

5通过某一车间号查询改车间的所有信息

25

6通过输入某一日期查询该日生产零件的种类和零件的数目以及生产该零件的

车间号

4.6.3创建触发器

1在生产表上建立触发器,当上生产表中插入一行数据时,零件存储表中零件的

库存量就会增加,零件的库存量等于先前的零件库存量加上生产表中生产零件的

数量

触发前

26

触发后

2在产品存储表上建立触发器,当向产品存储表中插入数据,即产品的库存量增

加时,零件的库存量就会减少,某种零件的库存量等于先前的库存量减去该种产

品所需要的该零件数乘以生产产品的数量

27

五设计一个适合的数据库备份策略

创建一个磁盘备份的设备

use factory

go

Exec sp_addumpdevice 'disk','factory_full','f:'

go

完全备份

Use factory

go

backup database factory to factory_full with init

go

1完全备份工厂数据库

28

增量备份

Use factory

go

backup database factory to disk='f:hufactory_'

with noinit,differential

go

还原整个university数据库

Restore database factory from factory_full

还原差异备份

Restore database factory from factory_differ with norecovery

还原日志备份

Restore database log from factory_log with recovery

29

总结

这次课程设计加深了我对数据库系统概论相关知识和SQL SERVER相关功能

的理解。虽然课程设计已经结束了。回想着这个学期自己所学的《数据库系统概

论》、以及这次做的课程设计,感触蛮深的。

首先,在这次课程设计中,我对建立基本表、视图、索引等,都比以前更加

的熟练。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在删除

和更新数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入

的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。

另外我还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一

点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就

会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,

甚至有时要推倒很多前面做的工作重来。有时候,我自己觉得我写的语句正确,

但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛

苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,

往往几天的时间还没有一点进展。这时候,我一般是先自己通过书本,手册和资

料找解决办法,实在没辙了才上网查找相关信息。

由于我的知识浅薄,经验不足及阅历颇浅,在设计的过程中也存在一些问题。

比如需求分析阶段的工作完成的不是很充分,建E-R图时没有充分理解实体和联

系的区别,以致在后面处理问题时,遇到了困难,很多功能无法实现。在后面的

设计过程中,前后时常会出现矛盾,不一致现象,因此要反复的修改前面的结果,

导致整个工作进行的不是很顺利。另外比如功能过少等问题,我会在工作的使用

过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。

最后,还要感谢老师对我的帮助,给我提供了许多宝贵的意见。

30

参考文献:

[1] 萨师煊,王珊,数据库系统概论(第四版). 北京:高等教育出版社,2008

[2]Jeffrey ,Jennifer Widom 数据库系统基础教程(第三版).北京机械

工业出版社,2009.8

31

2024年4月14日发(作者:艾群)

一、课程设计的目的

掌握数据库的基础知识、基本理论、原理和实现技术。

二、设计题目:工厂数据库管理系统

已知技术参数和设计要求:

需求说明及要求

题目:工厂数据库管理系统

某工厂需建立一个管理数据库存储以下信息:

1、工厂包括厂名和厂长名。

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

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

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

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

重量和价格。

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

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

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

各阶段具体要求:

1、需求分析阶段

 定义数据项的含义和取值

 定义目标系统的数据流

2、概念结构设计阶段

 画出实体模型E-R图

3、逻辑结构设计阶段

 将实体模型转化为关系模型

 给出每个关系的主关键字和函数依赖集

 分析你所设计的关系数据库模式是否属于3NF

4、物理设计阶段

 确定所有字段的名称、类型、宽度、小数位数及完整性约束

 确定数据库及表的名称及其组成

 确定索引文件和索引关键字

5、数据库安全及维护设计阶段

 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)

 为了实现复杂的数据完整性约束,设计适当的触发器

 设计一个适合的数据库备份策略

6、实施阶段

1

 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。

三、设计内容

1将概念模型转化为关系模型

从E-R图中可以看到有6个实体,所以我建立了6个实体关系表,并且把实体

键作为表的关键字,4个一对多的联系表,在建立关系模型的过程中,我是把一

这边的实体键放到多这边做为外键,4个多对多的联系,所以我建立了4个联系

表,并把相互联系的两实体的实体键,分别作为联系表的外键。在处理仓库与零

件多对多的联系和仓库与产品多对多的联系过程中有以下两种方法:

(1) 建立两个存储表,仓库零件存储表和仓库产品存储表,并把仓库号,零件

号和仓库号,产品号分别作为这两个联系表的外键,这样就保持了参照完

整性的约束条件,而且建立两个联系表清晰明了,更容易使人明白。

(2) 建立一个存储表,仓库物品存储表,它包含仓库号,物品号(零件号和产

品号),库存量3个属性,建立一个存储表更简洁,但是在建表的过程中

丢失的参照完整性。

综合考虑以上两种方法,我觉得第(1)中更好。

四、设计步骤

4.1需求分析阶段

(1)定义数据项的含义和取值

数据项名 含义

FacName 工厂名

FacMName 厂长名

CNo 车间主任编号

WorkNo 车间号

WorkAddress 车间地址

Workphone 车间电话

WorkerNo 职工号

WorkerName 职工名

WoerkerAge 职工年龄

WorkerSex 性别

WorkerType 工种

ProductNo 产品号

ProductName 产品名称

ProductPrice 产品价格

ComNo 零件号

ComWeight 零件重量

Comprice 零件价格

WareNo 仓库号

WNo 仓库主任编号

Warephone 仓库电话

类型

Char

Char

Char

Char

Char

Char

Char

Char

Int

Char

Char

Char

Char

Numeric

Char

Int

Numeric

Char

Char

Char

宽度

10

8

8

4

12

5

5

8

4

2

10

5

12

5

5

4

5

5

8

12

小数位数

1

1

2

(2)定义数据结构

数据结构

工厂

车间

职工

产品

零件

含义

工厂情况表

车间情况表

职工情况表

产品情况表

零件情况表

组成

FacName+FacMName

WorkName+CNo+

WorkNo+WorkAddress+

Workphone+FacName

WorkerNo+WorkerName+WorkerSex+

WorkerType+WorkerAge+WorkNo

ProductNo+ProductName+

ProductPrice+Snum1

ComNo+ComWeight+Comprice+Snu

m2

WareNo+WNo+Warephone+FacName 仓库

(3)定义数据流

数据流名

Factory

Workshop

WorkerQK

ProductQK

CompentsQK

WareQK

4.2概念结构设计阶段

画出实体模型E-R图

仓库情况表

含义

工厂情况表

车间情况表

职工情况表

产品情况表

零件情况表

仓库情况表

组成

FacName+FacMName

WorkNo+CName+WorkAddress+

Workphone+FacName

WorkerNo+ WorkerName+

WorkerSex+ WorkerType

ProductNo+ ProductName+

ProductPrice+WorkNo

ComNo + ComWeight+

Comprice

WareNo+WName+

Warephone+FacName

3

库存量

电话

仓库主任

编号

存入

产品名称

产品号

仓库号

仓库

零件号

重量

价格

零件

数量

价格

组装

数量

存入

产品

生产日

库存量

生产

年龄

姓名

生产

性别

工厂

车间

拥有

工人

工厂名

厂长名

车间号

车间主任

编号

地址

电话

职工号 工种

4.3逻辑结构设计阶段

(1)将实体模型转化为关系模型

实体转化成关系表

Factory

FacName FacMName

Workshop

WorkNo CNo WorkAddress Workphone

Worker

WorkerNo WorkerType WorkerSex WorkerName

Product

ProductNO ProductName ProductPrice WorkNo

4

FacName

WorkerAge

Compoents

ComNO ComWeight Comprice

Warehouse

WareNo WNo Warephone FacName

多对多的联系转化成实体表

W-C(生产)

WorkNo ComNo ComNum1

P-C(组装)

ProductNO ComNO ProNum ComNum2

WaC(仓库---零件)存储

WareNo ComNo Snum2

WaP(仓库---产品)存储

WareNo ProductNo Snum1

(2)每个关系的主关键字和函数依赖集

Factory(FacName,FacMName)

FacName──> FacMName

Workshop(WorkNo,CNo,WorkAddress,Workphone,FacName)

WorkNo──>WorkAddress, WorkNo──>CNo,WorkNo──>Workphone,

WorkNo──>FacName

Worker(WorkerNo,WorkerType,WorkerSex,WorkerName,WorkerAge,WorkNo)

WorkerNo──>WorkerType, WorkerNo──>WorkerSex, WorkerNo──>

WorkerName

WorkerNo──>WorkerAge, WorkerNo──>WorkNo

Product(ProductNo,ProductName,ProductPrice,WorkNo)

ProductNo──> ProductName, ProductNo──> ProductPrice, ProductNo──

> WorkNo

Components(ComNO,ComWeight,Comprice)

ComNO──>ComWeight, ComNO──>Comprice

Warehouse(WareNo,FacName,Warephone,WNo)

WareNo──> FacName, WareNo──> Warephone, WareNo──> WNo

WC(ComNo,WorkNo, ComNum1)

(ComNo,WorkNo)──>ComNum1

PC(ProductNO,ComNO,ProNum,ComNum2)

(ProductNO,ComNO)──>ProNum, (ProductNO,ComNO)──>ComNum2

5

WaC(ComNo,WareNo,Sum2)

(ComNo,WareNo)──>Sum2

WaP(WareNo,ProductNo,Sum1)

(WareNo,ProductNo)──>Sum1

以上的10个关系模式没有非主属性对主关键字的部分依赖和传递依赖,也不存

在属于主属性对主关键字的部分依赖和传递依赖,所以以上的10个关系模式都

属于3NF

4.4物理设计阶段

(1)确定所有字段的名称、类型、宽度、小数位数及完整性约束

数据项名 含义 类型 宽度 小数位 完整性要求

FacName 工厂名 Varchar 30 Primary key

FacMName 厂长名 Char 8 Not Null

CNo 车间主任编 Varchar 8 参照职工号

WorkNo 车间号 Varchar 10 Primary key

WorkAddress 车间地址 Varchar 20

Workphone 车间电话 Varchar 12

WorkerNo 职工号 Char 5 Primary key

WorkerName 职工名 Char 8

WoerkerAge 职工年龄 Int 4

WorkerSex 性别 Char 2 (男,女)

WorkerType 工种 Char 10

ProductNo 产品号 Char 5 Primary key

ProductName 产品名称 Char 12

ProductPrice 产品价格 numeric 5 1 >=0

ComNo 零件号 Char 5 Primary key

ComWeight 零件重量 Int 4 >=0

Comprice 零件价格 numeric 5 1 >=0

Number 数量 int 4 >=0

WareNo 仓库号 Varchar 10 Primary key

WNo 仓库主任编 Varchar 8 参照职工号

Warephone 仓库电话 Varchar 12

Snum1 仓库存储产 Int 4 >=0

品数量

Snum2 仓库存储零Int 4 >=0

件数量

6

(2)确定数据库及表的名称及其组成

关系名 Table 数据结构含义

工厂 Factory 工厂基本信息

车间 Worksho车间基本信息

p

职工 Worker 工人基本信息

产品

零件

Product 产品基本信息

Compen零件基本信息

ts

仓库 Warehou仓库基本信息 WareNo,WName,

s Warephone,FacName

生产 WC 零件与车间的联系 WorkNo ,ComNo , comNum1

组装 PC 零件与产品的联系 ProductNO,ComNo,comNum2

仓库-零WAC 零件与仓库的联系 WareNo,ComNo,Snum2

仓库-产WAP 产品与仓库的联系 WareNo,ProductNo,Snum1

工厂表

列名 数据类型 能否空值 默认值 键/索引 说明

FacName varchar(30) 否 主键、索引 厂名

FMName varchar(8) 否 厂长名

车间表

列名 数据类型 能否空值 默认值 键/索引 说明

WorkNO varchar(10) 否 主键、索引 车间号

CNo varchar(8) 否 车间主任

编号

WorkAddress varchar(20) 否 车间地址

Workphone Varchar(12) 否 电话

FcaName Varchar(30) 否 工厂名

零件表

列名 数据类型 能否空值 默认值 键/索引 说明

ComNo varchar(10) 否 主键、索引 零件号

ComWe int 否 重量

ight

ComPrnumeric(5,1) 否 价格

ice

7

组成字段

FacName,FMName

WorkNo,WorkAddress,Workphone,CNo,FacNa

me

WorkerNo,WorkerName,WorkerSex,WorkerTyp

e, WorkAge,WorkNo

ProductNo,ProductName, ProductPrice,

WorkNo

ComNo,ComWeight, Comprice

职工表

列名 数据类型 能否空值 默认值 键/索引 说明

Worker varchar(10) 否 主键、索引 职工号

NO

Worker varchar(8) 否 姓名

Name

Worker int 否 年龄

Age

Worker varchar(2) 否 性别

Sex

Worker varchar(20) 否 工种

Type

WorkNO Varchar(10) 否 车间号

产品表

列名 数据类型 能否空默认值 键/索引 说明

ProductNo varchar(10) 否 主键、索引 产品号

ProductName varchar(20) 否 产品名

ProductPricnumeric(5,否 价格

e 1)

WorkNo Varchar(10) 否 车间号

仓库表

列名 数据类型 能否空值

WareN varchar(10) 否

o

WName varchar(8) 否

Warep

hone

FacNa

me

Varchar(12) 否

Varchar(30) 否

默认值

键/索引

主键、索引

说明

仓库号

仓库主任

姓名

仓库电

工厂名

生产表

列名 数据类型 能否空值

Workvarchar(10) 否

No

varchar(10) 否

ComNo

Int 否

8

默认值

键/索引

主键

主键

说明

车间号

零件号

生产零件数

comNum1

组装表

列名 数据类型 能否空值 默认值

varchar(10) 否

ProductNo

ComNo varchar(10) 否

int 否

Comnum2

proNum Int 否

产品存储表

列名 数据类型 能否空值 默认值

WareNo varchar(10) 否

varchar(10) 否

ProductNo

Snum2 int 否

零件存储表

列名 数据类型 能否空值 默认值

WareNo varchar(10) 否

varchar(10) 否

ComNo

Snum1 Int 否

创建数据库和关系表

1.创建factory数据库

键/索引

主键

主键

说明

产品号

零件号

组装零件数

组装产品数

键/索引

主键

主键

说明

仓库号

产品号

产品存放量

键/索引

主键

主键

说明

仓库号

零件号

零件存放量

2创建factory(工厂)表

9

3创建workshop(车间)表

4创建worker(职工)表

5创建product(产品)表

6创建component(零件)表

7创建warehouse(仓库)表

10

8创建WC(生产)表

9创建PC(组装)表

10创建WaP(存储表1)仓库----产品

11创建Wac(存储表2)仓库----零件

11

(3)确定索引文件和索引关键字

Table 索引文件

Factory Factory_IDX

Workshop Workshop_IDX

Worker Worker_IDX

Product Product_IDX

Compoent Compents_IDX

Warehouse Warehouse_IDX

WC WC_IDX

PC PC_IDX

WAC WAC_IDX

WAP WAP_IDX

索引关键字

FacNo

WorkNo

WorkerNo

ProductNo

ComNo

WareNo

ProTime+WorkNo+ComNo

ProductNO+ComNO

WareNo+ComNo

WareNo+ProductNo

4.5数据库安全及维护设计阶段

(1)设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)

添加新用户hh

12

(2)添加角色

(3)授权

1把factory表的所有权限授给hh

2把workshop表的所有权限授给hh

3把worker表的所有权限授给hh

4把product表的所有权限授给hh

13

5把component表的所有权限授给hh

6把warehouse表的所有权限授给hh

14

(4)创建索引

1

为工厂表在工厂名FacName上建立索引

2

为车间表在车间号WorkNo上建立索引

15

3

为职工表在职工编号WorkerNo上建立索引

4

为产品表在产品号ProductNo上建立索引

5

为零件表在零件号ComNo上建立索引

16

6

为仓库表在仓库号WareNo上建立索引

(5)创建视图

(6)创建存储过程

1在工厂表上创建存储过程

2在车间表上创建存储过程

17

3在职工表上创建存储过程

4在产品表上创建存储过程

5在零件表上创建存储过程

6在仓库表上创建存储过程

18

7在生产表上创建存储过程

8在组装表上创建存储过程

9在零件存储表上创建存储过程

10在产品存储表上创建存储过程

19

执行存储过程

1向工厂表中插入数据

2向车间表中插入数据

3向职工表中插入数据

20

4向产品表中插入数据

5向零件表中插入数据

21

6向仓库表中插入数据

7向生产表中插入数据

22

8向组装表中插入数据

9向零件存储表中插入数据

23

10向产品存储表中插入数据

4.6.2查询存储过程

1功能是通过某一职工的姓名查询他的全部信息

2功能是通过某一产品的名称查询该产品的基本信息

24

3功能是通过某一零件的名称查询该零件的基本信息

4功能是通过某一产品的名称查询该产品所需要的零件种类与数量

5通过某一车间号查询改车间的所有信息

25

6通过输入某一日期查询该日生产零件的种类和零件的数目以及生产该零件的

车间号

4.6.3创建触发器

1在生产表上建立触发器,当上生产表中插入一行数据时,零件存储表中零件的

库存量就会增加,零件的库存量等于先前的零件库存量加上生产表中生产零件的

数量

触发前

26

触发后

2在产品存储表上建立触发器,当向产品存储表中插入数据,即产品的库存量增

加时,零件的库存量就会减少,某种零件的库存量等于先前的库存量减去该种产

品所需要的该零件数乘以生产产品的数量

27

五设计一个适合的数据库备份策略

创建一个磁盘备份的设备

use factory

go

Exec sp_addumpdevice 'disk','factory_full','f:'

go

完全备份

Use factory

go

backup database factory to factory_full with init

go

1完全备份工厂数据库

28

增量备份

Use factory

go

backup database factory to disk='f:hufactory_'

with noinit,differential

go

还原整个university数据库

Restore database factory from factory_full

还原差异备份

Restore database factory from factory_differ with norecovery

还原日志备份

Restore database log from factory_log with recovery

29

总结

这次课程设计加深了我对数据库系统概论相关知识和SQL SERVER相关功能

的理解。虽然课程设计已经结束了。回想着这个学期自己所学的《数据库系统概

论》、以及这次做的课程设计,感触蛮深的。

首先,在这次课程设计中,我对建立基本表、视图、索引等,都比以前更加

的熟练。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在删除

和更新数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入

的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。

另外我还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一

点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就

会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,

甚至有时要推倒很多前面做的工作重来。有时候,我自己觉得我写的语句正确,

但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛

苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,

往往几天的时间还没有一点进展。这时候,我一般是先自己通过书本,手册和资

料找解决办法,实在没辙了才上网查找相关信息。

由于我的知识浅薄,经验不足及阅历颇浅,在设计的过程中也存在一些问题。

比如需求分析阶段的工作完成的不是很充分,建E-R图时没有充分理解实体和联

系的区别,以致在后面处理问题时,遇到了困难,很多功能无法实现。在后面的

设计过程中,前后时常会出现矛盾,不一致现象,因此要反复的修改前面的结果,

导致整个工作进行的不是很顺利。另外比如功能过少等问题,我会在工作的使用

过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。

最后,还要感谢老师对我的帮助,给我提供了许多宝贵的意见。

30

参考文献:

[1] 萨师煊,王珊,数据库系统概论(第四版). 北京:高等教育出版社,2008

[2]Jeffrey ,Jennifer Widom 数据库系统基础教程(第三版).北京机械

工业出版社,2009.8

31

发布评论

评论列表 (0)

  1. 暂无评论