数据库 -DataBase设计

数据库设计概述

数据库设计

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境

数据库建设的基本规律

三分技术,七分管理,十二分基础数据

管理

数据库建设项目管理

企业(即应用部门)的业务管理

基础数据

收集、入库

更新新的数据

结构(数据)设计和行为(处理)设计相结合

将数据库结构设计和数据处理设计密切结合

数据库设计方法

手工与经验相结合方法

设计质量与设计人员的经验和水平有直接关系

数据库运行一段时间后常常不同程度地发现各种问题,增加了维护代价

规范设计法

基本思想:过程迭代和逐步求精

新奥尔良(New Orleans)方法

将数据库设计分为若干阶段和步骤

基于E-R模型的数据库设计方法

概念设计阶段广泛采用

3NF(第三范式)的设计方法

逻辑阶段可采用的有效方法

ODL(Object Definition Language)方法

面向对象的数据库设计方法

计算机辅助设计

ORACLE Designer 2000

SYBASE PowerDesigner

数据库设计的基本步骤

数据库设计分6个阶段

需求分析

概念结构设计

逻辑结构设计

物理结构设计

数据库实施

数据库运行和维护

需求分析和概念设计独立于任何数据库管理系统

逻辑设计和物理设计与选用的DBMS密切相关

一、数据库设计的准备工作:选定参加设计的人

1.系统分析人员、数据库设计人员

自始至终参与数据库设计

2. 用户和数据库管理员

主要参加需求分析和数据库的运行维护

3.应用开发人员(程序员和操作员)

在系统实施阶段参与进来,负责编制程序和准备软硬件环境

二、数据库设计的过程(六个阶段)

⒈需求分析阶段

准确了解与分析用户需求(包括数据与处理)

最困难、最耗费时间的一步

⒉概念结构设计阶段

整个数据库设计的关键

通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型

⒊逻辑结构设计阶段

将概念结构转换为某个DBMS所支持的数据模型

对其进行优化

⒋数据库物理设计阶段

为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)

⒌数据库实施阶段

运用DBMS提供的数据库语言(如SQL)及宿主语言,根据逻辑设计和物理设计的结果

建立数据库

编制与调试应用程序

组织数据入库

进行试运行

⒍数据库运行和维护阶段

数据库应用系统经过试运行后即可投入正式运行

在数据库系统运行过程中必须不断地对其进行评价、调整与修改

需求分析的任务

详细调查现实世界要处理的对象(组织、部门、企业等)

充分了解原系统(手工系统或计算机系统)

明确用户的各种需求

确定新系统的功能

充分考虑今后可能的扩充和改变

调查的重点是“数据”和“处理”,获得用户对数据库要求

信息要求

处理要求

安全性与完整性要求

确定用户最终需求

用户缺少计算机知识

设计人员缺少用户的专业知识

解决方法

设计人员必须不断深入地与用户进行交流

⑴ 调查组织机构情况

⑵ 调查各部门的业务活动情况。

⑶ 在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。

⑷ 确定新系统的边界

常用调查方法

(1)跟班作业

(2)开调查会

(3)请专人介绍

(4)询问

(5)设计调查表请用户填写

(6)查阅记录

结构化分析方法(Structured Analysis,简称SA方法)

从最上层的系统组织机构入手

自顶向下、逐层分解分析系统

2.分解处理功能和数据

(1)分解处理功能

将处理功能的具体内容分解为若干子功能

(2)分解数据

处理功能逐步分解同时,逐级分解所用数据,形成若干层次的数据流图

(3)表达方法

处理逻辑:用判定表或判定树来描述

数据:用数据字典来描述

3.将分析结果再次提交给用户,征得用户的认可

数据字典

数据字典的用途

进行详细的数据收集和数据分析所获得的主要结果

数据字典的内容

数据项

数据结构

数据流

数据存储

处理过程

数据项

 数据项是不可再分的数据单位
 对数据项的描述
      数据项描述={ 数据项名,数据项含义说明,别名,
                                数据类型,长度,取值范围,取值含义,
                与其他数据项的逻辑关系,数据项之间的          联系 }

数据结构

数据结构反映了数据之间的组合关系。
 一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。
 对数据结构的描述
      数据结构描述={数据结构名,含义说明,
                                   组成:{数据项或数据结构}}

数据流

数据流是数据结构在系统内传输的路径。
 对数据流的描述
 
    数据流描述={ 数据流名,说明,数据流来源,
                               数据流去向,组成:{数据结构},
                               平均流量,高峰期流量}

数据存储

数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。

对数据存储的描述
  数据存储描述={数据存储名,说明,编号,
                输入的数据流 ,输出的数据流 ,
                组成:{数据结构},数据量,存取频度,         存取方式}

处理过程

具体处理逻辑一般用判定表或判定树来描述
处理过程说明性信息的描述
 处理过程描述={处理过程名,说明,输入:{数据流},
                                 输出:{数据流},处理:{简要说明}}

例:学生学籍管理子系统的数据字典。

数据项,以“学号”为例:
数据项: 学号
含义说明:唯一标识每个学生

 别名:  学生编号

类型:  字符型

长度:  8

取值范围:00000000至99999999

 取值含义:前两位标别该学生所在年级,

后六位按顺序编号

 与其他数据项的逻辑关系:

