一、数据库设计简介

按照规范设计,将数据库
的设计过程分为六个阶段:
A、系统
需求分析阶段
B、概念结构设计阶段
C、逻辑结构设计阶段
D、物理结构设计阶段
E、数据库实施阶段
F、数据库运行与维护阶段

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

二、系统需求分析

1、需求分析的任务

需求分析的任务:对现实世界要处理的对象进行详细的调查,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理,在此基础上确定新系统的功能。

A、调查分析用户活动

B、收集和分析需求数据,确定系统边界信息需求,处理需求,安全性和完整性需求

C、编写系统分析报告

2、需求分析的方法

需求分析有两种方法:自顶向下、自底向上

A、自顶向下

自顶向下方法从最上层的系统组织机构入手,采用逐层分解的方式分析系统。

用数据流图和数据字典描述系统

数据流图:描述输入数据到输出数据的变换过程

数据流:由一组固定成分的数据组成,代表数据的流动方向

处理:描述了输入数据到输出数据的变换

文件:用于存储数据

源或宿:存在于系统之外的人员或组织,表示系统输入数据的来源和输出数据的去向

B、自底向上

3、实例

教学管理系统

基本需求:

某学校设计学校教学管理系统,学生实体包括学号、姓名、性别、生日、民族、籍贯、简历、入学日期,每名学生选择一个主修专业,专业包括专业编号、名称、类别,一个专业属于一个学院,一个学院可以有多个专业。学院信息要存储学院号、学院名、院长。教学管理要管理课程表、学生成绩表。课程包括课程号、课程名、学分,每门课程由一个学院开设。学生选修的每门课程获得一个成绩。

三、概念结构设计

1、概念结构设计简介

概念结构设计的目标是设计数据库的E-R模型图,确认需求信息的正确和完整。具体来说就是从需求分析中找到实体,确认实体的属性、确认实体的关系,画出ER图。

2、概念结构设计的步骤

第一步,数据抽象与局部E-R模型设计

A、数据抽象

在多层数据流中选择一个适当层次作为设计E-R图的出发点。

确定每个局部应用包含哪些实体,实体包含哪些属性,实体之间的联系

划分实体和属性的方法

分类:将一组具有某些共同特性和行为的对象抽象为一个实体。

聚合:将对象类型的组成成分抽象为属性。

B、局部E-R模型设计

局部E-R模型设计的原则是属性必须是不可分的数据项,不能再由放弃其他属性组成;属性不能与其他实体具有联系,联系只能发生在实体之间。

为简化E-R图,凡是能作为属性对待的,尽量作为属性。

第二步,全局E-R模型设计

集成各局部E-R模型,形成全局模型。视图集成的方法有两种:

A、多元集成法:一次性将多个局部E-R图合并为一个全局E-R图。

B、二元集成法:首先集成两个重要的局部E-R图,然后用累加的方法逐步将一个新的E-R图集成进来。

合并:

合并局部E-R图,消除冲突,初步生成E-R图。合并的关键是合理消除各局部E-R图的冲突。

冲突分类如下:

优化:

消除初步E-R图中不必要的冗余,生成基本的E-R图。

冗余数据:可由基本的数据导出的数据。

冗余联系:可由基本的联系导出的联系。

3、实例

教学管理系统的E-R图

实体:学生、专业、学院、课程

实体表要记录的属性:

学生(学号、姓名、性别、生日、籍贯、民族、简历、入学日期)

专业(专业号、专业名称、类别)

学院(学院号、学院名称、院长)

课程(课程号、课程名称、学分)

教学管理ER图:

四、逻辑结构设计

1、逻辑结构设计简介

逻辑结构设计的任务是将概念结构设计阶段完成的实体模型转换成特定的DBMS所支持的数据模型的过程。逻辑结构设计的目的是将E-R图中的实体、属性和联系转换成为关系模式。

2、初始关系模型设计

(1)实体间关系转换遵循的原则:

一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。

一个联系转换为一个关系模式,与该联系相连的各实体的键以及联系的属性均转换为该关系的属性。

联系关系的键有三种情况:

如果联系为1:1,则每个实体的键都是关系的候选键

如果联系为1:n,zen端实体的见识关系的键

如果联系为n:m,则各实体的键的组合是关系的键

特殊情况:多元联系

多元联系在转换为关系模式时,与该多元联系相连的各实体的主键及联系本身的属性均转换为关系的属性,转换后所得到的的关系的主键为各实体键的组合

(2)实体间关系的转换规则:

A、一个1:1关系可以转换为一个独立的关系模式,也可以与任意一端所对应的关系模式合并。

