概念

概念设计术语

  • 实体: 客观存在,可以相互区别的事物就是实体,它可以是具体的对象,一个人,一个房子等等,也可以是一个抽象的对象,马克思主义,毛泽东思想等等.
  • 实体集: 同类实体的集合.
  • 属性: 实体的特性就是属性, 类似对象属性.
  • 实体标识符: 唯一标识实体的属性或属性集,也称关键码

逻辑设计术语

  • 字段: 标记实体属性的命名单位
  • 记录: 字段的有序集合成为记录,一般用一个记录来描述一个实体
  • 文件: 同一类记录的集合, 例如 MYSQL 中一个表保存为一个持久化文件.
  • 关键码: 唯一标识文件中每个记录的字段或字段集.

设计三范式

1NF

在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性.

这里的不可分割数据项并非都是一些基本数据项, 实际情况下可能是一些大型字符串(JOSN)格式, 不可分割视情况而定.有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型

2NF

满足第二范式(2NF)必须先满足第一范式(1NF).

第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分. 要求实体的属性完全依赖于主关键字

3NF

在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖).

第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息.

设计12法则

Rule

  • 信息法则
  • 保证访问法则
  • 空值的系统化处理
  • 基于关系模型的动态联机目录
  • 统一的数据子语言法则
  • 视图更新法则
  • 高级的插入、更新和删除操作
  • 数据的物理独立性
  • 数据的逻辑独立性
  • 数据完整性的独立性
  • 分布独立性
  • 非破坏性法则

Intro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 信息法则
关系数据库中的所有信息都用唯一的一种方式表示——表中的值。

# 保证访问法则
依靠表名、主键值和列名的组合,保证能访问每个数据项。

# 空值的系统化处理
支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。

# 基于关系模型的动态联机目录
数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用户可以访问的表中。

# 统一的数据子语言法则
一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规则:数据定义、视图定义、数据操作、约束、授权以及事务(SQL)。

# 视图更新法则
所有理论上可以更新的视图也可以由系统更新。

# 高级的插入、更新和删除操作
把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视作集合。

# 数据的物理独立性
不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都保持着逻辑上的不变性。

# 数据的逻辑独立性
当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑上的不变性。

# 数据完整性的独立性
专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定义,而且可以存储在数据目录中,而非程序中。

# 分布独立性
不管数据在物理是否分布式存储,或者任何时候改变分布策略,RDBMS的数据操纵子语言必须能使应用程序和终端活动保持逻辑上的不变性。

# 非破坏性法则
如果一个关系数据库系统支持某种低级(一次处理单个记录)语言,那么这个低级语言不能违反或绕过更高级语言(一次处理多个记录)规定的完整性法则或约束,即用户不能以任何方式违反数据库的约束。

设计阶段划分

需求(建房子)

“需求”是一切的基础, “需求” 或者 “业务” 决定了持久层, 代码层等一切设计.

概念模型

ER模型是一种概念模型设计方法

“E-R” 模型, 实体关系模型, 用以描述信息需求和要存储在数据库中的信息的类型. ER 模型强调数据库规划师、数据库操作人员和数据库管理系统的作用.通过将需求利用 ER 工具表达出来, 并最终将 ER 转换为关系模型.

概念模型表达了”数据”的整体逻辑结构,它是”系统用户”对整个应用项目设计的数据的全面描述;概念模型是从”用户”的观点出发,对数据建模.

一个好的概念模型决定了后续逻辑模型, 一定程度上影响了数据库设计的好坏.

逻辑模型

设计系统的模式和外模式,对于关系模型主要是基本表和视图.

逻辑模型表达了”数据库”的整体逻辑结构,但它是”设计人员”对整个项目数据库的全面描述;逻辑模型是从”数据库实现”的观点出发,对数据建模.

物理模型

物理模型(内部模型)是数据库最底层的抽象,它描述数据在磁盘或磁带上的存储方式(文件的结构),存取设备(外存的空间分配)和存取方法(主索引和辅助索引).

经验杂谈

开发者和DBA

开发者:一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,数据库的规范化,与OO的部分思想雷同。

DBA:设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定

实践是检验真理的标准

项目开发.