数据库系统概论|第七章:数据库设计—课程笔记

前言

本章讨论数据库设计的技术和方法,主要讨论基于关系数据库管理系统的关系数据库设计问题 ,而关于数据库的设计过程中,关于数据模型、关系模型等基本概念在前文中已经有详尽介绍,此处便不再赘述,本文主要围绕概念结构设计 以及逻辑结构设计进行展开。

一、概念结构设计

将用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计 。它是整个数据库设计的关键

1.1概念模型

概念模型的主要特点是:

(1)能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是现实世界的一个真实模型

(2)易于理解,可以用它和不熟悉计算机的用户交换意见。用户的积极参与是数据库设计成功的关键。

(3)易于更改,当应用环境和应用要求改变时容易对概念模型修改和扩充。

(4)易于向关系、网状、层次等各种数据模型转换

1.2实体之间的联系

a.一对一联系(1:1)

如果对于实体集A中的每一个实体,实体集B中**至多有一个(也可以没有)**实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。

b.一对多联系(1:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0 **)**与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。

c.多对多联系(m:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n0 与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m0 **)**与之联系,则称实体集A与实体集B具有多对多联系,记为m:n。

1.3E-R图

E-R图提供了表示实体型、属性和联系的方法。

①实体型用矩形表示,矩形框内写明实体名。

②属性用椭圆形表示,并用无向边将其与相应的实体型连接起来。

③联系用菱形 表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。

如上图,便展示了一个E-R图,其中,实体型为学生,包含四个属性,分别为学号、姓名、性别以及年龄。

下面介绍一个更为复杂的E-R图结构:

二、逻辑结构设计

概念结构是独立于任何一种数据模型的信息结构,逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的****逻辑结构。简而言之,就是完成概念模型向逻辑模型的过渡,将E-R图进行转化。

逻辑结构设计遵循以下三个步骤:

2.1E-R图向关系模型的转换

E-R图向关系模型的准换要解决的问题是:如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。

将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转换为关系模式。每一个实体都转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。

对于实体型间的联系则有以下不同的情况

(1)一个1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。

(2)一个1:n 联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

(3)一个m:n 联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性、各实体的码、组成关系的码或关系码的一部分。

(5)具有相同码的关系模式可合并

2.2数据模型的优化

关系数据模型优化通常以规范化理论 为指导,规范化理论相关介绍,参考数据库系统概论|第六章:关系数据理论---课程笔记2

相关推荐
aaaameliaaa3 小时前
字符函数和字符串函数
c语言·笔记·算法
天桥下的卖艺者4 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
似的8354 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
隔窗听雨眠4 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
数据库小学妹5 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
tq10865 小时前
开放与封闭:类型系统的安全哲学
笔记
fanged5 小时前
总线学习3--SPI番外(TODO)
学习
龙仔7255 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
韭菜炒鸡肝天5 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
神龙天舞20016 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql