当前位置: 首页 > web >正文

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

前言

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

一、概念结构设计

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

1.1概念模型

概念模型的主要特点是:

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

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

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

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

1.2实体之间的联系

a.一对一联系(11

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

b.一对多联系(1n

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

c.多对多联系(mn

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

1.3E-R图

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

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

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

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

如上图,便展示了一个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联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

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

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

2.2数据模型的优化

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

http://www.xdnf.cn/news/6141.html

相关文章:

  • 使用大语言模型从零构建知识图谱(上)
  • Kubernetes控制平面组件:Kubelet详解(三):CRI 容器运行时接口层
  • 国产 ETL 数据集成厂商推荐—谷云科技 RestCloud
  • 【C++设计模式之Decorator装饰模式】
  • 砷化镓太阳能电池:开启多元领域能源新篇
  • 什么是SparkONYarn模式?
  • 【解析:新能源汽车芯片主要玩家及技术发展】
  • 聊聊JetCache的缓存构建
  • 基于自校准分数的扩散模型在并行磁共振成像中联合进行线圈灵敏度校正和运动校正|文献速递-深度学习医疗AI最新文献
  • SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践
  • NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级
  • 不借助 Cursor,如何开发第一款 ios 产品并做到付费榜 Top 2
  • C# 通过脚本实现接口
  • C++:二叉搜索树
  • 【C++】map和set的模拟实现
  • vscode调试c/c++
  • Python笔记:在环境变量中增加了dll加载路径,python提示DLL加载失败
  • HTML:入门
  • Angular 知识框架
  • 【SQL】如何在 SQL 中统计结构化字符串的特征频率
  • 【位运算】常见算法公式使用
  • 360智语:以全栈技术重塑企业级智能体开发新标杆
  • 银行卡真伪验证助力金融合规-银行卡实名认证接口
  • 电机的导程和脉冲之间的关系
  • Ansible Roles 是一种用于层次化和结构化组织 Ansible Playbook 的机制。
  • SVG 知识详解:从入门到精通
  • 鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
  • 《Effective Python》第2章 字符串和切片操作——Python 字符串格式化的现代选择f-strings
  • Python 之 Flask 入门学习
  • 《P4391 [BalticOI 2009] Radio Transmission 无线传输 题解》