数据库设计

来源:互联网 发布:淘宝男装夏季 编辑:程序博客网 时间:2024/05/22 14:00

数据库设计


     一 : 序言

 1: 预期的读者

          系统的开发设计人员、业务人员以及系统管理人员。

  2:数据库的说明

        本数据库采用分布式部署,oracle数据库,数据库全局数据库名##、用户名:##、密码:##、操作空间:                    ##

   3 :目的和作用

业务分析,系统设计中对信息的描述进一步分析并加以总计,抽象出数据集合(数据库表)。对数据集合

做进一步分析,确定集合之间的关系并最终形成数据库物理模型,以便开发人员建立物理数据库。

二:数据库设计


A:抽象数据对象

a:主要业务系统分析

根据系统的物流描述,可以抽象出以下数据集合:

普通的用户、会议管理、设备管理,会议申请、会议室管理,按照业务及系统功能总结为以下对象

用户、会议申请信息、会议审批、会议设备

b:需求分析

根据系统需求分析内容进一步确定数据对象。由于系统需求分析中考虑到会议室和会议设备间有一定

的区别和联系,即会议室一般包含固定设备和移动设备,两者之间并不是并列关系而是所属关系,所

以将会议室默认含有固定设备,这样,设备只有移动设备分开,并提出单独的信息维护功能,数据库

对象也进一步细化将会议设备分成,会议室和相关设备。会议申请和会议审批操作的都是相同对象所

以将两个数据对象进行合并,其他数据对象没有变化。

同对象总结数据对象:
用户信息
会议信息
会议室
会议设备所以将两个数据对象进行合并,其他数据对象没有变化。

B:数据库结构设计

根据系统的分布式部署设计,数据库将部署到一部独立的计算机中。根据前期的

分析,系统将有大量的数据存放入数据库。预留数据库空间500m,日增长约3m,

日志空间1G,日增长5m。

数据库位置:*oracle9ipath*/n2ms/db/

日志位置:*oracle9ipath*/n2ms/log/

C:数据库设计命名规范

1,表名命名规则

本数据库使用的表名一律采用有意义的小写英文字符命名,考虑将来编码方便,表名不

使用‘-’连接相关

2,表项命名规则

    本数据库各个表的每个字段,依照表名命名规则,全部使用有意义的小写英文字符        

命名,字段名不适用‘-’连接相关字符,方便编码书写。

D:数据库的逻辑设计

表设计中应注意的问题:

1.对于字符类型的字段,要仔细确认字段的可能长度。在oracle数据库设计中,

一般来说,对于定长的字符数据字段,取字符类型(char),对于不定长的,取变长字

符类型(varchar)。

2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。

如:货物是否配送为是或(和)否;如果用字符类型,则将这些字符串需要入库;

如果使用数字类型分别用1、0代表高职、中职、低职,则入库的是数字信息,从

程序编写的角度考虑,后者更好维护一些,主要体现在如果是多语言版本时,我们

不需要在程序中将这些字符串信息进行判断处理。

a:数据库表名汇总


数据库表名

中文名

文字说明

meet_app

会议申请信息

保存所开会议的基本信息

meet_room

会议室

保存会议室情况的相关信息

facilty_meet

设备信息

保存会议设备的相关信息

Equipment_stype

设备类型

保存相关设备类型信息

users_inf

用户信息

保存系统用户的基本信息

power_info

权限信息

保存系统的权限信息

role_u

角色

保存相关角色信息

dept_u

部门信息

保存相关部门信息

e_mail

邮件信息

保存邮件信息

file_inf

文件信息

保存相关文件信息

Meet_app

2-2 meet_app表项

中文

英文

数据类型

可否空

初始值

说明

会议信息主键

meet_id

Number

 

主键,流水自增

会议主题

meet_title

Variable characters (30)

 

 

主要内容

meet_content

Variable characters (300)

 

 

会议开始时间

start_time

Date & Time

 

 

会议结束时间

end_time

Date & Time

 

 

与会人数

meet_num

Long float

 

 

审批状态

