现代数据库管理学习笔记五 逻辑数据库设计和关系模型

这篇博客探讨了逻辑数据库设计,重点介绍了关系数据模型的组成部分,包括数据结构、数据操纵和数据完整性。关系数据模型以二维表形式存储数据,强调了主键和外键在维护数据完整性中的作用。此外,还阐述了关系的特性,如原子性、唯一性和无关顺序,并提及了实体完整性、参照完整性和动作断言等完整性约束。最后,提到了将E-R图转化为关系模型的规则以及规范化在消除异常中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑数据库设计:是将概念数据模型转化为逻辑数据模型的过程。最终的数据库必须满足用户对于数据共享、灵活性和易于访问等方面的需求。

关系数据模型

  • 关系数据模型采用表的方式来存储数据。
  • 关系数据模型包含三个组成部分:

    1)数据结构:数据以具有行和列的表的方式组织。

    2)数据操纵:利用功能强大的操纵(使用SQL语言)来操纵存储在关系中的数据。

    3)数据完整性:在操纵数据时,包含相应的机制来定义业务规则以维护数据的完整性。

关系数据结构

  • 关系:是一个已命名的二维数据表。每个关系(表)包含一组已命名的列,以及任意数目的未命名的行。关系中的每一行对应一条记录,记录中包含一个实体的数据(属性)值。
  • 关系键:用户必须能够根据行中的数据值来存储或检索关系中的一行数据。为实现这个目的,每个关系必须有一个主键。
  • 主键:是可以惟一标识关系中每一行的属性(或属性集)。我们通常在作为主键的属性名加下划线。在E-R模型中作为实体标识符的属性(或属性集)在表示该实体的关系中也可能是主键的组成部分。(但是也有一些例外:比如关联实体不一定有标识,弱实体的标识符只是弱实体主键的一部分。)此外,一个实体中可以作为关联关系主键的属性可能有多个。
  • 复合键:是由多个属性构成的主键。
  • 外键:是一个数据库中关系的属性(可能是复合属性),它是该数据库的另一个关系的主键。外键用来实现两个表或关系之间的联系。外键通常用虚线下划线来表示。

关系的性质

关系是二维的数据表,但并不是所有的表都是关系,关系具有一些非关系表所不具有的性质。如下:

1)数据库内的每个关系(表)的名字是惟一的

2)任意行的任一列是原子的(单值)。在关系内,不允许有多值属性

3)每一行是惟一的,同一关系内的任意两行都不能相同

4)表中的每个属性(列)的名字是惟一的

5)关系中列的顺序(从左到右)是无关的。交换关系的任意两列不影响关系的意义和使用

6)关系中的行的顺序(从上到下)是无关的。和列的情况一样,关系中的行也可以交换或是以任意顺序存储

 

完整性约束

关系数据模型包含有多种类型的约束(业务规则),它们用于维护数据库内数据的正确性和完整性。最主要的几种完整性约束包括域约束实体完整性参照完整性动作断言

  • 域约束:关系中某一列的所有值都必须来源于同一个域。一个域定义通常包含以下部分:域名、含义、数据类型、大小(或长度)、允许的取值或允许的范围。
  • 实体完整性:确保每个关系都有一个主键,而且主键的所有数据值都是有效的。特别是,它能保证每个主键的属性值都非空。
  • 参照完整性:是两个关系的行之间维持一致性的规则。要求如果一个关系中有外键,则每个外键的值必须与另一个关系的主键取值匹配,或者必须为null。
  • 动作断言

良构关系:直观的说,良构关系应该有最小的冗余,并可以让用户在表中插入、修改和删除表中的行,且不出现错误和不一致的情况。如果不是良构关系,则关系中数据的冗余可能导致错误或不一致的情况(称为异常)。有三种可能的异常:插入异常、删除异常和修改异常。

 

将EER图转化为关系:通过使用一组定义好的规则,可以方便地将E-R图转化(映射)为关系。具体映射步骤见书本。

 

规范化

定义:将含有异常的关系分解为更小的,良构的关系的过程。

步骤:分为几个阶段来实现和理解,每一个阶段都对应有一个范式。

范式:根据函数依赖(或是属性间联系)对关系应用某些简单准则后所得到的关系的状态。

函数依赖:存在于两个属性或两个属性集之间的约束。

候选键:可以惟一标识关系中某一行的属性或属性集。(主键是候选键中的一个)

基本范式:

1)第一范式:不含多值属性。

2)第二范式:满足第一范式,且任意非键属性都完全函数依赖于主键。(不是依赖于部分主键)

3)第三范式:满足第二范式,且不含传递依赖。(传递依赖是在两个(或多个)非键属性间的函数依赖)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值