第二章:信息与数据模型
信息与数据模型
数据模型
数据模型的概念
- 定义:数据模型(Data Model)也是一种模型,它是对现实世界中数据特征及数据之间联系的抽象。
- 数据模型是实现数据抽象的主要工具,也是数据库系统中用于信息表示和提供操作手段的形式化工具。
- 数据模型是数据库系统的核心和基础
数据处理三层抽象描述
- 一般可分为概念层、逻辑层、物理层
- 概念层
- 定义:数据抽象级别的最高层,其目的是按用户的观点来对现实世界建模。
- 念层的数据模型称为概念数据模型,简称概念模型。
- 概念模型独立于任何DBMS,但容易向DBMS所支持的逻辑模型转换。
- 常用的概念模型有实体–联系模型(Entity-Relationship Model,简称E-R模型)。
- 逻辑层
- 定义:是数据抽象的中间层,描述数据库数据整体的逻辑结构。
- 逻辑层的数据抽象称为逻辑数据模型,简称数据模型。
- 它是用户通过DBMS看到的现实世界,是基于计算机系统的观点来对数据进行建模和表示。
- 常见的数据模型有:层次模型、网状模型、关系模型和面向对象模型。
数据模型的要素
- 数据模型通常由数据结构、数据操作和完整性约束三部分组成
- 数据结构
- 定义:描述数据库的组成对象,以及对象之间的联系
- 描述的内容
- 与数据类型、内容、性质有关的对象
- 与数据之间联系有关的对象
- 数据结构是对系统静态特性的描述
- 数据操作
- 定义:对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则。
- 类型:检索和更新(包括插入、删除、修改)。
- 数据操作是对系统动态特性的描述。
- 数据的完整性约束条件
- 完整性约束条件的定义:
- 是一组完整性规则。
- 完整性规则主要描述数据结构中的数据之间的语义联系、数据之间的制约和依存关系,以及数据动态变化规则。
- 数据约束主要用于保证数据的完整性、有效性和相容性。
- 数据模型对完整性约束条件的定义
- 数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。
- 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
数据模型与数据模式的区别
- 数据模型是描述现实世界数据的手段和工具。
- 数据模式是利用这个手段和工具对相互间的关系所进行的描述,是关于型的描述。它与DBMS和OS硬件无关。
- 数据模型和数据模式都分了三个层次,其对应对关系如下::
- ①概念模式:是用逻辑数据模型对一个单位的数据的描述。
- ②外模式:外模式也称子模式或用户模式,是与应用程序对应的数据库视图,是数据库的一个子集,是用逻辑模型对用户所用到的那部分数据的描述。
- ③内模式:是数据物理结构和存储方式的描述,是数据的数据库内部表示方式。内模式也称存储模式。
概念模型
概念模型的基本概念
- 实体(Entity)
- 客观存在并可相互区别的事物称为实体。
- 可以是具体的人、事、物或抽象的概念。
- 属性(Attribute)
- 实体所具有的某一特性称为属性。
- 一个实体可以由若干个属性来刻画。
- 码(Key):唯一标识实体的属性集称为码。
- 域(Domain):属性的取值范围称为该属性的域。
- 实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
- 实体集(Entity Set):同一类型实体的集合称为实体集。
- 联系(Relationship)
- 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。
- 实体内部的联系通常是指组成实体的各属性之间的联系。
- 实体之间的联系通常是指不同实体集之间的联系。
E-R模型
- 常用的概念层数据模型有实体-联系(Entity-Relationship,E-R)模型、语义对象模型。
- E-R图由实体、属性和联系三个要素构成。
- 实体
- 客观存在并可相互区别的事物称为实体。
- E-R图中的实体用于表示现实世界具有相同属性描述的事物的集合,它不是某一个具体事物,而是某一种类别所有事物的统称。
- 表示:矩形框,把实体名写在框内。
- 每个实体由实体名唯一标记。
- 每个实体对应于数据库中的一张数据库表,每个实体的具体取值对应于数据库表中的一条记录。
- 属性
- 用于表示实体的某种特征或者表示实体间关系的特征
- 用一个实体通常包含多个属性,每个属性由属性名唯一标记,画在椭圆内 。
- E-R图中实体的属性对应于数据库表的字段。
- 在E-R图中,属性是一个不可再分的最小单元。
- 如果属性能够再分,则可以考虑将该属性进行细分,或者可以考虑将该属性“升格”为另一个实体。
- 联系
- 数据之间的关联集合,是客观存在的应用语义链。
- 实体内部的联系通常是指组成实体的各属性之间的联系;。
- 实体之间的联系通常是指不同实体集之间的联系。
- 在E-R图中联系用菱形表示,框内写上联系名,并用连线将联系框与它所关联的实体连接起来。
- 基数:表示一个实体到另一个实体之间关联的数目。
- 从基数的角度将关系分为一对一(1:1)、一对多(1:n)、多对多(m:n)关系。
- 实体之间三类联系的图形表示:
- 一对一联系(1:1)
- 定义:如果实体集A中的每个实体,在实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B有一对一联系,记为1:1。
- 实例:学校里一个系和正系主任(假设一个系只有一个正主任,一个人只能担任一个系的正系主任),则系和正系主任是一对一联系。
- 一对多联系(1:n)
- 定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多的联系,记为1:n。
- 实例:一个系有多名教师。而每个教师只能在一个系工作,则系和教师之间是一对多联系。
- 多对多联系(m:n)
- 定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B有多对多的联系,记为m:n。
- 实例:一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
E-R模型设计原则与设计步骤
- ER模型设计原则:
- 属性应该存在于且只存在于某一个地方(实体或者关联)。——避免数据冗余。
- 实体是一个单独的个体,不能存在于另一个实体中成为其属性。——避免“表中套表”。
- 同一个实体在同一个E-R图内仅出现一次。
- E-R模型设计步骤:
- ①划分和确定实体。
- ②划分和确定联系。
- ③确定属性。作为属性的“事物”与实体之间的联系,必须是一对多的关系,作为属性的“事物”不能再有需要描述的性质或与其他事物具有联系。
- ④画出E-R模型。重复过程①~③,以找出所有实体集、关系集、属性和属值集,然后绘制E-R图。设计E-R分图,即用户视图的设计,在此基础上综合各E-R分图,形成E-R总图。
- ⑤优化E-R模型。利用数据流程图,对E-R总图进行优化,消除数据实体间冗余的联系及属性,形成基本的E-R模型。
逻辑模型
- 数据模型是按其数据结构而命名的,根本区别在于数据之间联系的表示方式不同,即数据记录之间的联系方式不同。
数据模型 对应的数据结构 层次模型 树结构 网状模型 图结构 关系模型 二维表(关系) 面向对象模型 引用类型
- 层次模型
- 层次数据模型是数据库系统中最早出现的数据模型,它用树形结构表示各类实体以及实体间的联系。
- 实例
- 层次模型对父子实体集间具有一对多的层次关系的描述非常自然、直观、容易理解。
- 突出问题:
- 在层次模型中具有一定的存取路径,需按路径查看给定记录的值。
- 层次模型比较适合于表示数据记录类型之间的一对多联系,而对于多对多的联系难以直接表示,需进行转换,将其分解成若干个一对多联系。
- 主要优缺点:
- ①数据结构较简单;查询效率高。
- ②提供良好的完整性支持。
- ③不易表示多对多的联系。
- ④数据操作限制多、独立性较差。
- 网状模型
- 网状模型是一个图结构,它是由字段(属性)、记录类型(实体型)和系(set)等对象组成的网状结构的模型。
- 是一个不加任何条件的有向图。
- 实例
- 网状模型是用图结构来表示各类实体集以及实体集间的系。
- 网状模型与层次模型的根本区别是:一个子结点可以有多个父结点;在两个结点之间可以有多种联系。
- 同样,网状模型对于多对多的联系难以直接表示,需进行转换,将其分解成若干个一对多联系。
- 主要优缺点:
- ①较为直接地描述现实世界。
- ②存取效率较高。
- ③结构较复杂、不易使用。
- ④数据独立性较差。
- 关系模型
- 关系就是一张二维表,它由行和列组成。关系模型将数据模型组织成表格的形式,这种表格在数学上称为关系。表中存放数据。在关系模型中实体以及实体之间的联系都用关系也就是二维表来表示。
- 实例
- 主要优缺点:
- 有坚实的理论基础;
- 结构简单、易用;
- 数据独立性及安全性;
- 查询效率较低。
- 面向对象模型
- 它是用面向对象的观点来描述现实世界中的事物(对象)的逻辑结构和对象间的联系等的数据模型。
- 对象:是对现实世界中的事物的高度抽象,每个对象是状态和行为的封装。
- 对象的状态是属性的集合。
- 行为是在该对象上操作方法的集合。
- 不仅可以处理各种复杂多样的数据结构,而且具有数据和行为相结合的特点。
- 优点:
- ①适合处理各种各样的数据类型。
- ②面向对象程序设计与数据库技术相结合。
- ③提高开发效率。
- ④改善数据访问。
- 缺点:
- ①没有准确的定义。
- ②维护困难。
- ③不适合所有的应用。
概念模型向逻辑模型的转换
- E-R图转换为关系模型转换的实质:
- 将实体、实体的属性和实体之间的联系转换为关系模式。
- 实体的转换
- 原则:
- 一个实体对应一个关系模型
- 实体的名称即是关系模型的名称
- 实体的属性就是关系模型的属性
- 实体的码就是关系模型的码
- 注意的问题:
- 属性域的问题。
- 非原子属性的问题
- 联系的转换
- 1:1联系转换
※ 方法一:将1:1联系转换为一个独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系模式的属性,每个实体的码均是该关系模式的码。- 实例:它描述的是实体学生和校园卡之间的联系,这里假设:一个学生只能办理一张校园卡,一张校园卡只能属于一个学生,因此,联系的类型是1:1。转换情况为:
- 实体转换:学生(学号,姓名),校园卡(卡号,余额);
- 联系办卡的转换:办卡(学号,卡号,办卡日期)。
※ 方法二: - 与任意一端对应的关系模式合并。合并时,需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
转换情况为: - 学生(学号,卡号,姓名,办卡日期)
- 校园卡(卡号,学号,余额,办卡日期)
- 1:n联系转换
※ 方法一:转换为一个独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系模式的属性,而关系模式的码为n端实体的码。- 实例:它描述的是实体学生和班级之间的联系,这里假设:一个学生只能在一个班级学习,一个班级包含多个学生。因此,联系的类型是1:n。转换情况为:
- 实体转换:学生(学号,性别,姓名),班级(班号,班名);
- 联系组成的转换:组成(学号,班号)。
※ 方法二:与n端对应的关系模式合并,在该关系模式中加入1端实体的码和联系本身的属性.
转换情况为: - 实体转换:学生(学号,性别,姓名),班级(班号,班名)。
- 联系与学生一端合并,则关系模型学生变为:学生(学号,班号,性别,姓名)。
- m:n联系转换
- m:n联系不能由一个实体的码唯一标识,必须由所关联实体的码共同标识。
- 需要将联系单独转换为一个独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系模式的属性,每个实体的码组成关系模式的码或关系模式的码的一部分。
- 实例:它描述的是实体学生和课程之间的联系,这里假设:一个学生可以选修多门课程,一门课程可以由多个学生选修。因此,联系的类型是m:n。
转换情况为: - 实体转换:学生(学号,性别,姓名)和课程(课程号,课程名);
- 联系选修的转换:选修(学号,课程号,成绩)。
关系模型
- 关系是一个由行和列组成的二维表
关系数据结构
- 关系中基本术语
- 元组
- 元组也称记录,关系表中的每行对应一个元组,组成元组的元素称为分量。数据库中的一个实体或实体之间的一个联系均使用一个元组来表示。
- 属性
- 关系中的每列对应一个域。由于域可以相同,因此为了加以区分,必须给每列一个命名。这个命名就称为属性。N目关系必有n各属性。
- 属性具有型和值两层含义:型是指字段名和属性值域;值是指属性具体的取值。
- 关系中的字段名具有表示列的作用,所以在同一个关系中的字段名(列名)不能相同。一个关系中通常有多个属性,属性用于表示实体的特征。
- 候选码
- 若关系中的某一属性或属性组的值能唯一地标识一个元组,则称该属性或属性组为候选码。
- 主码
- 若一个关系中有多个候选码,则选定其中一个为主码(也可以成为主键、主关键字)
- 例如,假设关系中没有重名的学生,则“姓名”就是该Student关系的主码;若在Student关系中增加学生的“学号”属性,则Student关系的候选码为“姓名”和“学号”两个,应当选择“学号”属性作为主码。当包含两个或更多个的键成为复合码(键).
- 主码不仅可以标识唯一的行,还可以建立与别的表之间的联系。
- 主码的作用:
※ 唯一表示关系的每行。
※ 作为关联表的外键,链接两个表
※ 使用主码值来组织关系的存储
※ 使用主码索引块快速检索数据
- 键的主要类型如下:
- 超键:在一个关系中,能唯一标识元组的属性或属性集称为关系的超键。
- 候选键:如果一个属性集能唯一标识元组,且又不含多余的属性,那么这个属性集称为关系的候选键。
- 主键:如果一个关系中有多个候选键,则选择一个键为关系的主键。用主键可以实现关系定义中,“表中任意两行(元组)不能相同”的约束。
- 全码
- 在最简单的情况下,候选码只包含一个属性;在最极端的情况下,关系模式的所有属性都是这个关系的候选码,称为全码。全码是候选码的特例。
- 主属性和非主属性
- 在关系中,候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。
- 数据库中关系的类型
- 基本关系(通常又称为基本表或基表)–>基本表是实际存在的表,它是实际存储数据的逻辑表示。
- 查询表–>是查询结果表或查询中生成的临时表
- 视图表–>是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
关系操作
- 关系操作的基本内容
- 关系操作包括数据查询、数据维护和数据控制三大功能。
- 数据查询指数据检索、统计、排序、分组以及用户对信息的需求等功能。
- 数据维护指数据添加、删除、修改等数据自身更新的功能。
- 数据控制是为了保证数据的安全性和完整性而采用的数据存取控制及并发控制等功能。
关系的完整性
- 关系模型允许定义3类完整性约束:实体完整性、参照完整性和用户自定义的完整性。
- 实体完整性
- 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。
- 例如,学生关系中,“学生(学号,姓名,性别,专业号,年龄)”中,“学号”为主码,则学号不能取空值。
- 实体完整性规则规定基本关系的主码不能取空值,若主码由多个属性组成,则所有这些属性都不可以取空值。
- 参照完整性
- 设F是基本关系R的一个或一组属性,但不是关系R的主码。如果F与基本关系S的主码Ks相对应,则称F是基本关系的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。
- 注意:主码(主键)与外码(外键)的列名,唯一的要求是它们的值的域必须相同。
- 显然,被参照关系S的主码Ks和参照关系R的外码F必须在同一个(或一组)域上。
- 例子:
学生关系和专业关系表如下,其中主码标红:
学生(学号,姓名,性别,专业号)
专业(专业号,专业名) - 在上面的例子中,学生关系的“专业号”属性与专业关系的主码“专业号”相对应,因此“专业号”属性是学生关系的外码。这里专业关系是被参照关系,学生关系为参照关系。
- 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S有可能是同一关系),则对于R中每个元组在F上的值必须为以下值:
- 取空值(F的每个属性值均为空值)
- 等于S中某个元组的主码值。
- 以上面的例子来说,在学生关系中每个元组的“专业号”属性只能取下面两类值:
※ 空值,表示尚未给该学生分配专业。
※ 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中,即被参照关系“专业”中一定存在一个元组,他的主码值等于该参照关系“学生”中的外码值。
- 用户定义的完整性
- 关系数据库DBMS可以为用户实现如下自定义完整性约束
- 定义域的数据类型和取值范围
- 定义属性的数据类型和取值范围
- 定义属性的默认值
- 定义属性是否允许空值
- 定义属性取值的唯一性
- 定义属性间的数据依赖性。
题目总结
- 实体型是指具有相同属性集合的实体的抽象描述。它定义了一类具有相似特征和行为的实体。例如,在学生信息管理系统中,”学生”可以被视为一个实体型,它描述了所有学生具有的共同属性,如学号、姓名、年龄等。
- 实体型是指具有相同属性集合的实体的抽象描述。它定义了一类具有相似特征和行为的实体。例如,在学生信息管理系统中,”学生”可以被视为一个实体型,它描述了所有学生具有的共同属性,如学号、姓名、年龄等。
- 实体型与实体集之间的关系是型与值。
- 在关系模型中,域(Domain)是指属性(Attribute)可能取值的集合或范围。它定义了属性的数据类型和取值约束。
第二章:信息与数据模型
https://lzyjx.github.io.git/2023/05/29/信息与数据模型/