数据库大作业


 目 录

0. 文档介绍... 4

0.1 文档目的... 4

0.2 文档范围... 4

0.3 术语与缩写解释... 4

1. 数据库环境说明... 7

2. 数据库的命名规则... 7

3. E—R图... 8

4. 逻辑设计... 9

5. 物理设计... 9

表汇总... 9

6. 数据库语句在系统中的应用... 13

6.1 区段信息的操作... 13

6.1.1 区段信息插入语句... 13

6.1.2 区段信息删除语句... 13

6.1.3 区段信息修改语句... 13

6.1.4 区段信息查询语句... 14

6.1.5 区段信息通过ID语句... 14

6.1.6 区段信息按管网ID来查询这个管网区域里的所有区段语句... 14

6.2 部门信息的操作... 14

6.2.1 部门信息插入语句... 14

6.2.2 部门信息删除语句... 14

6.2.3 部门信息修改语句... 14

6.2.4 部门信息查询语句... 14

6.2.5 部门信息通过ID语句... 14

6.2.6 部门信息组合查询语句... 15

6.3 人员信息的操作... 15

6.3.1 人员信息插入语句... 15

6.3.2 人员信息删除语句... 15

6.3.3 人员信息修改语句... 15

6.3.4 人员信息查询语句... 15

6.3.5 人员信息通过ID语句... 16

6.3.6 人员信息组合查询语句... 16

7. 安全性设计... 16

7.1 防止用户直接操作数据库的方法... 16

7.2 用户帐号密码的加密方法... 17

8. 数据库管理与维护说明... 17

9. 总结... 17


0. 文档介绍

0.1 文档目的

对项目的数据库设计进行总结

0.2 文档范围

本文档是对自来水公司大表远程传抄、监控系统的数据库设计说明书。

0.3 术语与缩写解释

术语

缩写解释

user

用户

u_id

用户名id

u_name

用户名称

u_add

用户地址

u_tel

用户联系方式

wc_id

用水性质id

pp_id

区段id

u_state

水表安装状态

operator

操作员信息

o_id

操作员id

o_name

操作员登录名

e_id

人员信息id

r_id

操作权限id

o_pw

初始密码

remarks

备注

employee

人员信息

e_id

人员id

d_id

归属部门id

e_name

姓名

e_sex

性别

e_pos

职位

e_tel

电话

PipleNetInfor

管网信息

pn_id

管网id

pn_name

管网名称

pn_area

管辖区域

remarks

备注

AreaInfor

区段信息

pp_id

区段id

pp_name

区段名称

pn_id

管网id

pp_area

管辖区域

remarks

备注

WaterChart

用水性质

wc_id

用水性质id

wc_name

用水性质名称

remarks

备注

WaterMeterSide

水表口径

wmr_id

水表口径id

wmr_name

水表口径名称

wmr

水表口径

remarks

备注

WaterMeterType

水表基本类型

wmt_id

水表基本类型id

wmt

水表类型

wmt_name

水表名称

wmr_id

水表口径id

remarks

备注

deparment

部门信息

d_id

部门id

d_name

部门名称

d_add

位置

d_person

负责人

d_tel

部门电话

WaterEquInfor

水表设备信息

wm_id

水表设备id

wm_sim

水表设备安装的sim卡号

wm_setno

设备序列号

ui_d

用户id

wmt_id

水表类型id

wm_hf

上限流量

wm_lf

下限流量

wm_pro

使用协议

wm_bn

水表基数

wc_id

用水性质id

wm_mn

水表最大示数

remarks

备注

WarnInfor

报警信息

wn_id

报警id

wm_id

水表id

Equip_num

设备编号

Yes_num

最日用水量

Month_num

本月用水量

Lm_num

上月用水量

Mk_num

表同步数

Mc_num

电子计数

Warm_type

报警类型

St_add

安装地址

Up_time

最后上传时间

WaterMeterRecord

水表上传记录

wm_id

水表id

date

记录日期

tn

节点n

SystemRight

系统权限表

r_id

权限类型id

r_type

权限类型名称

 

1. 数据库环境说明

操作系统:Windows XP

数据库系统:MySQL Server 5.5

设计工具: ERWin

2. 数据库的命名规则

数据库的表名及字段名用英文命名,由于字段名称太长,对于个别字段的名称采用单词的首字母组合,对于不是很长的字段名称,则取第一个单词的首字母加其它单词,并用下划线连接来组合成字段名称,对于个别较长的单词,也采用了缩写的形式,以大致提示字段意思。

