NCRE 计算机三级 数据库技术 (3)数据库结构设计

3.1数据库概念设计

分为概念设计,逻辑设计,物理设计

概念设计是数据库设计的核心环节,是独立于具体DBMS的模型

3.1.1数据库概念设计的任务

数据库概念设计阶段的目标是:

  1. 定义和描述应用领域涉及的数据范围
  2. 获取应用领域或问题域的信息特征
  3. 描述清楚数据的属性特征
  4. 描述清楚数据之间的关系
  5. 定义和描述数据的约束
  6. 说明数据的安全性要求
  7. 支持用户的各种数据处理需求
  8. 信息模式可以转换为数据库逻辑模型(即数据库模型)

3.1.2概念设计的依据及过程

依据:根据需求分析的结果为依据,即需求说明书、DFD图等等

结果:概念设计的结果是概念模型(ER)与概念设计说明书

过程:

  1. 明确建模目标(模型覆盖范围)
  2. 定义实体集(自底向上标识和定义实体集)
  3. 定义联系(实体间关联关系)
  4. 建立信息模型(构造ER模型)
  5. 确定实体集属性(属性描述一个实体的特征或性质)
  6. 对信息模型进行集成与优化(检查和消除命名不一致、结构不一致等等)

概念数据模型(ER)是对现实世界的抽象和模拟

 

3.1.3 ER建模方法

(Entity Relationship model)

  1. 实体(实例)    实体指客观存在可相互区分的事物
  2. 实体集   实体集描述一个现实和抽象的事物集合
  3. 属性   属性用于描述一个实体集的特征和性质,每个属性的取值范围称为
  4. 码   实体集中能唯一标识每一个实例的属性或属性组
  5. 联系  联系描述现实世界中实物之间的关系    联系也可以有属性

实体间的联系有三类

  1. 1对1
  2. 1对n
  3. n对n

绘制

属性:用椭圆

联系:用菱形

实体/实体集:用矩形

 主码:就是在椭圆中写的属性名下面加多下划线

3.2数据库逻辑设计

3.2.1目的

将概念模型(ER)转换为DBMS支持的数据模型(如关系模型),并对其进行优化

3.2.2 补充概念

1.关系模型

    数据模型包括三种关系模型,网状模型,层次模型

    关系模型使用二维表格结构描述实体与实体之间的联系的模型

    关系的描述称之为关系模式,关系模式由五部分组成,即它是一个五元组 R(U,D,DOM,F)

其中R:关系名,U:组成该关系的属性名集合  D:属性组U中的属性所来自的域(取值范围)   

DOM :属性到域的映射(属性怎么得到取值范围的)  F:属性组U上的一组数据依赖

  由于D,DOM没啥用,简化为R<U,F>,当且仅当U上的一个关系R满足F时,R称之为关系模式R<U,F>的一个关系

2.数据依赖

      定义:

设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性相等,而在Y上的属性值不相等,称之为“X函数确定Y”或“Y函数依赖于X”记作X→Y

即唯一X确定唯一Y

关系内部属性与属性之间的一种约束关系

函数依赖  

eg:

学校里面    学生(学号,姓名,年龄,宿舍号)

学号可以唯一确定某一个学生实体,学号确定了,宿舍号和年龄和姓名就确定了,因此称姓名,年龄,宿舍号函数依赖于学号,但反过来宿舍里一般不止你一个吧,所以宿舍号不能确定学号(一个人住除外,杠精绕路)

此处额外提出一点,例如学生里面的属性

(学号,姓名,年龄,宿舍号)→ 学号   称为平凡函数依赖

(学号,姓名,年龄,宿舍号)→ 年级   称为非平凡函数依赖

就是在不在括号里面,即是不是该实体的属性 

完全函数依赖和部分函数依赖

(学号,姓名,年龄,课程号)→  课程成绩       称为课程成绩部分函数依赖 

(学号,课程号)→  课程成绩    称为课程成绩完全函数依赖

  因为课程成绩(某个人的课程成绩)只和课程号(上啥课)学号(谁)有关,和你几岁,名字(因为名字可能重复)叫啥没关系,所以相反的都有关系就是完全函数依赖 

传递函数依赖

学号 → 班级号     班级号 → 所在系号     

学号→ 所在系号    称作所在系号传递函数依赖学号

这就不用赘述了吧,都看得懂吧(A推出B,B推出C,所以A推出C,只不过这里是间接推出嘛,这里叫传递嘛)

补充!!!传递函数依赖是完全函数依赖的一种!!!

多值依赖  

3.候选码、主码、外码

码:能唯一确定的属性值(没有重复的)

候选码:某属性组的值能唯一确定整个元组的值,则称该属性组为候选码(一堆码构成)

主码:候选码可能有多个,选择一个为主码

外码:既不是主码也不是候选码,但是是另外一个关系模式的码

4.数据规范化

关系模式的规范化理论:把一个低一级的关系模式分解为高级关系模式的过程

关系模式的规范化主要是由关系范式来完成

     ↓ ←  ←  ←  ←  ←  ← ←  ←  ↓

     ↓

5 .范式

    范式:关系模式满足的约束条件称为范式。根据满足规范化的程度不同,范式由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF

      1NF:如果关系模式R,其所有属性都是不可再分的基础数据项,则称R属于第一范式(1NF),R\in 1NF

eg:

学生信息 R (学号   ,身份   ,年龄)

学号          身份            年龄


01        女大三学生       22

02        女大一学生       18

03        男大四学生        22

注意这个“身份”,身份包括了性别和年级,是可再分的数据项,所以它不是第一范式

  2NF:如果关系模式R\in 1NF,且每个非主属性都完全函数依赖于主码,则称R属于第二范式,R\in 2NF

eg:

学生信息R(学号 ,姓名,年龄,课程号,课程名称,成绩,课程设置学分)is 2NF???

主码:(学号,课程号)    (这两个是唯一的)

其他:姓名,年龄,课程名称,成绩,课程设置学分) 非主属性

显然易见   学号→姓名,年龄)                               和课程号无关       

    PS:你叫啥和你上啥课有啥关系???一堂课那么多人,一个课程号对应多少人的姓名啊

                   课程设置学分 → 课程号              ps:你学号多少都影响不了学校设置的学分。。。

综上所述,非主属性都要能由主码唯一确定,也就是它们之间有唯一确定的关系

所以R不满足第二范式

    3NF:如果关系模式R\in 2NF,且每个非主属性都     传递函数依赖于R的主码,则称R属于第三范式,R\in 3NF

eg:

学生信息R(学号,姓名,年龄,所在学院,学院地点,学院电话) is 3NF???

很显然 这个关系里面所有的属性都函数依赖于学号,但是,学院电话函数依赖于学院号,学院号函数依赖于系号,系号函数依赖于学号,因此学院电话传递函数依赖于学号

同样的BCNF在3NF的基础上消除了部分函数依赖,4NF在BCNF的基础上消除了非平凡函数依赖和多值函数依赖

 

3.2.3数据库逻辑模型的产生

  概念模型按照一定规则可以转换为数据模型,这种转换规则如下:

  1. 一个实体转换为一个关系模式
  2. 一个1:1的联系可转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
  3. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的模式合并
  4. 一个m:n联系转为为一个关系模式
  5. 三个或三个以上实体间的一个多元联系转换为一个关系模式
  6. 同一实体集的实体间的联系,也可以按1:1、1:N和m:n三种情况分别处理

 ③1:n

3.3数据库物理设计

发布了43 篇原创文章 · 获赞 7 · 访问量 3356

猜你喜欢

转载自blog.csdn.net/Zeroooooo/article/details/101055747
今日推荐