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

更新时间:2023-05-24 19:47:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

1、需求分析阶

1.1数据项的含义和取值 (1) 功能需求

工厂需建立一个管理数据库存储以下信息: 1、 工厂包括厂名和厂长名。

2、 一个厂内有多个车间,每个车间有1车间号、车间主任姓名、地址和电话。 3、 一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。 4、 一个车间生产多种产品,产品有产品号、产品名称和价格。

5、 一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。 6、 一个产品由多种零件组成,一种零件也可装配出多种产品。 7、 产品与零件均存入仓库中。

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

(2) 数据字典

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

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

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

(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

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

仓库:Warehouse

仓库号:WarehouseID

仓库主任编号:WarehouseMasterID 电话:WarehouseTel

1.3 数据结构

表1-3 数据结构

数据结构名 含义说明 组成

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

车间表 定义了车间的相关信息 车间编号,车间名称,车间主任编号,地址,电话。 员工表 定义了员工表的相关信息 职工号,姓名,年龄,性别,工种,车间号 产品表 定义了产品的相关信息 产品号,产品名称,价格,车间编号 零件表 定义了零件的相关信息 零件号,重量,价格 车间零件表 定义了车间与零件的信息 车间编号,零件号

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

仓库表 定义仓库的相关信息 仓库号, 主任姓名,电话,工厂号 零件仓库表 定义了零件与仓库的信息 仓库编号,零件编号 产品仓库表 定义了产品与仓库的信息 仓库编号,产品编号

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

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

2、概念结构设计

2.1 E-R图实体

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

2.2全局E-R图

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

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

2.3 总体E-R图

工人工厂车间零件产品库存量仓库电话主任 图2-2 模型实体E-R图

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

3、逻辑结构设计

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

工厂(厂名,厂长名);

车间(车间号,地址,车间主任姓名,电话,工厂编号); 工人(职工号,姓名,年龄,性别,工种,车间号); 仓库(仓库号,电话,仓库主任编号,工厂编号); 产品(产品号,产品名称,价格); 零件(零件号,数量,价格); 车间零件(车间号,零件号); 车间产品(车间号,产品号);

仓库产品(仓库号,产品号,库存量); 仓库零件(仓库号,零件号,库存量); 拼装(零件号,产品号)

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

(1)主关键字:

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

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

(2)函数依赖

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

实体名称:工厂

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

实体名称: 车间

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

实体名称: 工人

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

实体名称: 仓库

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

实体名称: 产品

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

实体名称: 零件

零件号→(重量,价格)

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

(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 厂长表

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

表4-3 主任表

表4-4 车间表

表4-5 工人表

表4-6 产品表

表4-7 车间产品表

表4-8 零件表

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

表4-9 车间零件表

表4-10 产品零件表

表4-11 仓库表

表4-12 仓库产品表

4.2 数据库截图

表4-12 仓库产品表

图4-1 建库截图

图4-2 工厂表截图

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

图4-3 厂长表截图

图4-4 主任表截图

图4-5 车间表截图

图4-6 工人表截图

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

图4-7 产品表截图

图4-8 车间产品表截图

图4-9 零件表截图

图4-10 车间零件表截图

图4-11 产品零件表截图

图 4-12 仓库表截图

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

图4-13 仓库产品表截图

图4-14 仓库零件表截图

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

图4-15 数据库关系图

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

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) 4.4 创建视图和存储过程

创建工厂视图

CREATE VIEW Factory_view(FactoryID,FactoryName,FactoryDirectorID) AS

SELECT * FROM Factory 删除视图

DROP VIEW Factory_view

索引关键字PartID

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

图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 执行存储过程截图

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

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 增量备份

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

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图,并且确定各个实体之间的联系及每个实体的主码、外码等主要元素。分析完这些就可以进行写代码了。完成数据库系统的需求分析、概念结构设计、逻辑结构设计之后,就可以开始进入物理设计阶段了(其实就是开始写代码)。最后,经过调试、运行,代码完成了。那么就是最后的收尾阶段了——写论文。 总之,此次课程设计收获不少,不仅是数据库学习的收获,还受到了很大的启发,更给了我一股力量,推我去努力继续学习开发出非常实用的后台和应用程序来!当然不忘感谢老师和一些同学在课程设计期间给予我们的帮助,真诚的对你们说声谢谢。

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

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

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

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

/*

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.建立表格

*****************************************/ /********************* 主题:工厂表

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

主键:工厂编号

属性:工厂编号、工厂名称、厂长编号 **********************/ 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 */

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

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

主题:主任表

主键:主任编号

属性:主任编号、姓名、年龄、性别、工资 **************************/ CREATE TABLE Master

(

MasterID NCHAR(8) PRIMARY KEY,--主任编号,主键 MasterPosition NCHAR(50) NOT NULL,--主任职位,非空 MasterName NCHAR(20) NOT NULL,--主任姓名,非空 MasterAge NCHAR(3),--主任年龄

MasterSex NCHAR(4) CHECK (MasterSex IN('男','女')),--性别,检测 MasterSalary MONEY DEFAULT (0),--主任工资,默认0 )

/*test

INSERT INTO Master VALUES('Wsm1','车间主任','阿里梅奥','50','男',10000) INSERT INTO Master VALUES('Whm1','仓库主任','求伯君','55','男',10000)

SELECT * FROM Master

DELETE Master

DROP TABLE Master */

/********************* 主题:车间表

主键:车间编号

属性:车间编号、车间主任编号、车间地址、车间电话、工厂编号 **********************/ CREATE TABLE Workshop (

WorkshopID NCHAR(8) PRIMARY KEY,--车间编号,主键 WorkshopMasterID NCHAR(8) NOT NULL,--车间主任编号,非空 WorkshopAdd NCHAR(50) NOT NULL,--车间地址,非空 WorkshopTel NCHAR(20) NOT NULL,--车间电话,非空

FactoryID NCHAR(8) NOT NULL,--工厂编号,外键

FOREIGN KEY (FactoryID) REFERENCES Factory(FactoryID),--建立关系,外键引用 FOREIGN KEY (WorkshopMasterID)REFERENCES Master(MasterID),--建立关系,外键引用 )

/*test

INSERT INTO Workshop VALUES('W1','Wsm1','北京市通州区南翔路99号','010-12345678','F1')

SELECT *

FROM Workshop

本文来源:https://www.bwwdw.com/article/kdv4.html

Top