原实体对应关系模式分别为:

班级(班号,专业,人数)

班长(学号,姓名,专长)

将关系“管理”合并到实体“班级”对应的模式后为:

班级(班号,专业,人数,班长学号)

班长(学号,姓名,专长)

关系“管理”也可以合并到实体“班长”对应的模式,将关系“管理”合并到实体“班级”对应的模式后为:

班级(班号,专业,人数)

班长(学号,姓名,专长,班号)

B、一个1:n关系可以转换为一个独立的关系模式,也可以与n端所对应的关系模式合并。

实体对应的关系模式

系(系号,系名,系主任,电话)

教师(教师号,姓名,专业,职称,性别,年龄)

关系对应的关系模式

管理(教师号,系号)

合并到实体“教师”后(只能合并到“多”的一端的关系模型):

教师(教师号,姓名,专业,职称,性别,年龄,系号)

C、一个m:n关系转换为一个关系模式。转换的方法为:与该关系相连的各实体的码以及关系本身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合。

关系只能转换为独立模式,模式的属性由关系本身的属性及两个实体的键构成;主键由两端实体的键组合而成。

课程(课程号,课程名,学时,类别) 实体表

学生(学号,姓名,性别,专业,出生日期,照片) 实体表

选修(学号,课程号,分数)  关系表

D、三个或三个以上实体间的多元关系转换为一个关系模式。

关系的属性:与该多元关系相连的各实体的码以及关系本身的属性

关系的码:各实体码的组合

“讲授”关系是一个三元关系,可以转换为如下关系模式,其中课程号、职工号和书号为关系的组合码:

讲授(课程号,职工号,书号)

3、关系模式规范化

应用数据库设计的范式理论对初始关系模型进行优化。数据库设计的三大范式如下:

第一范式 每一个分类必须是一个不可分的数据项。属性不可再分,确保每列的原子性。

第二范式 要求每个表只描述一件事情,每条记录有唯一标识列。

第三范式 数据库表中不包含已在其它表中已包含的非主关键字信息。

关系模式的规范化过程如下:

A、确定范式级别

考察关系模式的函数依赖关系,确定范式等级。

B、实施规范化处理

利用规范化方法和理论将关系模式规范化。

C、模式改进

合并:

将用于关联查询的具有相同主键的各表合并可提高查询效率

分解:

水平分解,将关系的元组分为若干子集,提高查询效率;垂直分解,把关系中经常一起使用的属性分解出来,形成一个子关系,提高执行效率。分解时要保持无损连接和函数依赖。

4、实例

教学管理系统

由ER模型转化为的关系模型:

学生(学号、姓名、性别、生日、籍贯、民族、入学日期、专业号)实体表

专业(专业号、专业名称、类别、学院号)实体表

学院(学院号、学院名称、院长)实体表

课程(课程号、课程名称、学分、学院号)实体表

成绩表(学号、课程号、成绩)关系表

在转换为关系模型时,一对多的联系都在相应的多方实体的关系中增加一个外键。

需求的增加:

如果教学管理系统还要管理教师教学安排,教师包括编号、姓名、年龄、职称,一个教师只能属于一个学院,一名教师可以上若干门课程,一门课程可以有多名老师来上,每个教师所上的每门课都有一个课堂号和课时数。

教师实体的ER图:

教学管理系统ER图:

关系表 多对多

成绩表 (学号课程号,成绩,时间,地点)

五、物理结构设计

1、物理结构设计简介

物理结构设计:对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构。数据库的物理结构设计分为两步:

A、确定物理结构:存取方法和存储结构

B、评价物理结构:评价重点是时间和空间效率

根据具体的数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(数据类型 索引 主键)。

2、确定物理结构

(1)存储结构的设计

物理结构中,数据的基本存取单位是存储记录。

某一类型的所有存储记录的集合称为文件。

确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。

(2)数据存取路径的设计

在关系数据库中,选择存取路径主要是指确定如何建立索引。例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等。

(3)数据存放位置的设计

为了提高性能,可将数据的易变部分、稳定部分、经常存取部分和存储频率较低部分分开存放。

(4)系统配置的设计

DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化。初始情况下,系统都为这些变量赋予了合理的缺省值,但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能。

3、评价物理结构

物理结构设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。

4、实例

教学管理系统

表1-1 学院

字段名

类型

宽度

小数

主键/索引

参照表

约束

Null值

学院号

文本型

2

↑(主)

学院

文本型

16

院长

文本型

8

表1-2 专业

字段名

类型

宽度

小数

主键/索引

参照表

约束

Null值

