1、工程项目管理系统数据库的设计要求1. 需求分析(1)基本实体集:工程项目,项目经理,用户,项目文档,项目材料,使用。(2 )属性:工程项目(项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号#、用户编号#)项目经理(工号、姓名、性别、出生年月、电话 )用户(用户编号、用户单位、地址、电话、联系人)项目文档(文档编号、项目合同号#、文档形式、归档时间、内容概述)项目材料(材料编号、材料名、材料报价、数量)使用(材料编号、项目合同号、使用日期、使用数量)(3 )实体间的联系:一个工程项目有一个项目文档,每个工程项目用不同的项目材料。一个用户可以拥有多个使用。一个项目经理管理多个工程
2、项目。(4 )存在的联系:用户与工程项目之间有拥有关系,一对多。项目经理与工程项目有管理关系,一对多。工程项目与项目文档有属于关系,一对多。工程项目与项目材料有使用关系,多对多数据字典(1 ) 数据项:项目合同号含义说明:唯一标识每个学生别名:无类型:字符型长度:5取值范围:00000 至 99999取值含义:按顺序定义。(2 )数据结构:工程项目含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号(3 )数据流: 体检结果说明: 学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成
3、: 平均流量: 高峰期流量:(4 )数据存储: 学生登记表说明: 记录学生的基本情况流入数据流:流出数据流:组成: 数据量: 每年 3000 张存取方式: 随机存取处理过程:分配宿舍说明: 为所有新生分配学生宿舍输入: 学生,宿舍,输出: 宿舍安排处理: 在新生生宿舍。要 同一性别的学生,同一个学生只能 安排在一个宿舍中。每个学生的居面积不小于 3 平方米。宿舍其处理时间应不超过 15 分钟。数据项:工号含义说明:唯一标识每个项目经理别名:无类型:字符型长度:9取值范围:000000000 至 999999999取值含义:按顺序定义。(2 )数据结构:工程项目含义说明:是工程项目管理系统的主体
4、数据结构,定义了一个工程项目的有关信息组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号(3 )数据流: 体检结果说明: 学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成: 平均流量: 高峰期流量:(4 )数据存储: 学生登记表说明: 记录学生的基本情况流入数据流:流出数据流:组成: 数据量: 每年 3000 张存取方式: 随机存取处理过程:分配宿舍说明: 为所有新生分配学生宿舍输入: 学生,宿舍,输出: 宿舍安排处理: 在新生生宿舍。要 同一性别的学生,同一个学生只能 安排在一个宿舍中。每个学生的居面积不小于 3 平方米。宿舍其处理时间应不超过
5、15 分钟。(2 ) 数据项:用户编号含义说明:唯一标识每个用户别名:无类型:字符型长度:5取值范围:00000 至 99999取值含义:按顺序定义。(3 ) 数据项:文档编号含义说明:唯一标识每个文档别名:无类型:字符型长度:5取值范围:00000 至 99999取值含义:按顺序定义。(2 )数据结构:工程项目含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号(3 )数据流: 体检结果说明: 学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成: 平均流量: 高峰期流量:(4 )
6、数据存储: 学生登记表说明: 记录学生的基本情况流入数据流:流出数据流:组成: 数据量: 每年 3000 张存取方式: 随机存取处理过程:分配宿舍说明: 为所有新生分配学生宿舍输入: 学生,宿舍,输出: 宿舍安排处理: 在新生生宿舍。要 同一性别的学生,同一个学生只能 安排在一个宿舍中。每个学生的居面积不小于 3 平方米。宿舍其处理时间应不超过 15 分钟。(4 ) 数据项:材料编号含义说明:唯一标识每个编号别名:无类型:字符型长度:5取值范围:00000 至 99999取值含义:按顺序定义。(2 )数据结构:工程项目含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息组成
7、:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号(3 )数据流: 体检结果说明: 学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成: 平均流量: 高峰期流量:(4 )数据存储: 学生登记表说明: 记录学生的基本情况流入数据流:流出数据流:组成: 数据量: 每年 3000 张存取方式: 随机存取处理过程:分配宿舍说明: 为所有新生分配学生宿舍输入: 学生,宿舍,输出: 宿舍安排处理: 在新生生宿舍。要 同一性别的学生,同一个学生只能 安排在一个宿舍中。每个学生的居面积不小于 3 平方米。宿舍其处理时间应不超过 15 分钟。2. 概念结构设计3. 逻辑结
8、构设计工程项目(项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号#、用户编号#)项目经理(工号、姓名、性别、出生年月、电话 )用户(用户编号、用户单位、地址、电话、联系人)项目文档(文档编号、项目合同号#、文档形式、归档时间、内容概述)项目材料(材料编号、材料名、材料报价、数量)使用(材料编号、项目合同号、使用日期、使用数量)4. 物理设计字段名 类型 字节数 索引 说明工号 Char 9 主键 员工编号姓名 Char 20性别 Char 2出生日期 Char 20 年龄的定义电话 Char 11 联系方式5. 代码任务a) 创建数据库代码CREATE DATABASE 工程
9、项目管理系统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);
10、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 constrai
11、nt 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_用户 pr
12、imary 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.使用表创
13、建外键(材料编号、项目合同号)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. 性别属性创建检查约束(只能取“男”或者“女”)
14、;alter table 项目经理add constraint c2 check (性别 in(男 ,女);7. 电话属性创建检查约束(只能取 13000000000-18999999999)alter table 项目经理add constraint c3 check (电话between 13000000000 and 18999999999);alter table 用户add constraint c4 check (电话 between 13000000000 and 18999999999);a) 创建视图要求i. 创建一个视图,包括项目合同号、项目名称、使用工时、报交日期、用户编
15、号#、归档时间、使用数量,并按照项目合同号升序排序CREATE VIEW view1 asselect 工程项目. 项目合同号, 项目名称,使用工时, 报交日期, 用户编号,使用日期,使用数量from 工程项目,使用where 工程项目 .项目合同号=使用. 项目合同号;b) 创建触发器要求i. 创建一个触发器,如果有用户要修改“使用表“ 中的材料编号,则显示一行字“禁止修改材料编号” 。ii. 创建一个触发器,如果有用户往“项目文档表”中插入数据,而该数据的项目合同号是“工程项目”表中没有的,先到“工程项目”表中插入此项目合同号。c) 授权要求:i. 给用户“工程师”授予对“工程项目”表的修改权限;给用户“员工”只授予对“工程项目”表的查询权,给“项目经理”授予所有表的查询权d) 能实现的查询要求:i. 查询项目合同号为 10001 项目的项目合同号、项目项目名称、归档时间、报交日期、工程总额;ii. 查询项目经理叫刘利的项目工程的工程总额和材料编号;iii. 查询项目名称为锅炉环保的项目的使用日期和使用数量