一、概要
作为《建设工程监管信息系统》项目开发组的程序员,按要求完成:
数据库的创建;
数据表的创建;
数据表相关约束的创建。
二、实施步骤和内容
《流程管理》子模块的E-R图如图2.4 所示,逻辑数据模型如图2.5所示,物理数据模型如图2.6所示,数据表字段名定义见表2.4。按设计要求完成数据库创建、数据表创建和数据表约束的创建任务:
三、代码
-- 创建流程步骤定义表T_flow_step_def
CREATE TABLE T_flow_step_def(
Step_no INT NOT NULL COMMENT '流程步骤id,主键',
Step_name VARCHAR(30) NOT NULL COMMENT '流程步骤名称',
Step_des VARCHAR(64) COMMENT '流程步骤描述',
Limit_time INT COMMENT '时限',
URL VARCHAR(64) COMMENT '二级菜单链接',
Reserve VARCHAR(256) COMMENT '备注',
PRIMARY KEY(Step_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 创建标段情况表T_sub_project
CREATE TABLE T_sub_project(
Project_id VARCHAR(32) NOT NULL COMMENT '工程编号',
Sub_pro_id CHAR(2) NOT NULL COMMENT '标段编号',
Flow_type_id CHAR(3) COMMENT '流程类别编号',
Sub_pro_name VARCHAR(64) COMMENT '标段名称',
Usb_no VARCHAR(64) COMMENT '密码锁号',
In_method_id CHAR(3) COMMENT '招标方式代号',
In_scope_id CHAR(3) COMMENT '招标范围代号',
In_choice_id CHAR(3) COMMENT '项目选项代号',
Proj_type_id CHAR(3) COMMENT '项目性质代号',
Engi_type_id CHAR(3) COMMENT '工程性质代号',
Pack_type CHAR(1) COMMENT '发包方式',
Grade_type_id CHAR(1) COMMENT '评分类别号',
Flag_done CHAR(1) COMMENT '完成标志',
Flag_forcebreak CHAR(1) COMMENT '强制中断标志',
Reserve VARCHAR(256) COMMENT '备注',
PRIMARY KEY(Project_id,Sub_pro_id,Flow_type_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 创建流程类别表T_flow_type
CREATE TABLE T_flow_type(
Flow_type_id CHAR(3) NOT NULL COMMENT '流程类别号,主键',
Flow_type_name VARCHAR(64) COMMENT '流程类别名称',
In_method_id CHAR(3) COMMENT '招标方式代号',
In_choice_id CHAR(3) COMMENT '项目选项代号',
Reserve VARCHAR(256) COMMENT '备注',
PRIMARY KEY(Flow_type_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 创建流程过程定义表T_flow_procedure
CREATE TABLE T_flow_procedure(
Step_no INT NOT NULL COMMENT '流程步骤id',
Flow_type_id CHAR(3) NOT NULL COMMENT '流程类别号',
Serial_no INT COMMENT '流程顺序号',
Limit_time INT COMMENT '时限',
Reserve VARCHAR(256) COMMENT '备注',
PRIMARY KEY(Step_no,Flow_type_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 设置标段情况表T_sub_project标段编号字段默认值为0
ALTER TABLE T_sub_project MODIFY Sub_pro_id CHAR(2) DEFAULT 0
-- 招标方式代号字段有1,公开;2邀请两种代号
ALTER TABLE T_sub_project MODIFY In_method_id ENUM('1','2')
-- 项目选项代号字段有1、招标;2、直接发包;3、违补 三种代号
ALTER TABLE T_sub_project MODIFY In_choice_id ENUM('1','2','3')
-- 发包方式字段默认为0
ALTER TABLE T_sub_project MODIFY pack_type CHAR(1) DEFAULT '0'
-- 完成标志字段默认为0
ALTER TABLE T_sub_project MODIFY Flag_done CHAR(1) DEFAULT '0'
-- 向T_flow_step_def插入数据
INSERT INTO T_flow_step_def VALUES (1,'中标公示','公示中标情况',30,'http://localhost:8080/stepmenu.jsp','在规定时间内如果有异议请联系我们')
-- 查询出招标方式代号字段为1的所有标段情况信息;
SELECT * FROM T_sub_project WHERE In_method_id='1'
-- 查询出所有完成标志字段为0的标段情况信息;
SELECT * FROM T_sub_project WHERE Flag_done='0'
-- 查询出流程类别名称为“开标”的所有标段情况
SELECT * FROM T_sub_project WHERE Flow_type_id =
(SELECT Flow_type_id FROM T_flow_type WHERE Flow_type_name='开标')
-- 编写视图查询所有的流程步骤名称、流程步骤描述及流程类别名称;
CREATE VIEW vw_flow_step
AS
SELECT Step_name,Step_des,Flow_type_name FROM T_flow_step_def AS d ,
T_flow_procedure AS p,T_flow_type AS t WHERE d.Step_no=p.Step_no AND p.Flow_type_id=t.Flow_type_id
CREATE VIEW vw_flow_step1
AS
SELECT Step_name,Step_des,Flow_type_name FROM T_flow_step_def AS d INNER JOIN
T_flow_procedure AS p ON d.Step_no=p.Step_no INNER JOIN T_flow_type AS t ON
p.Flow_type_id = t.Flow_type_id