meet_state

Variable characters (10)

 

 

审批意见

meet_idea

Variable characters (100)

 

 

l meet_room

2-3 meet_room表项

中文

英文

数据类型

可否空

初始值

说明

会议室主键

meetroom_id

Number

 

主键,流水自增

 会议室名称

meetroom_name

Variable char(30)

 

 

 

会议室地址

meetroom_addr

Variable characters (30)

 

 

 可用状态

possib_state

Short integer

 

 

目前状态

now_state

Short integer

 

 

容纳人数

meetroom_num

Number

 

 

l facilty_meet

2-4 facilty_meet表项

中文

英文

数据类型

可否空

初始值

说明

设备主键

facility_id

Number

 

主键,流水自增

设备名称

facility_name

Variable characters (40)

 

 

设备购入时间

buy_time

Date

 

 

占用状态

on_state

Number (10)

 

 

可用状态

posib_state

Short integer

 

 

设备标识

facility_tag

Variable characters (10)

 

 

 

l user_info

2-5 user_info表项

中文

英文

数据类型

可否空

初始值

说明

用户主键

us_id

Number

 

主键,流水自增

用户名称

us_name

Variable characters (30)

 

 

用户登陆账号

us_account

Variable characters (30)

 

 

所属部门

us_department

Variable characters (30)

 

 

用户密码

us_psw

Variable characters (30)

 

 


2-6 power_info表项

中文

英文

数据类型

可否空

初始值

说明

权限主键

power_id

Number

 

主键,流水自增

权限描述

power_describe

Variable characters (30)

 

 

 

2-7 e_mail表项

中文

英文

数据类型

可否空

初始值

说明

邮件主键

mail_id

Number

 

主键,流水自增

 主题

topic

Variable characters (30)

 

 

发送时间

sendtime

      Date

 

 

内容

mail_content

Variable characters

 



2-8 role_u表项

中文

英文

数据类型

可否空

初始值

说明

角色主键

role_id

Number

 

主键,流水自增

角色名字

role_name

Variable characters (30)

 

 

 2-9dept_u表项

中文

英文

数据类型

可否空

初始值

说明

部门主键

dept_id

Number

 

主键,流水自增

部门名字

dept_name

Variable characters (30)

 

 


2-10 file_inf表项

中文

英文

数据类型

可否空

初始值

说明

文件信息主键

flileinf_id

Number

 

主键,流水自增

 文件大小

file_size

Long float

 

 

文件名称

file_name

    Variable characters (30)

 

 

文件格式

file_format

Variable characters (10)

 



图中表示多对一关系,三叉线表示对应的多方表,多对多应该为。

表之间的关联设计

在数据库ER逻辑模型的基础上确定ER物理模型,通过主外键的约束明确表之间的关系。该物理模型可直接映射到数据库中进行物理操作,以便据此建立数据库结构。

 

Table

column 

Code

description

会议室

会议室主键

meetroom_id

主键索引

会议室名称

meetroom_name

 

会议室地址

meetroom_addr

 

可用状态

possib_state

 

容纳人数

meetroon_num

 

目前状态

now_state

 

会议申请

会议信息主键

meet_id

主键索引

会议室id

meetroom_id

会议室信息表引用的外键

会议主题

meet_title

 

主要内容

meet_content

 

与会人数

meet-num

 

会议开始时间

start_time

 

会议结束时间

end_time

 

审批意见

meet-idea

对应建议修改的会议申请要写明原因,如:会议内容欠妥、申请会议室冲突等

审批状态

meet_state

会议申请有未审批、审批通过、建议修改三种状态

 

会议设备

设备主键

facility_id

主键索引

设备名称

facility_name

 

类型主键

ft_id

设备类型表引用的外键

当前状态

now-state

 

可用状态

posib_state

 

购入时间

buy_time

 

设备标识

facility_tag

标志移动还是固定设备

设备类型

类型主键

ft_id

主键索引

类型名称

ft_name

 

用户信息

用户主键

us_id

主键索引

部门id

dept_id

 

