【数据库原理】(5)关系数据库的关系数据结构

关系及相关概念

在关系模型中,无论是实体还是实体之间的联系均由关系(二维表)来表示。

1.域(Domain)

  • 定义:域是一组具有相同数据类型的值的集合。
  • 例子:实数集合、整数集合、英文字母集合等。

2.笛卡儿积(Cartesian Product)

  • 定义:一种数据组合方法,它将多个域的元素组合成所有可能的元组(tuples)。
  • 公式:对于域 D 1 D_1 D1, D 2 D_2 D2,…, D n D_n Dn,其笛卡儿积是 D 1 ∗ D 2 ∗ . . . ∗ D n = { ( d 1 , d 2 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , . . . , n } D_1 * D_2 * ... * D_n=\{(d_1,d_2,...,d_n)|d_i∈D_i,i=1,2,...,n\} D1D2...Dn={(d1,d2,...,dn)diDi,i=1,2,...,n}
  • 应用:例如,书名、作者、出版社的域可以组合成一个二维表,其中每一行是一个元组,表示一本书的信息。

D 1 = 书名集合 B O O K N A M E = { C 语言程序设计、数据结构、数据库技术 } D_1=书名集合 BOOKNAME=\{C 语言程序设计、数据结构、数据库技术\} D1=书名集合BOOKNAME={C语言程序设计、数据结构、数据库技术},
D 2 = 作者集合 A U T H O R = { 王一 , 李二 } D_2=作者集合 AUTHOR=\{王一,李二\} D2=作者集合AUTHOR={王一,李二},
D 3 = 出版社集合 P U B L I S H E R = { 清华大学出版社,天津大学出版社 , 科学出版社 } D_3=出版社集合 PUBLISHER=\{清华大学出版社,天津大学出版社,科学出版社\} D3=出版社集合PUBLISHER={清华大学出版社,天津大学出版社,科学出版社}
D 1 ∗ D 2 ∗ D 3 D_1* D_2*D_3 D1D2D3的笛卡儿积如表所示,共有 18(3*2*3)个元组

![[Pasted image 20240103113822.png]]

3.关系(Relation)

  • 定义:域的笛卡儿积的子集称为关系,用 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn) 表示。
  • 特点:关系也是一个二维表,但它是从笛卡儿积中选取的特定元组集合,根据某些规则或约束。

关系 BAP 的元组是从笛卡儿积中抽取的,但不是任意抽取的,例如元组(C 语言程序设计,王一,科学出版社)就不能成为关系 BAP 的元组,因为它与元组(C 语言程序设计,王一,清华大学出版社)相矛盾。

![[Pasted image 20240103115243.png]]

4.关键字(Key)

  • 定义:关系中的某些属性组,如果能唯一标识一个元组,则称为候选码(Candidate Key)。
  • 主码(Primary Key):从候选码中选定的一个,用于唯一标识元组。
  • 主属性与非码属性:主码的属性称为主属性,不属于任何候选码的属性称为非码属性。

5.关系的约束(Constraints)

  • 规则
    1. 列是同质的(同一域)。
    2. 不同列的属性名不同。
    3. 列的顺序可以任意交换。
    4. 行的顺序可以任意交换。
    5. 关系中不含重复元组。
    6. 分量必须是原子值(不可再分的数据项)。

6.关系的三种类型

  1. 基本关系(Base Relation or Base Table):实际存在的表,存储数据。
  2. 视图表(View Table):由基本表或其他视图表导出的表,是虚拟的,不独立存储数据。
  3. 查询表(Query Table):查询结果对应的表,仅在查询执行时存在。

关系模式

前面已经指出了关系是一个二维表,这种二维表可以存放两类信息,即实体本身的信息和实体间的联系。

1.关系模式的定义

  • 关系模式 是对关系的形式化描述和抽象。在这里,“关系”指的是数据存储的二维表结构,而“模式”则是对这些表的静态、稳定的描述。关系模式定义了表的结构,包括它们的属性(columns)和这些属性的类型(domains)。
  • 形式化地,关系模式可以被表示为一个五元组R(U,D,DOM,F),其中:
    • R 代表关系名。
    • U 是属性组,即表中所有属性的集合。
    • D 是域的集合,指每个属性可能取值的类型。
    • DOM 是属性与域之间的映射关系。
    • F 是属性组上的数据依赖关系集合。