3. E—R图

4. 逻辑设计

         

5. 物理设计

表汇总

FORMATS:

TABULAR

HIERARCHICAL

 

Entity

 

Name

Type

Definition

Attribute

AreaInfor

Independent

区段信息

DeparmentInfor

Independent

部门信息

EmployeeInfor

Independent

人员信息

OperatorInfor

Independent

操作员信息

PipleNetInfor

Independent

管网信息

SystemRight

Independent

系统权限表

UserInfor

Independent

用户信息

WarnInfor

Independent

报警信息

WaterChart

Independent

用水性质

WaterEquInfor

Independent

水表设备信息

WaterMeterRecord

Dependent

水表上传记录

WaterMeterSide

Independent

水表口径

WaterMeterType

Independent

水表类型

Attribute(s) of "AreaInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

pp_id

INTEGER

区段ID

Yes

Yes

No

pp_name

VARCHAR(50)

区段名称

Yes

No

No

pn_id

INTEGER

管网ID

Yes

No

Yes

pp_area

VARCHAR(50)

管辖区域

Yes

No

No

remarks

VARCHAR(50)

备注

Yes

No

No

 

Attribute(s) of "DeparmentInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

d_id

INTEGER

部门ID

Yes

Yes

No

d_name

VARCHAR(20)

部门名称

Yes

No

No

d_add

VARCHAR(50)

位置

Yes

No

No

d_person

VARCHAR(20)

负责人

Yes

No

No

d_tel

VARCHAR(20)

电话

Yes

No

No

 

Attribute(s) of "EmployeeInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

e_id

INTEGER

人员ID

Yes

Yes

No

d_id

INTEGER

部门ID

Yes

No

Yes

e_name

VARCHAR(50)

人员姓名

Yes

No

No

e_sex

CHAR(2)

人员性别

Yes

No

No

e_pos

VARCHAR(50)

人员职位

Yes

No

No

e_tel

VARCHAR(20)

人员电话

Yes

No

No

 

Attribute(s) of "OperatorInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

o_id

INTEGER

操作员ID

Yes

Yes

No

o_name

VARCHAR(20)

操作员登录名

Yes

No

No

e_id

INTEGER

人员ID

Yes

No

Yes

r_id

INTEGER

操作权限

Yes

No

Yes

o_pw

VARCHAR(50)

密码

Yes

No

No

remarks

VARCHAR(100)

备注

Yes

No

No

 

Attribute(s) of "PipleNetInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

pn_id

INTEGER

管网ID

Yes

Yes

No

pn_name

VARCHAR(20)

管网名称

Yes

No

No

pn_area

VARCHAR(50)

管辖区域

Yes

No

No

remarks

VARCHAR(100)

备注

Yes

No

No

 

Attribute(s) of "SystemRight" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

r_id

INTEGER

 

Yes

Yes

No

r_type

VARCHAR(20)

 

Yes

No

No

 

Attribute(s) of "UserInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

u_id

INTEGER

用户ID

Yes

Yes

No

u_name

VARCHAR(20)

用户名称

Yes

No

No

u_add

VARCHAR(50)

地址

Yes

No

No

u_tel

VARCHAR(20)

联系方式

Yes

No

No

pp_id

INTEGER

区段ID

Yes

No

Yes

u_state

CHAR(6)

水表安装状态

Yes

No

No

wc_id

INTEGER

用水性质ID

Yes

No

Yes

wmt_id

INTEGER

水表类型ID

Yes

No

Yes

 

Attribute(s) of "WarnInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

CHAR(18)

 

Yes

No

No

wn_id

INTEGER

报警ID

Yes

Yes

No

wm_id

INTEGER

水表ID

No

No

Yes

equip_num

FLOAT

设备编号

Yes

No

No

yes_num

FLOAT

昨日用水量

Yes

No

No

month_num

FLOAT

本月用水量

Yes

No

No

lm_num

FLOAT

上个月用水量

Yes

No

No

mk_num

FLOAT

表同步数

Yes

No

No

mc_num

FLOAT

电子计数

Yes

No

No

warm_type

VARCHAR(50)

报警类型

Yes

No

No

st_add

VARCHAR(50)

安装地址

Yes

No

No

up_time

VARCHAR(50)

最后上传时间

Yes

No

No

 

Attribute(s) of "WaterChart" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

wc_id

INTEGER

用水性质ID

Yes

Yes

No

wc_name

VARCHAR(20)

