4、数据模型(2)

前言:文章内容来自教材知识点梳理

关系模型
1. 关系模型中,数据的逻辑结构是一张二维表。
2. 主要术语

        1)关系:一个关系对应通常所说的一张二维表。

        2)元组:表中的一行称为一个元组,许多系统中把元组称为记录。

        3)属性:表中的一列称为一个属性,同一个表中的属性有不同的属性名。

        4)码:表中的某个属性或属性组,它们的值可以唯一地确定一个元组,且属性组中不含多余的属性。也就是说,其中某些属性可能是多余的,即使去掉它们,剩余的属性仍然足以唯一标识元组。(学号和姓名,姓名就是多余的,仅凭学号就可以唯一标识了。)

        5)域:属性的取值范围。

        6)分量:元组中的一个属性值称为分量。

        7)关系模式:关系的型称为关系模式,关系模式是对关系的描述。

3. 关系模型的表述方法

        关系模型中的数据全部用关系表示。在关系模型中,实体集及实体之间的联系也都是用关系来表示的。

4. 关系操作和关系的完整性约束条件

        关系中的数据操作是集合操作,操作的数据都是若干元组的集合,而不是单记录的操作方式。——关系操作符如并、差、交、笛卡尔积等,它们都遵循集合的基本定律,比如结合律、交换律和分配律,并且处理的是整个集合的变换,而不是单独处理每个元组。当进行查询或者更新操作时,即使目标是一部分特定数据,系统也是基于SQL语句描述的条件一次性处理符合条件的所有元组,而不是逐条查找并单独处理。

关系操作是数据库管理系统中对关系型数据库进行查询、更新等操作的方式,主要包括以下几种:

①选择:从表中选择满足某种条件的记录子集。

②投影:从表中选择若干字段列组成新的关系。

③连接:将两个或多个具有公共属性的关系连接起来生成一个新的关系。

④并:合并两个表中所有不同的元组(去除重复)。

⑤差:返回在第一个表但不在第二个表中的元组。

⑥交:返回同时出现在两个表中的元组。

⑦笛卡尔积:将两个表的所有行两两配对生成新的关系。

        关系操作语言都是高度非过程的语言,使得用户对关系的操作变得容易,提高了系统效率。

        由于关系模型把存取路径向用户隐蔽起来,使得数据的独立性大大地提高了。

        关系的完整性约束条件是用来保证数据库中数据正确性、有效性和一致性的规则,主要分为三大类:

  1. 实体完整性:规定主键(Primary Key)不能取空值(NULL),确保每个实体或行都是可唯一标识的。

  2. 域完整性:也叫用户定义的完整性,限制属性(字段)的取值范围,如设置某一列的数据类型、长度、是否允许为空等约束。

  3. 参照完整性:用于维护两个表之间引用关系的完整性和一致性。如果一个表中的外键引用了另一个表的主键,那么参照完整性要求:① 外键的值要么是另一个表中存在的主键值,要么是NULL(如果允许外键为空)② 当被引用的主键记录被删除或修改时,相关联的外键记录应随之做出相应处理(如级联删除、级联更新等)。

5. 关系模型的存储结构——关系以文件形式存储
6. 层次模型与网状模型比较、关系模型与非关系模型比较。

        层次模型与网状模型比较

层次模型  优点:数据模型本身比较简单、结构清晰;系统性能优于关系模型和网状模型;能够提供良好的完整性支持  缺点:在表示非层次性的联系时,只能通过冗余数据(易产生不一致性)或创建非自然的数据组织(引入虚拟结点)来解决;对插入和删除操作的限制比较多;查询子女结点必须通过双亲结点;由于结构严密,层次命令趋于程序化。

网状模型  优点:能够更直接地描述现实世界,一个结点可以有多个双亲,允许复合链,具有良好的性能,存取效率比较高。缺点:模型复杂度增加,数据的插入、删除和修改操作相比层次模型更为复杂,用户接口和应用程序设计也相对复杂,需要管理更多的指针来维护数据间的关联。

        关系模型与非关系模型比较

与非关系模型相比,关系模型具有以下特点:

关系模型建立在严格的数学基础上

关系模型的概念单一,容易理解

关系模型的存取路径对用户隐蔽

关系模型中的数据联系是靠数据冗余实现的

面向对象数据模型(Object-Oriented Data Model, OO模型)

先了解几个概念。

1. 对象和对象标识

        现实世界的任一实体都被统一地模型化为一个对象。每一个对象有一个唯一的标识,称为对象标识。

        常用的对象标识有:值标识、名标识、内标识

2. 封装

        每一个对象是其状态与行为的封装,其中状态是该对象一系列属性值的集合,而行为是在对象状态上操作的集合。对象的通信只能通过消息,这也是OO模型的主要特征之一。

        (1)封装可以提高数据独立性; (2)封装可以提高应用程序的可靠性;

        (3)封装会影响到数据查询功能(如果要查询某个对象的属性值,必须用过调用方法,而不能像关系数据库系统那样直接查询内容)

3. 类、类的层次结构、类的继承性

        一个对象是某一类的一个实例,相似对象的集合称为类。

        一个系统中所有类组成的一个有根的有向无环图称为类层次。一组类可形成一个类层次。其中,一个类继承它的所有超类的全部属性、方法和消息。

        如果一个子类只能继承一个超类的特性,称单继承;如果能继承多个,叫多重继承。

4. 滞后联编

        指程序在运行时而非编译时才确定具体要调用的方法或操作的过程。

        这种特性是多态性(Polymorphism)的一种体现,允许子类重写或扩展父类的方法,同时调用同一方法名时,系统依据对象的实际类型而不是声明类型来执行对应的操作。滞后联编解决了操作名相同而内容不同的问题。

5. 消息

        对象是封装的,对象之间的通信是通过消息传递来实现的。即消息从外部传送给对象,存取和调用对象中的属性和方法;在内部执行所要求的操作,操作的结果仍以消息的形式返回。

6. 对象的嵌套

        一个对象可以有另一个对象作为属性,而另一个对象又可以有多个属性,这些属性里有可能有新的对象。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值