工程项目管理系统大数据库系统设计

工程项目管理系统数据库的设计要求

1.需求分析

(1)基本实体集:工程项目,项目经理,用户,项目文档,项目材料,使用。

(2)属性:工程项目(项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号#、用户编号#)

项目经理(工号、姓名、性别、出生年月、电话)

用户(用户编号、用户单位、地址、电话、联系人)

项目文档(文档编号、项目合同号#、文档形式、归档时间、内容概述)

项目材料(材料编号、材料名、材料报价、数量)

使用(材料编号、项目合同号、使用日期、使用数量)

(3)实体间的联系:一个工程项目有一个项目文档,

每个工程项目用不同的项目材料。一个用户可以拥有多个使用。一个项目经理管理多个工程项目。

(4)存在的联系:

用户与工程项目之间有拥有关系,一对多。

项目经理与工程项目有管理关系,一对多。

工程项目与项目文档有属于关系,一对多。

工程项目与项目材料有使用关系,多对多

(1)数据项:用户编号

含义说明:唯一标识每个用户

别名:无

类型:字符型

长度:5

取值范围:00000至99999

取值含义:按顺序定义。

(2)数据项:文档编号

含义说明:唯一标识每个文档

别名:无

类型:字符型

长度:5

取值范围:00000至99999

取值含义:按顺序定义。

(2)数据结构:工程项目

含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息

组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号

(3)数据项:材料编号

含义说明:唯一标识每个编号

别名:无

类型:字符型

长度:5

取值范围:00000至99999

取值含义:按顺序定义。

(2)数据结构:工程项目

含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息

组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号

2.概念结构设计

3.逻辑结构设计

工程项目(项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号#、用户编号#)

项目经理(工号、姓名、性别、出生年月、电话)

用户(用户编号、用户单位、地址、电话、联系人)

项目文档(文档编号、项目合同号#、文档形式、归档时间、内容概述)

项目材料(材料编号、材料名、材料报价、数量)

使用(材料编号、项目合同号、使用日期、使用数量)

4.物理设计

5.代码任务

a)创建数据库代码

CREATE DATABASE [工程项目管理系统]

b)创建各个表代码

CREATE TABLE工程项目( 项目合同号char(5),

项目名称char(50),

使用工时char(50),

报交日期char(50),

付款规定char(50),

工程总额char(50),

工号char(9),

用户编号char(9)); CREATE TABLE使用(

材料编码char(50),

项目合同号char(5),

使用日期char(50),

使用数量char(50)); CREATE TABLE项目材料( 材料编码char(50),

材料名char(50),

材料报价char(50),

数量char(50)); CREATE TABLE项目经理(

工号char(9),

姓名char(20),

性别char(2),

出生年月char(20),

电话char(11));

CREATE TABLE项目文档(

文档编号char(9),

项目合同号char(5),

文档形式char(50),

归档时间char(50),

内容概述char(50));

CREATE TABLE用户

用户编号char(9),

用户单位char(50),

地址char(50),

电话char(11),

联系人char(50));

c)创建约束要求:

1.每个表创建主键

alter table工程项目

add constraint pk_工程项目primary key(项目合同号);;

alter table使用

add constraint pk_使用primary key(材料编码,项目合同号,使用

日期);

alter table项目材料

add constraint pk_项目材料primary key(材料编码);

alter table项目经理

add constraint pk_项目经理primary key(工号);

alter table项目文档

add constraint pk_项目文档primary key(文档编号);

alter table用户

add constraint pk_用户primary key(用户编号);

2.工程项目表创建外键(用户号#、工号#)

alter table工程项目

add constraint fk_工程项目foreign key (用户编号) references [用户](用户编号);

alter table工程项目

add constraint fk_工程项目foreign key (工号) references [项目经理](工号);

3.项目文档表创建外键(项目合同号#)

alter table项目文档

add constraint fk_项目文档foreign key (项目合同号) references [使用](项目合同号);

4.使用表创建外键(材料编号、项目合同号)

alter table使用

add constraint fk_使用foreign key (材料编号)references[项目材料](材料编号);

alter table使用

add constraint fk_使用foreign key (项目合同号)references [项目文档](项目合同号);

5.工号属性创建检查约束(工号必须在00000-99999之间)alter table工程项目

add constraint c1 check (工号between 00000 and 99999);

6.性别属性创建检查约束(只能取“男”或者“女”);

alter table项目经理

add constraint c2 check (性别in('男','女'));

7.电话属性创建检查约束(只能取130********-189********)

alter table项目经理

add constraint c3 check (电话between 130******** and

189********);

alter table用户

add constraint c4 check (电话between130******** and 189********);

a)创建视图要求

i.创建一个视图,包括项目合同号、项目名称、使用

工时、报交日期、用户编号#、归档时间、使用数量,并按

照项目合同号升序排序

CREATE VIEW view1

as

select工程项目.项目合同号,项目名称,使用工时,报交日期,用户编号,使用日期,使用数量

from工程项目,使用

where工程项目.项目合同号=使用.项目合同号;

b)创建触发器要求

i.创建一个触发器,如果有用户要修改"使用表"中的

材料编号,则显示一行字“禁止修改材料编号”。

ii.创建一个触发器,如果有用户往“项目文档表”中

插入数据,而该数据的项目合同号是“工程项目”表中没

有的,先到“工程项目”表中插入此项目合同号。

c)授权要求:

i.给用户“工程师”授予对“工程项目”表的修改权

限;给用户“员工”只授予对“工程项目”表的查询权,

给“项目经理”授予所有表的查询权

d)能实现的查询要求:

i.查询项目合同号为10001项目的项目合同号、项目

项目名称、归档时间、报交日期、工程总额;

ii.查询项目经理叫刘利的项目工程的工程总额和材料

编号;

iii.查询项目名称为锅炉环保的项目的使用日期和使用

数量

相关文档
最新文档