数据结构,以“学生”为例

“学生”是该系统中的一个核心数据结构:
数据结构: 学生
含义说明: 是学籍管理子系统的主体数据结构,
                      定义了一个学生的有关信息
组成:   学号,姓名,性别,年龄,所在系,年级

  

数据流,“体检结果”可如下描述:

数据流:  体检结果

说明:   学生参加体格检查的最终结果

数据流来源:体检

数据流去向:批准

组成:   ……

 平均流量: ……

 高峰期流量:……

数据存储,“学生登记表”可如下描述:

数据存储: 学生登记表

说明:   记录学生的基本情况

 流入数据流:……

流出数据流:……

组成:   ……

数据量:  每年3000张

存取方式: 随机存取

处理过程“分配宿舍”可如下描述:

 处理过程:分配宿舍

 说明:  为所有新生分配学生宿舍

 输入:  学生,宿舍

 输出:  宿舍安排

 处理:  在新生报到后,为所有新生分配学生宿舍。

要求同一间宿舍只能安排同一性别的学生,

同一个学生只能安排在一个宿舍中。

每个学生的居住面积不小于3平方米。

安排新生宿舍其处理时间应不超过15分钟。

数据字典是关于数据库中数据的描述,是元数据,而不是数据本身

数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善

设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充

必须强调用户的参与

时间: 2024-10-31 20:12:40

数据库 -DataBase设计的相关文章

---oracle 数据库的设计,PL/SQL(loop,for,if,case,while)

1.数据库的设计(DataBase Design): 针对用户特定的需求,然后我们创建出来一个最实用而且性能高的数据库! 数据库设计的步骤: 01.需求分析 02.概念结构设计 03.逻辑结构设计 04.物理机构设计 05.数据库的实施 06.数据库的运行和维护 数据库的3大范式: 1.确保每列的原子性!每一列都是一个不可再分的数据! 2.确保每列都和主键相关! 3.确保每列都和主键有直接的关系,而不是间接依赖(传递依赖)! -----------------------------------

使用Java实现数据库编程—01 第一章 数据库的设计

 1.        数据库设计:将数据库中的数据实体及这些数据实体之间的关系进行规划和结构化的过程: 良好的数据库设计: 节省数据的存储空间 能够保证数据的完整性 方便进行数据库应用系统的开发 糟糕的数据库设计: 数据冗余.存储空间浪费 内存空间浪费 数据更新和插入的异常  2.        数据库设计的步骤: 1.  需求分析阶段:分析客户的业务和数据处理需求 2.概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整 3. 详细设计阶段:将E-R图转换为多张表,进行逻辑设计,确

Java Web项目实战记录(数据库表设计)

又是忙到这个点 虽然累,但是看着自己的项目在一点一点的成长,心里满满的成就感>_< 今天上了一下午的cep(职场社交礼仪规划课程),是不是职场就像cep老师说的那么的勾心斗角呢? 所以今天并没有做了多少东西,数据库的文档已经出来了,但是不是太详细,表之间的关系并没有说的太清(数据库的设计我并没有参与) 以下是数据库的文档: --------------------------------------------------------------------------------------

20170105数据库表设计知识点

20170105数据库表设计知识点 ------指导老师    星哥 1.PHP(MYSQL)擅长单表操作,不要做过多无谓的连接查询 2.表字段名不要使用大驼峰命名方式,最好采用下划线,命名要和团队习惯一致,通俗易懂. 3.表级.字段都要有注释 4.MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好.甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成.另外,MyISAM 对于 SELECT COUNT(*) 这类的计算

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限.本章将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼. 9.1 高效的模型设计 最规范的就一定

数据库课程设计--“茶咖啡”销售管理系统总结

为期一周的数据库课程设计终于完工, 总结一些经验和教训.发现基础的知识还是要时刻记在心中,知识不基础,何谈去开发?因为做什么东西都首先要一定的目标,计划,以及做到东西要做到那个程度,这方面一点要先在脑子里有一个印象,然后才能用所学的知识点去发挥, 因此知识点一点要掌握牢固,自己在设计课程设计的过程中,发现写好的数据库语言一点运行,就会出现这个那个的问题.然后从头去寻找问题的源头,才发现表的主键和外键设置出了问题.然后琢磨半天,突然意识到到底是什么主键和外键? 两个的定义和作用到底是什么?,这才发

无限树形结构的数据库表设计

前言: 无限树形结构的数据库表设计的是否合理,直接影响到UI层是否方便根据树来查询关联的数据. 1.表字段: F_BtEd2kTypeId int Unchecked F_Name nvarchar(50) Checked F_ParentTypeId nvarchar(50) Checked F_Code nvarchar(50) Checked F_RecordStatus int Checked 2.表数据: 3.说明: 如2所示, 1)如果上表的数据关联上了一张表A,通过BtEd2kTy

数据库的设计范式知识

为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行.但

Django开发笔记之数据库的设计

后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原型的时候就开始开发的困难之处,每次需求更改就会带来后台的数据和对应接口的一次变更.费时费精力 2.有了需求,那么开始数据库的设计,在Django中,并不需要直接去操作数据库,而且使用继承modesl.Model的类,在类中定义自己的模型,然后使用Python manage.py syncdb就可看到