文档库 最新最全的文档下载
当前位置:文档库 › SQL工厂数据库系统课程设计说明书和代码

SQL工厂数据库系统课程设计说明书和代码

1、需求分析阶

1.1数据项的含义和取值

(1)功能需求

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

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

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

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

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

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

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

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

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

(2)数据字典

本数据库管理系统由六个实体组成,即工厂、车间、工人、产品、零件、仓库,实体的数据项定义如下:

表1-1 数据项含义和取值表

(3)数据项含义

工厂 (工厂名称,厂长编号)

车间 (车间编号,主任编号,车间地址,车间电话)

员工 (职工编号,职工姓名,职工年龄,职工性别,职工工种) 产品 (产品编号,产品名称,产品价格)

零件 (零件编号,零件重量,零件价格)

仓库 (仓库编号,主任编号,仓库电话)

生产零件 (车间编号,零件编号,零件数量)

生产产品 (产品编号,零件编号,产品数量)

储存产品 (仓库编号,产品编号,产品库存量)

储存零件 (仓库编号,零件编号,产品库存量)

1.2 数据项在目标系统中的名称

工厂:Factory

厂名:FactoryName

厂长;FactoryDirectorID

车间:Workshop

车间号:WorkshopID

车间主任:WorkshopMasterID

地址:WorkshopAdd

电话:WorkshopTel

工人:Worker

职工号:WorkerID

姓名:WorkerName

年龄:WorkerAge

性别:WorkerSex

工种:WorkerType

产品:Product

产品号:ProductID

产品名称:ProductName

价格:ProductPrice

零件:Part

零件号:PartID

重量:PartWeight

价格:PartPrice

仓库:Warehouse

仓库号:WarehouseID

仓库主任编号:WarehouseMasterID

电话:WarehouseTel

1.3 数据结构

表1-3 数据结构

数据结构名含义说明组成

工厂表定义了工厂的相关信息厂名, 厂长编号

车间表定义了车间的相关信息车间编号,车间名称,车间主任编号,地址,电话。员工表定义了员工表的相关信息职工号,姓名,年龄,性别,工种,车间号

产品表定义了产品的相关信息产品号,产品名称,价格,车间编号

零件表定义了零件的相关信息零件号,重量,价格

车间零件表定义了车间与零件的信息车间编号,零件号

产品零件表定义了产品与零件的信息产品编号,零件号

仓库表定义仓库的相关信息仓库号, 主任姓名,电话,工厂号

零件仓库表定义了零件与仓库的信息仓库编号,零件编号

产品仓库表定义了产品与仓库的信息仓库编号,产品编号

厂长表定义了厂长的信息厂长编号、姓名、年龄、性别、工资

主任表定义了主人的相关信息主任编号、姓名、年龄、性别、工资

2、概念结构设计

2.1 E-R图实体

该E-R图包含工厂、车间、工人、产品、零件、仓库六个实体2.2全局E-R图

图2-1 全局实体E-R图

2.3 总体E-R图

职工号姓名性别

工人工种

m

工作

厂名厂长 1 车间号

1 m

工厂从属车间车间主任

地址

m m

电话

生产生产

零件号 n n 产品号

重量零件拼装产品名称

m n

价格价格

m m

库存量存储存储库存量

1 n n 仓库号

m 拥有仓库电话

主任

图2-2 模型实体E-R图

3、逻辑结构设计

3.1实体模型转化为关系模型

工厂(厂名,厂长名);

车间(车间号,地址,车间主任姓名,电话,工厂编号);工人(职工号,姓名,年龄,性别,工种,车间号);

仓库(仓库号,电话,仓库主任编号,工厂编号);

产品(产品号,产品名称,价格);

零件(零件号,数量,价格);

车间零件(车间号,零件号);

车间产品(车间号,产品号);

仓库产品(仓库号,产品号,库存量);

仓库零件(仓库号,零件号,库存量);

拼装(零件号,产品号)

3.2关系的主关键字、函数依赖、范式判定

(1)主关键字:

本数据库中涉及的主关键字如下:

工厂编号车间编号职工号仓库号产品号零件号

(2)函数依赖

本数据库中的函数依赖如下:

实体名称:工厂

工厂编号→(工厂名称,厂长编号)

实体名称:车间

车间编号→(电话,地址,车间主任编号)

实体名称:工人

职工号→(姓名,年龄,性别,工种)

实体名称:仓库

仓库号→(仓库主任编号,电话)

实体名称:产品

产品号→(产品名称,价格)

实体名称:零件

零件号→(重量,价格)

(3)范式判定

Factory(FactoryID->FactoryName, FactoryDirectorID) 2NF

FactoryDirector(FactoryDirectorID-> FactoryDirectorName, FactoryDirectorAge,FactoryDirectorSex, FactoryDirectorSalary) 3NF

Workshop(WorkshopID->WorkshopAdd, WorkshopTel, WorkshopMasterID) 2NF

