《SQL入门经典》笔记(第四章:建立数据库之规格化数据库)

1. 原始数据库:

在未规格化之前,一些数据可能会在多个表中出现,这被称作数据冗余。数据冗余对安全、磁盘利用、查询速度和数据库更新都有坏处。尤其是数据完整性会受到影响。

2. 什么是规格化?

规格化是把原始数据库分解为表,去除数据库里冗余数据的过程。数据库开发人员利用规格化来设计数据库。

规格化的优点:

  • 更好的数据库整体性组织;
  • 减少冗余数据;
  • 数据库内部的数据一致性;
  • 更灵活的数据库设计;
  • 更好地处理数据库安全;
  • 加强引用整体性的概念(一个表里某一列的值依赖于另一个表里某列的值)。

规格化缺点:降低数据库性能。

3. 规格形式:

具体的规格化方针被称为规格形式,是规格化中不可或缺的概念。

(1)什么是规格形式?

规格形式是衡量数据库被规格化级别(或深度)的一种方式。数据的规格化级别由规格形式决定。

(2)常见的三种规格形式:

a. 第一规格形式

数据库必须处于第一规格形式(突然想到这就是以前老师讲的范式。。?)。

第一规格形式的目标是把原始数据分解到表中并给大多数表或全部表设置一个主键(以此来从本质上区别各个表)。

b. 第二规格形式:

第二规格形式必须满足第一规格形式。目标是提取对主键仅有部分依赖的数据,把它们保存到另一表中。

如何理解“部分依赖”呢?对于主键EMP_ID而言,雇员的个人信息依赖于主键,例如EMP_NAME, EMP_ADDRESS等;而一些与主键联系不是很紧密的字段,例如员工进入公司的时间DATE_HIRE,上次晋升时间DATE_LAST_RAISE等。

c. 第三规格形式:

第三规格形式必须满足第一和第二规格形式。目标是删除表里不依赖于主键的数据。对于EMPLOYEE_例子而言,员工的职位等信息和EMP_ID完全不相关,因此其被摘出放入新表。如下图所示。

4. 数据库逻辑设计/逻辑建模:

把数据安排到逻辑的、有组织的对象组,以便于维护的过程。

(1)什么是终端用户的需求?

任何数据库设计都要考虑终端用户。终端用户需求是最重要的考虑因素。

那么谁是终端用户呢?——终端用户是最终使用数据库的人。

设计时要考虑的与用户相关的因素包括:数据库里应该保存什么数据、用户如何访问数据库、以何权限访问、数据库中的数据如何分组、哪些数据最常被访问、全部数据与数据库如何关联、采取什么措施保证数据的正确性、如何减少数据冗余、如何利于数据库维护……

(2)数据冗余:数据应该没有冗余。

5. 命名规范:

命名规范是在数据库规格化过程中最重要的考虑因素之一。

猜你喜欢

转载自blog.csdn.net/weixin_39965890/article/details/82670406