专业号

文本型

4

↑(主)

专业

文本型

16

专业类别

文本型

8

学院号

文本型

2

学院

表1-3 学生

字段名

类型

宽度

小数

主键/索引

参照表

约束

Null值

学号

文本型

8

↑(主)

姓名

文本型

8

性别

文本型

2

男 or 女

生日

日期型

民族

文本型

6

籍贯

文本型

20

专业号

文本型

6

专业

简历

备注型

入学时间

日期型

表1-4 课程

字段名

类型

宽度

小数

主键/索引

参照表

约束

Null值

课程号

文本型

8

↑(主)

课程名

文本型

24

学分

字节型

学院号

字符型

2

学院

表1-5 成绩单

字段名

类型

宽度

小数

主键/索引

参照表

约束

Null值

学号

文本型

8

学生

课程号

文本型

6

课程

成绩

单精度

4

1

>=0 and <=100

六、数据库实施

1、数据库实施的过程

数据库实施:指根据逻辑设计和物理设计的结果,在计算机上建立起实际的数据库结构、装入数据、进行测试和试运行的过程。

2、实例

学生表:

学号

姓名

性别

生日

民族

籍贯

专业号

简历

登记照

06053113

唐李生

04/19/1987

湖北省麻城

0501

07042219

黄耀

01/02/1989

黑龙江省牡丹江市

0403

06041138

华美

11/09/1987

河北省保定市

0403

07045120

刘权利

10/20/1989

湖北省武汉市

0403

08055117

王燕

08/02/1990

河南省安阳市

0501

08045142

郝明星

11/27/1989

辽宁省大连市

0403

08053101

高猛

02/03/1990

湖北生黄石市

0501

08053124

多桑

10/26/1988

西藏

0501

08053160

郭政强

06/10/1989

土家

湖南省吉首

0501

08053116

陆敏

03/18/1990

广东省东莞

0501

08053131

林惠萍

12/04/1989

广西省柳州市

0501

07093305

郑家谋

03/24/1988

上海市

0904

07093342

罗家艳

05/16/1988

北京市

0904

07093325

史玉磊

09/11/1988

湖北省孝感市

0904

07093317

凌晨

06/28/1988

浙江省温州

0904

08041136

徐栋梁

12/20/1989

陕西咸阳

0403

08041127

巴朗

09/25/1989

蒙古

内蒙古

0403

课程表:

课程号

课程名

学分

学院号

09064049

高等数学

6.0

09

09065050

数据结构

4.0

09

02091010

大学语文

3.0

01

09006050

线性代数

3.0

09

01054010

大学英语

4.0

01

02000032

美术设计

2.0

02

09023040

运筹学

5.0

09

09061050

数据库及应用

3.0

09

05020030

管理学原理

3.0

05

05020051

市场营销学

3.0

05

04010002

法学概论

3.0

04

04020021

合同法实务

2.0

04

专业表:

专业号

专业

专业类别

学院号

0201

新闻学

人文

02

0301

金融学

经济学

03

0302

投资学

经济学

03

0403

国际法

法学

04

0501

工商管理

管理学

05

0503

市场营销

管理学

05

0602

会计学

管理学

06

0902

信息管理

管理学

09

0904

计算机科学

工学

09

学院表:

学院号

学院

院长

01

外国语学院

叶秋宜

02

人文学院

李容

03

金融学院

王汉生

04

法学院

乔亚

05

工商管理学院

张绪

06

会计学院

张一非

09

信息学院

杨新

成绩表:

学号

课程号

成绩

06053113

01054010

85

06053113

02091010

80

06053113

09064049

75

06053113

05020030

90

06053113

09061050

82

07042219

02091010

85

07042219

01054010

78

07042219

09061050

72

08055117

01054010

92

08055117

09064049

85

08055117

09061050

88

07093305

09064049

92

07093305

01054010

86

07093305

05020030

70

07093305

09065050

90

06041138

02091010

74

06041138

04010002

83

08053131

01054010

77

08053131

09061050

66

07093317

09064049

78

07093317

01054010

87

07093325

01054010

76

07093325

09065050

81

07093325

09064049

82

07093325

04010002

75

08041136

01054010

88

08041136

09061050

85

七、数据库运行与维护

数据库运行与维护的主要任务包括:

A、维护数据库的安全性与完整性

B、监测并改善数据库性能

C、重新组织和构造数据库

只有数据库系统在运行,就需要不断地进行修改、调整和维护。