2.关系模式的优点

  • 简单的数据结构:关系模型基于二维表,易于理解和使用。
  • 直接处理多对多关系:与层次或网状模型相比,关系模型能更直接地表示和处理实体间的多对多关系。
  • 一次提供元组集合:能够一次性返回满足特定条件的多个记录。
  • 高数据独立性:用户只需关心数据的逻辑结构,而不必操心物理存储细节。
  • 坚实的理论基础:关系模型建立在集合代数的基础上,提供了坚实的理论支持。

3.关系模式的缺点

  • 查询效率问题:由于关系模型的高级别抽象,复杂查询可能导致效率下降。
  • 实现难度:优化查询和维护数据一致性等任务使得关系数据库管理系统(DBMS)的实现变得复杂。
  • 规范化要求:有效使用关系DBMS需要对关系模型有深入了解,并进行合适的数据库设计。

4.关系系统的六大目标

由 E.F. Codd 提出的这些目标大部分已实现:

  1. 高度的数据独立性:数据的物理存储与逻辑结构分离。
  2. 严格而简明的数据视图:提供清晰的数据表示。
  3. 简化数据库管理员(DBA)工作:通过自动化和优化减少DBA负担。
  4. 建立理论基础:确保数据库设计和操作基于坚实的理论。
  5. 事务管理和文件管理的结合:提高数据处理的效率和可靠性。
  6. 提升基于数据的应用程序设计:操作对象是记录集合,而不仅是单个记录,从而提高编程的抽象级别。

这些目标和优缺点共同描绘了关系模型的理论架构和实践应用的全貌,指明了其在现代数据库管理中的重要性和应用范围。

关系数据库

关系数据库是一个核心概念,在理解这个概念时,可以将其想象为一个由多张表格组成的复杂系统。这里的每张表格都代表了数据库中的不同类型数据和它们之间的关系。以下是对关系数据库中的几个关键概念的简化解释:

  1. 关系数据库模式(Schema):这可以被看作是关系数据库的蓝图或结构。它包括了定义数据库的所有元素,比如不同类型的数据(称为域),以及这些数据如何组织成表(称为关系模式)。这个模式是对数据库的全面描述,包括了数据应该如何存储、关联以及管理。

  2. 关系数据库的值(Instance):这是关系数据库在特定时间点的实际内容。它由多个关系组成,每个关系都是一个表格,包含了特定类型的数据记录。

  3. 表(Table):在关系数据库中,表是逻辑上的结构,而不是物理上的。用户看到的数据表实际上是对物理存储(如硬盘上的文件)的抽象表示。数据库系统在背后处理所有复杂的存储细节,比如数据是如何在硬盘上存储的,它们的存取方式等。

  4. 术语对应关系

    • 关系 ↔️ 表:数据库中的“关系”就是用户看到的数据表。
    • 元组 ↔️ 记录:表中的每一行,代表一个“元组”,在日常用语中,我们称之为记录或条目。
    • 属性 ↔️ 字段:表中的每一列称为“属性”,在常规用语中我们称其为字段,代表记录的一个特定特征或信息。
    • 关系模式 ↔️ 数据库:整个数据库的结构和设计称为“关系模式”。

通过这种方式,关系数据库使数据管理变得更加有序和易于操作,同时也保证了数据的完整性和一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/602197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5改进 | 卷积篇 | SAConv轻量化的可切换空洞卷积(附修改后的C3+Bottleneck)

一、本文介绍 本文给大家带来的改进机制是可切换的空洞卷积(Switchable Atrous Convolution, SAC)是一种创新的卷积网络机制,专为增强物体检测和分割任务中的特征提取而设计。SAC的核心思想是在相同的输入特征上应用不同的空洞率进行卷积,并通过特别设计的开关函数来融合这…

java基础之Java8新特性-Stream(流)

简介 流(Stream)是 Java 8 引入的一种处理集合数据的抽象概念,它提供了一种更简洁、更灵活的方式来操作和处理集合数据。流可以看作是一系列元素的管道,可以对这些元素进行筛选、转换、排序、归约等操作,实现各种数据…

【人工智能】深入了解人工智能的核心算法与应用实践

人工智能 学习AI要看的第一本书人工智能应当以人为本人工智能(第3版)通晓六点,明白人工智能是怎么回事基本概念和历史基础知识基于知识的系统高级专题现在和未来安全和编程 人工智能已经是基础学科 学习AI要看的第一本书 人工智能知识对于当…

Unix操作系统的前世今生

Unix是一种多用户、多任务操作系统,最初由AT&T贝尔实验室的肯汤普逊(Ken Thompson)和丹尼斯里奇(Dennis Ritchie)等人开发于上世纪70年代初。它被设计成一种通用的操作系统,支持跨多种硬件平台&#xf…

C++入门(详细解读,建议收藏)

