建立数据库及其应用系统的核心和基础是数据库设计。要求对于指定的应用环境,构造出较优的数据库模式,建立数据库及其应用,使系统有效的存储数据,并满足用户的各种应用需求。
一般将数据库设计 分为6个阶段,包括系统规划,需求分析,概念设计,逻辑设计,物理设计,系统实施,咱们重点讲解逻辑设计,物理设计
&数据库的逻辑设计
1.1关系数据库设计基础
现实世界中的对象为实体,是客观存在并可相互区别的事物,事物可以指实际的东西也可指抽象的事物还可以指事物与事物的联系)
1.1.1.实体与关系表
实体是用来描述现实世界中事物及其联系的,把组合在一起的同类事物叫做实体集,即性质相同的同类事物的集合。这里的同类是指同一实体集合中的每个实体具有相同的特征要求·
用来表示实体某一方面的特性叫属性,例如人的姓名,年龄,职务,专长等表示了人的5个方面的特性,特性是对同类的限定,人类可以根据需要选择其中的某些特性,甚至赋予新的特性,如职工编号。如果把人作为认识管理的对象,可用职工编号姓名,性别,年龄等特性描述,如果把人作为财务管理的对象,可用职工编号,姓名,基本工资,工龄工资等特性来描述。
实体是通过属性来体现的,因此实体是相关属性的集合,例如,职工编号001,姓名马华腾,基本工资6000.工龄工资500等属性的集合,表示马化腾的工资清单这样一个实体。
实体是千差万别的,即使是同类实体也各不相同,因而不可能有两个实体在所有的属性上是相同的。实体集合有一个或一组特殊的属性,能够唯一表示实体集合中的每个实体,能将一个实体与其他实体区分开来的属性集叫做实体标识符。
在关系型数据库Oralce中,把实体集表示为表,实体表示为表中的行,属性表示为表中的列,实体表示符表示为关键字或主码。
1.1.2.实体间的联系
在一个数据库中,一般具有几个,几十个,几百个实体集合,集合之间不是孤立的,是有联系的。两个集合之间的联系就是两个属性或者两个实体集合之间的联系
(1)一对一联系
如果实体集EA中的任何一个实体仅对应于实体集EB中一个实体,则称EA对EB是一对一联系。以1:1表示,即专业与系部的关系,一个系部只能有一个系主任
(2)一对多(多对一)联系
如果实体集EA中至少有一个实体对应于实体集EB中一个以上的实体,反之,实体集EB中任一实体至多对应于实体集EA中的一个实体,则称实体集EA对实体集EB是一对多关系,以1:N表示(实体集EB对实体集EA是多对一关系,以N:1表示)。例如班级与学生的关系,一个班级可以有多么学生,一个学生只能属于一个班级。
(3)多对多联系
如果实体集EA中至少有一个实体对应于实体集EB中一个以上实体:反之,实体集EB中也只是有一个实体对应于实体集EA中一个以上实体,则称A与B是多对多关系,以N:M表示,例如学生与课程之间的关系,一名学生可以学习多门课程,多门学生可以学习一门课程。
1.2关系数据库的规范化
关系数据库中的关系需要满足一定的要求这些要求被称为范式。,规范化的关系数据库有助于消除表中的冗余与不一致性,数据库的设计主要是数据库模式的设计,关系模式的设计将直接影响数据库的质量
1.第一范式
如何一个实体(表)的所有属性都是不可分割的,即表中的每一行和每一列均有一个值,并且永远不会是一组值,这表被称为满足1NF(第一范式定义的数据库中不包含任何多值属性)
2.第二范式
第二范式允许数据库中用多个属性作为主码(主码是实体实例的唯一标识符),在包括多个码的表中,如何函数依赖于码中的一部分来确定信息,则违反了第二范式
3第三范式
每个非关键子子列都独立于其他非关键子列,并依赖于关键字,第三范式指数据库中不能存在传递函数依赖关系
4Boyce-Codd范式BCNF
在表中,可以将其中一列或多列指定为主码,也可以指定其他某些列为候选码,表中也存在其他属性。不考虑候选码,唯一的函数依赖关系存在于表中的每个属性与整个主码之间。(消除主属性对码的部分和传递依赖)
&数据库的物理设计
1.设计步骤
(1)存储记录结构设计,包括记录的组成,数据项的类型和长度,以及逻辑记录到存储记录的映射。还要对数据项类型特征做分析,对存储记录进行格式化,并决定如何进行数据压缩或代码化
(2)确定数据存储方式,物理设计最重要的一个考虑,就是把存储记录在全范围内进行物理安排
顺序存放:平均查询次数为该关系中记录个数的二分之一
哈希存放:查询次数有哈希算法决定
索引存放:要确定建立何种索引,及建索引的表和属性
聚簇存放:记录聚簇是将不同类型的记录分配到相同的物理区域中去以充分利用物理顺序性的优点,从而提高访问速度,即把经常在一起使用的记录聚簇在一起,以减少物理i/o次数。
(3)设计访问方法,访问方法设计为存储在物理设备上的数据提供存储结构和查询路径
(4)完整性和安全性考虑。根据逻辑设计文档中提供的对数据库的约束条件以及具体的数据库管理系统dbms,操作系统os的性能特征和硬件环境,设计数据库的完整性和安全性措施。
(5)形成物理设计文档。包括存储记录格式,存储记录位置分布及方法方法,满足的操作需求,并给出硬件和软件系统的约束。
在物理设计中,注意物理数据的独立性。所谓物理数据的独立性,指消除由于物理数据结构变动而引起对应用程序的修改
2.设计性能
数据库的性能用时间 空间 开销来衡量。
要提高数据库物理性能,有下面一些基本考虑
(1)为表和索引建立不同的表空间,禁止在系统表空间中放入非核心Oracle系统成分的对象,确保数据表空间和索引空间位于不同的磁盘驱动器上
(2)了解终端客户如何访问数据,如果可能,将经常同时查询和频繁查询的对象防止不同的物理磁盘上
(3)当数据库包含允许用户并行访问不同数据元素的大对象数据时,将大对象数据分割存放在多个磁盘上
(4)在独立的各盘上至少创建两个用户定义的回滚段表空间,以存放用户自己的回滚段。在初始化文件中安排回滚段的次序,使他们在多个磁盘间进行切换。
(5)将重做日志放在一个读写较少的盘上。对于每个oracle实例要建立2个以上的重做日志组,同坐的两个成员放在不同的设备上
(6)确立表和索引的大小,这决定了保持他们所需的表空间的尺寸,也决定了哪些表空间物理地装在哪些盘上和哪些表空间可以结合在一起。
对于不同的应用环境,对数据库物理结构有不同的要去。用户可以根据特定的应用环境对数据库的要去,设计对于数据库的物理结构,使得数据库能够支持企业计算。