用水性质名称

Yes

No

No

remarks

VARCHAR(100)

备注

Yes

No

No

 

Attribute(s) of "WaterEquInfor" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

wm_id

INTEGER

水表ID

Yes

Yes

No

wm_sim

VARCHAR(50)

SIM卡号

Yes

No

No

wm_setno

VARCHAR(50)

设备序列号

Yes

No

No

u_id

INTEGER

用户ID

Yes

No

Yes

wmt_id

INTEGER

水表类型ID

Yes

No

Yes

wm_lf

FLOAT

下限流量

Yes

No

No

wm_hf

FLOAT

上限流量

Yes

No

No

wm_pro

VARCHAR(50)

使用协议

Yes

No

No

wm_bn

FLOAT

水表基数

Yes

No

No

wm_mn

FLOAT

最大示数

Yes

No

No

remarks

VARCHAR(100)

备注

Yes

No

No

 

Attribute(s) of "WaterMeterRecord" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

wm_id

INTEGER

水表ID

Yes

Yes

Yes

date

DATE

记录日期

Yes

Yes

No

t1

FLOAT

时间节点1:6:00-6:15

No

No

No

tn

FLOAT

时间节点n:

No

No

No

 

Attribute(s) of "WaterMeterSide" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

wmr_id

INTEGER

水表口径ID

Yes

Yes

No

wmr_name

VARCHAR(20)

水表口径名称

Yes

No

No

wmr

INTEGER

水表口径

Yes

No

No

remarks

VARCHAR(100)

备注

Yes

No

No

 

Attribute(s) of "WaterMeterType" Entity

 

Name

Datatype

Definition

Required

Is PK

Is FK

wmt_id

INTEGER

水表类型ID

Yes

Yes

No

wmt

VARCHAR(20)

水表类型

Yes

No

No

wm_name

VARCHAR(20)

水表名称

Yes

No

No

wmr_id

INTEGER

水表口径ID

Yes

No

Yes

remarks

VARCHAR(100)

备注

Yes

No

No

 

 

6. 数据库语句在系统中的应用

6.1 区段信息的操作

6.1.1 区段信息插入语句

String sql = "insert intoareainfor(pp_id,pp_name,pn_id,pp_area,remarks) values(?,?,?,?,?)";

6.1.2 区段信息删除语句

String sql = "DELETE FROM areainforWHERE pp_id=?" ;

6.1.3 区段信息修改语句

String sql = "UPDATE areainfor SETpp_name=?,pn_id =?,pp_area=?,remarks=? WHERE pp_id=?";

6.1.4 区段信息查询语句

String sql = "SELECTpp_id,pp_name,pn_id,pp_area,remarks FROM areainfor";

6.1.5 区段信息通过ID语句

String sql = "SELECTpp_id,pp_name,pn_id,pp_area,remarks FROM areainfor WHERE pp_id=?";

6.1.6 区段信息按管网ID来查询这个管网区域里的所有区段语句

String sql = "SELECTpp_id,pp_name,pn_id,pp_area,remarks FROM areainfor WHERE pn_id=?";

6.2 部门信息的操作

6.2.1 部门信息插入语句

String sql = "INSERT INTOdeparmentinfor (d_id,d_name,d_add,d_person,d_tel) VALUES(?,?,?,?,?)" ;

6.2.2 部门信息删除语句

String sql = "DELETE FROMdeparmentinfor WHERE d_id=?";

6.2.3 部门信息修改语句

String sql = "UPDATE deparmentinforSET d_name=?,d_add=?,d_person=?,d_tel=? WHERE d_id=?";

6.2.4 部门信息查询语句

String sql = "SELECTd_id,d_name,d_add,d_person,d_tel FROM deparmentinfor";

6.2.5 部门信息通过ID语句

String sql = "SELECTd_id,d_name,d_add,d_person,d_tel FROM deparmentinfor WHERE d_id=?";

6.2.6 部门信息组合查询语句

String forwhere = "";

String sql = "SELECTd_id,d_name,d_add,d_person,d_tel FROM deparmentinfor WHERE 1=1 " ;

       if(null != dep.getD_id() && false ==dep.getD_id().toString().equals("")) {

                   forwhere += " andd_id=" + dep.getD_id();

                        }

       if(null != dep.getD_name() && false ==dep.getD_name().equals("")) {

                   forwhere += " andd_name LIKE '%" + dep.getD_name() + "%'";

                        }

       if(null != dep.getD_add() && false ==dep.getD_add().equals("")) {

                   forwhere += " and d_addLIKE '%" + dep.getD_add() + "%'";

                        }

      if(null != dep.getD_person() && false ==dep.getD_person().equals("")) {

                   forwhere += " andd_person LIKE '%" + dep.getD_person() + "%'";

                        }

      if(null != dep.getD_tel() && false ==dep.getD_tel().equals("")) {

                   forwhere += " and d_telLIKE '%" + dep.getD_tel() + "%'";

                        }

       sql += forwhere;