数据库设计(一)——数据库设计相关推荐

  1. 软件设计之 数据库设计

    [按语:在软件设计或是动态网站开发中,数据库设计时很重要,我觉得可以说是开发工作的核心部分,所以学好数据库设计,是很重要的,也是大有前途的...]  ◆.概念 首先要搞清楚容易混淆的两个概念:&quo ...

  2. 面试官:支撑日活百万用户的高并发系统,应该如何设计其数据库架构?

    点击上方"蓝字", 右上角选择"设为星标" 周一至周五早11点半!精品文章准时送上! 本文转载自公众号:石杉的架构笔记 目录:                  ...

  3. 架构师之路 — 数据库设计 — 关系型数据库应用程序设计

    目录 文章目录 目录 设计的原则 设计的步骤 设计的范式 第一范式:确保属性的原子性与唯一性 第二范式:确保属性完全依赖于主码(消除部分函数依赖) 第三范式:确保属性不依赖于其他非主属性(消除传递依赖 ...

  4. 美团技术 mysql_美团MySQL数据库巡检系统的设计与应用

    巡检工作是保障系统平稳有效运行必不可少的一个环节,目的是能及时发现系统中存在的隐患.我们生活中也随处可见各种巡检,比如电力巡检.消防检查等,正是这些巡检工作,我们才能在稳定的环境下进行工作.生活.巡检 ...

  5. 支撑日活百万用户的高并发系统,应该如何设计其数据库架构?

    " 这篇文章,我们来聊一下对于一个支撑日活百万用户的高并系统,他的数据库架构应该如何设计? 看到这个题目,很多人第一反应就是: 分库分表啊! 但是实际上,数据库层面的分库分表到底是用来干什么 ...

  6. 系统数据据结库设计理论mysql_基于JavaEE的报刊征订管理系统_JSP网站设计_MySQL数据库设计...

    目  录 摘  要I ABSTRACTII 第一章 绪论1 1.1课题背景1 1.2目的和意义1 1.3开发工具及技术1 1.3.1开发工具1 1.3.2 JSP技术2 1.3.3 JavaScrip ...

  7. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  8. mysql数据库建设网站,网站设计与建设-MySQL数据库【松柏书屋】

    <网站设计与建设-MySQL数据库[松柏书屋]>由会员分享,可在线阅读,更多相关<网站设计与建设-MySQL数据库[松柏书屋](64页珍藏版)>请在人人文库网上搜索. 1.第2 ...

  9. 数据库系统优化--业务逻辑设计优化

    当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的.这时你要考虑业务逻辑优化和表设计的重构.这两点的确和设计结合的很紧密.    业务逻辑优化    结合实际, ...

  10. mysql性能调优与架构设计 51cto_MySQL 数据库性能优化之表结构优化

    很多人都将 数据库设计范式 作为数据库表结构设计"圣经",认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求.殊不知,在N年前被奉 ...

最新文章

  1. 2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告
  2. Redis亿级数据过滤和布隆过滤器
  3. oracle-25031安装错误分析解决
  4. 后端技术:mybatis插件原理详解
  5. mysql log 记录报错 sql语句_MySQL生产库中添加修改表字段引起主从崩溃的问题总结...
  6. nginx分割日志管理
  7. maven 多模块项目
  8. css中em单位和rem单位
  9. 读取MySQL二进制文件_MYSQL: mysqlbinlog读取二进制文件报错read_log_event()
  10. html 定位_定位position
  11. java 职责单一原则,设计模式原则之一:单一职责原则
  12. 如何制作基于beaglebone的设备通知Texter ?---凯利讯半导体
  13. 在程序中使用3D Vision--转帖
  14. 代码打字速度_使用VueJS创建打字速度效果
  15. 关于 nscd,nslcd 和 sssd 套件的综述
  16. kafka如何选择分区数及kafka性能测试
  17. 卸载3dMax2012流程
  18. 【深度学习图像识别课程】毕业项目:狗狗种类识别(1)环境准备
  19. matlab中dtft语法,DTFT的Matlab矩阵计算的理解
  20. 如何在工作中鼓励持续的反馈

热门文章

  1. 光纤接头(尾纤)ST,SC,LC,FC 模块
  2. 计算机组成与设计概念总结
  3. sqlserver企业版秘钥_SqlServer2008到期升级企业版 密钥+图解
  4. 硬件课程设计:步进电机控制系统
  5. Matlab深度学习——入门
  6. Pycharm下了汉化包之后切换回英文界面
  7. 《SVN系列教程-第五章-IDEA集成SVN的使用》
  8. java项目-基于SSM实现物流信息管理系统
  9. 关于修改DSDT出现的常见问题
  10. 极速办公(excel)字体如何改为斜体