🚩C是什么?🚩⛲🌟⚡🥦💬 C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危…

ssm基于Java Web的怀旧唱片售卖系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装怀旧唱片售卖系统软件来发挥其高效地信息处理的作用&#x…

使用FinalShell连接Linux系统

1.为什么要使用FinalShell连接Linux系统? 如果直接使用VMware上的Linux系统会有很多不方便: 内容的复制粘贴跨越VMware不方便文件的上传、下载跨越VMware不方便 也就是和Linux系统的各类交互,跨越VMware不方便 2.FinalShell下载 FinalSh…

RH850P1X芯片学习笔记-A/D Converter (ADCF)

文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…

年终总结——平凡又不平凡的2023

前言 总结不知道该如何写起,也不知该如何建立这一篇文章的大致框架,只知道我的2023大概也就分成两大块罢了。说起2023一整年,只能用平凡而又不平凡来形容,平凡在我依旧没有什么太突出的技术点,专业水平也一直处于龟速…

RFID传感器|识读器CNS-RFID-01/1S在AGV小车|搬运机器人领域的安装与配置方法

AGV 在运行时候需要根据预设地标点来执行指令,在需要 AGV 在路径线上位置执行某个指令时候,则需要在这个点设置 命令地标点,AGV 通过读取不同地标点编号信息,来执行规定的指令。读取地标点设备为寻址传感器,目前&#…

【C语言:可变参数列表】

文章目录 1.什么是可变参数列表2.可变参数列表的分析与使用2.1使用2.2分析原理2.3分析原码 1.什么是可变参数列表 对于一般的函数而言,参数列表都是固定的,而且各个参数之间用逗号进行分开。这种函数在调用的时候,必须严格按照参数列表中参数…

【Vue3+React18+TS4】1-1 : 课程介绍与学习指南

本书目录:点击进入 一、为什么做这样一门课程? 二、本门课的亮点有哪些? 2.1、轻松驾驭 2.2、体系系统 2.3、高效快捷 2.4、融合贯通 三、课程内容包括哪些? 四、项目实战 《在线考勤系统》 五、课适合哪些同学? 一、为什么做这样一门课程? 近十年内前端…

git使用(完整流程)

1. 新建仓库 1.右击 git bash 后 输入 git init (仓库为:当前目录) git init name (仓库为:name文件夹) git clone https://github.com/Winnie996/calculate.git //https2.工作区域 工作目录 3. 添加 提交 git add . //工作区添加至暂存区 git commit -m "注释内容&q…

Android14之Selinux解决neverallow报错(一百七十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Kafka消息阻塞:拯救面试的八大终极解决方案!

大家好,我是小米,一个对技术充满热情的90后程序员。最近在准备社招面试的过程中,遇到了一个超级有挑战性的问题:“Kafka消息阻塞怎么解决?”今天,我就来和大家一起深入剖析这个问题,分享我在解决…

kubernetes(k8s)集群常用指令

基础控制指令 # 查看对应资源: 状态 $ kubectl get <SOURCE_NAME> -n <NAMESPACE> -o wide 查看默认命名空间的pod [rootk8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 3h53m查看所有pod [roo…

Vue3-36-路由-路由的元数据信息 meta

什么是 meta 简单的理解&#xff0c;meta 就是路由对象 的一个属性对象&#xff0c; 可以 通过这个 属性给 路由对象添加 一些必要的属性值&#xff0c; 在使用路由对象时可以获取到这个属性型对象&#xff0c;从而进行一些其他的逻辑判断。 meta 这个非常的简单&#xff0c;就…

深入了解ReadDirectoryChangesW并应用其监控文件目录

简介 监视指定目录的更改&#xff0c;并将有关更改的信息打印到控制台&#xff0c;该功能的实现不仅可以在内核层&#xff0c;在应用层同样可以。程序中使用 ReadDirectoryChangesW 函数来监视目录中的更改&#xff0c;并使用 FILE_NOTIFY_INFORMATION 结构来获取有关更改的信息…

BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【1】

预训练模型:A pre-trained model is a saved network that was previously trained on a large dataset, typically on a large-scale image-classification task. You either use the pretrained model as is or use transfer learning to customize this model to a given t…

Python中的装饰器

顾名思义&#xff0c;函数装饰器就是对这个函数进行了装饰&#xff0c;比如在函数的前后进行日志打印等。在Python中&#xff0c;装饰器是一种特殊的语法&#xff0c;用于简化函数或方法的定义和调用。装饰器允许你在不修改原始函数代码的情况下&#xff0c;通过在其上应用装饰…