姓名

us_name

 

账号

us_account

 

密码

us_psw

 

部门

us_department

 

文件信息

文件信息主键

file_id

主键索引

会议信息主键

meet_id

会议信息表引用的外键

文件名称

file_name

 

文件大小

file_size

 

文件格式

file_type

 

部门

部门主键

dept_id

主键索引

部门名称

dept_name

 

权限信息

权限主键

power_id

主键索引

权限描述

power_describe

 

角色信息

角色主键

role_id

主键索引

角色名字

role-name

 

role_power

角色主键

role_id

 

权限主键

power_id

 

邮件

邮件id

mail_id

主键

主题

topic

 

发送时间

sendtime

 

内容

mail_content

 

会议申请—设备

会议申请id

meet_id

主键索引

设备id

facility_id

主键索引

用户—邮件

用户id

us_id

 

邮件id

mail_id

 

会议申请—用户

会议申请id

meet_id

 

用户id

us_id

 

申请人id

appop_id

 

 

 

外键关联说明:

2-7 外键关联说明

描述表名

外键引用表

外键字段名

关联表

表关系

说明

文件信息

会议申请

会议信息主键<fk>

不是

多对一

一个会议信息可以有多个文件信息

会议申请

用户信息

用户主键<fk2>

多对一

该表是用户信息表与会议室表多对多关系的关系表,每个关系就是一个会议申请

会议室

会议室主键<fk1>

多对一

会议设备

会议室

会议室主键<fk1>

多对一

该表室会议室与设备类型多对多的一个关系表,每一个关系代表一个设备

设备类型

类型主键<fk2>

多对一

权限信息

角色

角色主键<fk>

不是

多对多

一个角色可拥有多个权限,一个权限可以给多个角色。

邮件

用户信息

用户主键

多对多

一个用户可以发送多个邮件,一个邮件可以被多个用户接受

 

会议申请与会议室是多对一的关系,会议室和设备是一对多的关系,

系统需求中有些设备不属于任何现有会议室,这些设备不会象其他设备那样成组的与会议申请对应,而是具有单独的对应关系。由于从局部图中可以看出,会议申请和移动设备间的对应关系是多对多关系。

系统需求中,移动设备不属于任何会议室,这些设备不会像固定设备 那样成组的与会议申请相对应。会议室和会议申请是一对多的关系,会议室和设备间是一对多的关系,会议申请和设备是多对多关系。

复杂关系成因

从上面两种情况,会议室和会议申请的关系是指的是和移动设备和固定设备都有这种关系,而会议申请和会议设备的关系是指的移动设备的关系,一个会议申请多个移动设备,而移动设备能被多个会议申请。本来应将移动设备和移动设备分开,而为了减少冗余,将其合为一个表,从而减少开发麻烦。这就在不影响业务功能的情况下简化了一张表。

1.1 存储过程设计

存储过程是一组预先定义并编译好的SQL语句,可以接受参数、返回状态值和参数值,并可以嵌套调用。使用存储过程可以改变SQL语句的运行性能,提高其执行效率。存储过程还可用做一种安全机制,使用户通过它访问未授权的表或视图。

在本系统中可协助应用服务器完成日志记录功能,及当用户进行个中数据库CURD操作室记录相应信息到到日志表中。

举例:

create or replace procedure loginsert

(optype in string, optime in string ,userid in  out int,tablename in string ,opflag out int )

1.2  is begin
  
insert into logtable values(power_seq.nextval,optime,optype,userid,tablename);
  
select  power_seq.currval into opflagfrom dual;
end loginsert;触发器设计

触发器是一种特殊的存储过程,当表中的数据被修改时,由系统自动执行。使用触发器可以实施更为复杂的的数据完整性约束。

举例:

create or replace trigger autodel
  after delete on room  
  for each row
declare

  -- local variables here
begin
  delete facility fwhere f.rid=:old.id;
end autodel;

1.3 Job设计(定时触发功能)

数据库系统提供了Job功能,该功能可以用来解决需要定期处理商业数据的问题。