Master(MasterID-> MasterPosition, MasterName, MasterAgeSex, MasterSalary) 3NF Product(ProductID->ProductName,ProductPrice) 3NF

Part(Part->PartWeight,PartPrice) 3NF

Worker(WorkerID->WorkerName,WorkerAge,WorkerSex,WorkerType,WorkerSalary) 3NF Warehouse(WarehouseID->WarehouseTel,WarehouseMasterID) 2NF

WarehouseProduct(WarehouseID, ProductID->Quantity) 3NF

WarehousePart(WarehouseID,PartID->Quantity) 3NF

在FactoryManage数据库中,我把厂长和主任单独建表,所以在Factory表中,FactoryID 决定了FactoryDirectorID,所以在该表中即存在了传递依赖,所以该表属于2NF。而在表格FactoryDirector中,FactoryDirectorID便作为主码存在,并且每一个数据项都是不可分割的,在此表中不存在部分依赖关系,所以此表的范式是第三范式。其余各表的范式的判定类似。

4、物理设计

4.1 数据库表

建立FactoryManage数据库,共建立了12个表,各张表的具体信息如下:

表4-1工厂表

表4-2 厂长表

表4-3 主任表

表4-4 车间表

表4-5 工人表

表4-6 产品表

表4-7 车间产品表

表4-8 零件表

表4-9 车间零件表

表4-10 产品零件表

表4-11 仓库表

表4-12 仓库产品表

表4-12 仓库产品表

4.2 数据库截图

图4-1 建库截图

图4-2 工厂表截图

图4-3 厂长表截图

图4-4 主任表截图

图4-5 车间表截图

图4-6 工人表截图

图4-7 产品表截图

图4-8 车间产品表截图

图4-9 零件表截图

图4-10 车间零件表截图

图4-11 产品零件表截图

图 4-12 仓库表截图

图4-13 仓库产品表截图

图4-14 仓库零件表截图

图4-15 数据库关系图

4.3索引文件和索引关键字

在Factory表中

CREATE UNIQUE INDEX FactoryIndex ON Factory (FactoryID)

在企业管理器中查看到的截图如下:

图4-16 索引截图

其他索引如下:

CREATE UNIQUE INDEX WorkshopIndex

ON Workshop(WorkshopID) 索引关键字WorkshopID

CREATE UNIQUE INDEX WorkerIndex

ON Workers(WorkerID) 索引关键字WorkerID

CREATE UNIQUE INDEX WarehouseIndex

ON Warehouse(WarehouseID) 索引关键字WarehouseID

CREATE UNIQUE INDEX ProductIndex

ON Product(ProductID) 索引关键字ProductID

CREATE UNIQUE INDEX PartIndex

ON Part(PartID) 索引关键字PartID

4.4 创建视图和存储过程

创建工厂视图

CREATE VIEW Factory_view(FactoryID,FactoryName,FactoryDirectorID) AS

SELECT *

FROM Factory

删除视图

DROP VIEW Factory_view

图4-17 创建工厂视图

创建主任视图

CREATE VIEW Master_view

AS

SELECT MasterID,MasterPosition, MasterName,MasterAge,MasterSex,MasterSalary FROM Master

图4-18 创建主任视图

存储过程:

CREATE PROCEDURE Proc_AddProduct

@ProcductID NCHAR(8),@ProcductName NCHAR(50),@ProcductPrice MONEY

as

INSERT INTO Product

VALUES(@ProcductID,@ProcductName,@ProcductPrice)

执行如下存储过程之后截图:

EXEC Proc_AddProduct('Pr3','联想数码相机',1200.0)

图 4-19 执行存储过程截图

5、数据库安全及维护

5.1 用户身份认证

创建新登录用户

EXEC sp_addlogin 'admin','123','FactoryManage';

创建一个sql server登录,登录名为admin密码是123

创建数据库用户:

EXEC sp_grantdbaccess 'admin','user1'

添加一个新用户user1,他所对应的登录名是admin

图5-1 数据库用户截图

5.2 数据库安全

授权

GRANT ALL PRIVILEGES

ON TABLE Factory

TO user1

图 5-2 user1的权限截图

5.4 数据库的备份与还原

创建数据的备份设备

EXEC sp_addumpdevice ‘disk’,’factory_full’,’ C:\Documents and Settings\Administrator\桌面\数据库课程设计_周建阳\备份\ FactoryManage.bak’备份数据库

完全备份

BACKUP DATABASE FactoryManage TO FactoryManage_full WITH INIT

增量备份

BACKUP DATABASE FactoryManage TO DISK=’ C:\Documents and

Settings\Administrator\桌面\数据库课程设计_周建阳\备份

FactoryManage_diff.bak’ WITH NOINIT,DIFFERENTIAL

日志备份

BACKUP LOG FactoryManage TO FactoryManage_log WITH NOINIT

