工程项目管理系统数据库的设计要求1.需求分析(1)基本实体集:工程项目,项目经理,用户,项目文档,项目材料,使用。(2)属性:工程项目(项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号#、用户编号#)项目经理(工号、姓名、性别、出生年月、电话)用户(用户编号、用户单位、地址、电话、联系人)项目文档(文档编号、项目合同号#、文档形式、归档时间、内容概述)项目材料(材料编号、材料名、材料报价、数量)使用(材料编号、项目合同号、使用日期、使用数量)(3)实体间的联系:一个工程项目有一个项目文档,每个工程项目用不同的项目材料。一个用户可以拥有多个使用。一个项目经理管理多个工程项目。(4)存在的联系:用户与工程项目之间有拥有关系,一对多。项目经理与工程项目有管理关系,一对多。工程项目与项目文档有属于关系,一对多。工程项目与项目材料有使用关系,多对多(1)数据项:用户编号含义说明:唯一标识每个用户别名:无类型:字符型长度:5取值范围:00000至99999取值含义:按顺序定义。(2)数据项:文档编号含义说明:唯一标识每个文档别名:无类型:字符型长度:5取值范围:00000至99999取值含义:按顺序定义。(2)数据结构:工程项目含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号(3)数据项:材料编号含义说明:唯一标识每个编号别名:无类型:字符型长度:5取值范围:00000至99999取值含义:按顺序定义。(2)数据结构:工程项目含义说明:是工程项目管理系统的主体数据结构,定义了一个工程项目的有关信息组成:项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号、用户编号2.概念结构设计3.逻辑结构设计工程项目(项目合同号、项目名称、使用工时、报交日期、付款规定、工程总额、工号#、用户编号#)项目经理(工号、姓名、性别、出生年月、电话)用户(用户编号、用户单位、地址、电话、联系人)项目文档(文档编号、项目合同号#、文档形式、归档时间、内容概述)项目材料(材料编号、材料名、材料报价、数量)使用(材料编号、项目合同号、使用日期、使用数量)4.物理设计字段名类型字节数索引说明工号Char9主键员工编号姓名Char20性别Char2出生日期Char20年龄的定义电话Char11联系方式5.代码任务a)创建数据库代码CREATEDATABASE[工程项目管理系统]b)创建各个表代码CREATETABLE工程项目(项目合同号char(5),项目名称char(50),使用工时char(50),报交日期char(50),付款规定char(50),工程总额char(50),工号char(9),用户编号char(9));CREATETABLE使用(材料编码char(50),项目合同号char(5),使用日期char(50),使用数量char(50));CREATETABLE项目材料(材料编码char(50),材料名char(50),材料报价char(50),数量char(50));CREATETABLE项目经理(工号char(9),姓名char(20),性别char(2),出生年月char(20),电话char(11));CREATETABLE项目文档(文档编号char(9),项目合同号char(5),文档形式char(50),归档时间char(50),内容概述char(50));CREATETABLE用户用户编号char(9),用户单位char(50),地址char(50),电话char(11),联系人char(50));c)创建约束要求:1.每个表创建主键altertable工程项目addconstraintpk_工程项目primarykey(项目合同号);;altertable使用addconstraintpk_使用primarykey(材料编码,项目合同号,使用日期);altertable项目材料addconstraintpk_项目材料primarykey(材料编码);altertable项目经理addconstraintpk_项目经理primarykey(工号);altertable项目文档addconstraintpk_项目文档primarykey(文档编号);altertable用户addconstraintpk_用户primarykey(用户编号);2.工程项目表创建外键(用户号#、工号#)altertable工程项目addconstraintfk_工程项目foreignkey(用户编号)references[用户](用户编号);altertable工程项目addconstraintfk_工程项目foreignkey(工号)references[项目经理](工号);3.项目文档表创建外键(项目合同号#)altertable项目文档addconstraintfk_项目文档foreignkey(项目合同号)references[使用](项目合同号);4.使用表创建外键(材料编号、项目合同号)altertable使用addconstraintfk_使用foreignkey(材料编号)references[项目材料](材料编号);altertable使用addconstraintfk_使用foreignkey(项目合同号)references[项目文档](项目合同号);5.工号属性创建检查约束(工号必须在00000-99999之间)altertable工程项目addconstraintc1check(工号between00000and99999);6.性别属性创建检查约束(只能取“男”或者“女”);altertable项目经理addconstraintc2check(性别in('男','女'));7.电话属性创建检查约束(只能取13000000000-18999999999)altertable项目经理addconstraintc3check(电话between13000000000and18999999999);altertable用户addconstraintc4check(电话between13000000000and18999999999);a)创建视图要求i.创建一个视图,包括项目合同号、项目名称、使用工时、报交日期、用户编号#、归档时间、使用数量,并按照项目合同号升序排序CREATEVIEWview1asselect工程项目.项目合同号,项目名称,使用工时,报交日期,用户编号,使用日期,使用数量from工程项目,使用where工程项目.项目合同号=使用.项目合同号;b)创建触发器要求i.创建一个触发器,如果有用户要修改使用表中的材料编号,则显示一行字“禁止修改材料编号”。ii.创建一个触发器,如果有用户往“项目文档表”中插入数据,而该数据的项目合同号是“工程项目”表中没有的,先到“工程项目”表中插入此项目合同号。c)授权要求:i.给用户“工程师”授予对“工程项目”表的修改权限;给用户“员工”只授予对“工程项目”表的查询权,给“项目经理”授予所有表的查询权d)能实现的查询要求:i.查询项目合同号为10001项目的项目合同号、项目项目名称、归档时间、报交日期、工程总额;ii.查询项目经理叫刘利的项目工程的工程总额和材料编号;iii.查询项目名称为锅炉环保的项目的使用日期和使用数量