6.3 人员信息的操作

6.3.1 人员信息插入语句

String sql = "INSERT INTOemployeesinfor(e_id,e_name,e_sex,e_pos,e_tel,d_id) VALUES(?,?,?,?,?,?)";

6.3.2 人员信息删除语句

String sql = "DELETE FROMemployeesinfor WHERE e_id=?" ;

6.3.3 人员信息修改语句

String sql = "UPDATE employeesinforSET e_name=?,e_sex=?,e_pos=?,e_tel=?,d_id=? WHERE e_id=?";

6.3.4 人员信息查询语句

String sql = "SELECTe_id,e_name,e_sex,e_pos,e_tel,d_id FROM employeesinfor”;

6.3.5 人员信息通过ID语句

String sql = "SELECTe_id,e_name,e_sex,e_pos,e_tel,d_id FROM employeesinfor WHERE e_id=?";

6.3.6 人员信息组合查询语句

String forwhere = "";

String sql = "SELECTe_id,e_name,e_sex,e_pos,e_tel,d_id FROM employeesinfor WHERE 1=1" ;

     if(null != emp.getE_id() && false ==emp.getE_id().toString().equals("")) {

                    forwhere += " ande_id=" + emp.getE_id();

                }

     if(null != emp.getE_name() && false ==emp.getE_name().equals("")) {

                    forwhere += " ande_name LIKE '%" + emp.getE_name() + "%'";

                }

     if(null != emp.getE_sex() && false ==emp.getE_sex().equals("")) {

                    forwhere += " ande_sex LIKE '%" + emp.getE_sex() + "%'";

                }

     if(null != emp.getE_pos() && false ==emp.getE_pos().equals("")) {

                    forwhere += " ande_pos LIKE '%" + emp.getE_pos() + "%'";

                }

     if(null != emp.getE_tel() && false ==emp.getE_tel().equals("")) {

                    forwhere += " ande_tel LIKE '%" + emp.getE_tel() + "%'";

                }

     if(null != emp.getD_id() && false == emp.getD_id().toString().equals("")){

                    forwhere += " andd_id=" + emp.getD_id();

                }

      sql += forwhere;

 

7. 系统实现

7.1 系统主界面

 

7.2 水表设备管理界面

7.3 系统用户管理界面

 

7.3 官网管理界面

8. 安全性设计

8.1 防止用户直接操作数据库的方法

对用户进行级别设定,用户分为以下几个级别,经理,操作人员,稽查人员,业务人员,不同的用户给予不同的权限,防止部分用户对数据库进行不必要的操作而引起不必要的麻烦。

8.2 用户帐号密码的加密方法

采用密码保护的形式,每个用户都可以给自己设置密码保护,如设置提示问题,修改密码的时候必须经过回答问题,答对问题才可以进行密码修改,这样子可以防止别人知道自己的密码而进行更改使本用户无法登录系统。

9. 数据库管理与维护说明

每天都有新的记录必须写入数据库,这就要求有专门的操作人员来负责对数据库信息的增添操作,经过一段时间,部分信息可能需要更新,比如说用户的联系方式换了,或者用户因为某种原因不再用水等,这些都要及时更新到库里面,这些也都需要操作人员来完成。对于管理层,可以对下属用户进行操作,重新赋予权限。关于数据库的维护,通过实时备份数据库,当数据库出现异常的时候,将备份好的数据重新导入数据库,以防止重大损失.

10. 总结

       本次实验由于布置时间比较早,所以有足够的时间来开发比较大型的系统。个人觉得如果系统太小实在无法体现出数据库系统这门课的精髓所在,各个表之间的关联,主键,联合主键等等以及数据库设计是否符合范式的要求。

       此次实验最大的收获就是对数据库加深了认识。懂得了如何规范化设计数据库,怎样编写高效查询,如果分析、设计、构造、实现数据库模型。而且让我对J2SE加深认识。

 

你可能感兴趣的:(数据库,string,sql,null,文档,insert,数据库)