数据库还原

还原整个数据库

RESTORE DATABASE FactoryManage FROM FactoryManage_full

还原差异备份

RESTORE DATABASE FactoryManage FROM FactoryManage_differ WITH NORECOVERY

还原日志备份

RESTORE LOG FactoryManage FROM FactoryManage_log WITH NORECOVERY

6、总结

每次做数据库的实验,都能很快的完成。所以在最开始看到课程设计的题目的时候,自己也没有怎么觉得有难度,好像就是一个普通的实验一样。在做完了整个课程设计自己之后很多的感悟。

每节课,每个实验都是把数据库的知识分解开,慢慢来吃透,课程设计则又是把分解了的知识点综合到了一起,从需求分析,概念设计和逻辑设计到物理设计、数据库安全和维护,各个细节都要考虑到,而且越深究就越发现自己设计的数据库的不完善,越多的地方需要修改,没改动一次,心里总有一丝丝的成就感。

实验的开发过程大致是这样的:根据题目上面的要求进行数据的建模。先分清楚题目中包含的实体个数、并且把每个实体所包含的数据项目整理出来。接着就是根据自己整理的数据项,先分析各个数据项之间的关系,然后画成E-R图,并且确定各个实体之间的联系及每个实体的主码、外码等主要元素。分析完这些就可以进行写代码了。完成数据库系统的需求分析、概念结构设计、逻辑结构设计之后,就可以开始进入物理设计阶段了(其实就是开始写代码)。最后,经过调试、运行,代码完成了。那么就是最后的收尾阶段了——写论文。

总之,此次课程设计收获不少,不仅是数据库学习的收获,还受到了很大的启发,更给了我一股力量,推我去努力继续学习开发出非常实用的后台和应用程序来!当然不忘感谢老师和一些同学在课程设计期间给予我们的帮助,真诚的对你们说声谢谢。

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

[2] 徐长梅(编著).<<数据库系统原理>>课程实验指导书.长沙学院计算机科学与技术系.2008.

/*

Title:工厂数据库管理系统

IDE:SQL2000

Author:火星瓢虫

Time:2009-6

注:变量长度统一如下:

编号NCHAR(8),人名NCHAR(20),性别NCHAR(4),年龄NCHAR(3),电话NCHAR(20),价格NCHAR(10),重量NCHAR(10),数量INT,文本NCHAR(50)

*/

/*************************************

Step-1.建库

*************************************/

CREATE DATABASE FactoryManage

ON PRIMARY--mdf文件

(

NAME=FactoryManage_data,

FILENAME='C:\Documents and Settings\Administrator\桌面\数据库课程设计_周建阳\数据库\FactoryManage.mdf',--数据库存储地址

SIZE=50MB,

MAXSIZE=70MB,

FILEGROWTH=1MB

)

LOG ON--ldf文件

(

NAME=FactoryManage_log,

FILENAME='C:\Documents and Settings\Administrator\桌面\数据库课程设计_周建阳\数据库\FactoryManage.ldf',--数据库日志存储地址

SIZE=10MB,

MAXSIZE=15MB,

FILEGROWTH=1MB

)

/*****************************************

Step-2.使用数据库

******************************************/

USE FactoryManage

/*****************************************

Step-3.建立表格

*****************************************/

/*********************

主题:工厂表

主键:工厂编号

属性:工厂编号、工厂名称、厂长编号

**********************/

CREATE TABLE Factory

(

FactoryID NCHAR(8) PRIMARY KEY,--工厂编号,主键

FactoryName NCHAR(50) NOT NULL,--工厂名称,非空

FactoryDirectorID NCHAR(8) UNIQUE NOT NULL--厂长编号,唯一,非空

)

/*test

INSERT INTO Factory VALUES('F1','Lenovo Group','FD1')

SELECT *

FROM Factory

DELETE Factory

DROP TABLE Factory

*/

/*********************

主题:厂长表

主键:厂长编号

属性:厂长编号、姓名、年龄、性别、工资

*********************/

CREATE TABLE FactoryDirector

(

FactoryDirectorID NCHAR(8) PRIMARY KEY,--厂长编号,主键FactoryDirectorName NCHAR(20) NOT NULL,--厂长姓名,非空

FactoryDirectorAge NCHAR(3),--厂长年龄

FactoryDirectorSex NCHAR(4) CHECK (FactoryDirectorSex IN('男','女')),--性别,非空,检测错误

FactoryDirectorSalary MONEY DEFAULT(0),--厂长工资,默认为0

FOREIGN KEY (FactoryDirectorID) REFERENCES Factory(FactoryDirectorID),--建立关系,外键引用

)

/*test

INSERT INTO FactoryDirector VALUES('FD1','柳传志','40','男',15000)

SELECT *

FROM FactoryDirector

DELETE FactoryDirector

DROP TABLE FactoryDirector

*/

/*************************

相关文档
相关文档 最新文档