关系数据库:关系模式
文章目录
- 基本概述
- 关系的相关名词术语
- 笛卡儿积与关系
- 关系的类型
- 关系模式
- 总结
基本概述
关系的相关名词术语
- 关系:简单来说,就是一张二维表格。
- 属性(Attribute):也称字段或列,在现实世界中,要描述一个事务常常取若干特征来表示。这些特征称为属性。例如学生用学号、姓名、性别、系别、年龄、籍贯等属性来描述。
- 域(Domain):每个属性的取值范围所对应一个值的集合,称为该属性的域。如学号的域是6位整型数,姓名的域是10位字符,性别的域为{男,女}。 一般在关系数据模型中,对域还加了一个限制,所有的域都应是原子数据(at omicdata)。例如,整数、字符串是原子数据,而集合、记录、数组是非原子数据。关系数据模型的这种限制称为第一范式(first normal form,简称1NF)条件。但也有些关系数据模型突破了1NF的限制,称为非INF。
- 元组:关系中的某一行记录。
- 分量:某一条元组在字段上的某个值。
- 目或度(Degree): D 1 × D 2 × . . . × D n D_1\times D_2\times ...\times D_n D1×D2×...×Dn的子集的称或关系模式作在域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn上的关系,表示 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn)。这里的R表示关系的名字,n是关系的目或度。
- 候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。
- 主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个为主码。
- 主属性(Prime attribute):包含在任何候选码中的属性称主属性。不包含在任何候选码中的属性称为非主属性(NonPrime attribute)。
- 外码(Foreign key):如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。如客户与贷款之间的借贷联系c-l(c-id,Loan-no),属性c-id是客户关系中的码,所以 c-id是外码,属性loan-no是贷款关系中的码,所以loan-no也是外码。
- 全码(All key):关系模型的所有属性组是这个关系模式的候选码,称为全码。如R(T,C,S),属性T表示教师,属性C表示课程,属性S表示学生。
属性或字段加下划线表示该属性是主码,元组就是记录。
笛卡儿积与关系
定义1: D 1 , D 2 , D 3 , . . . , D n D_1,D_2,D_3,...,D_n D1,D2,D3,...,Dn为任意集合,定义 D 1 , D 2 , D 3 , . . . , D n D_1,D_2,D_3,...,D_n D1,D2,D3,...,Dn的笛卡尔积为
D 1 × D 2 × D 3 × . . . × D n = { ( d 1 , d 2 , d 3 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , 3 , . . . , n } D_1\times D_2\times D_3\times ...\times D_n=\{(d_1,d_2,d_3,...,d_n)|d_i\in D_i,i=1,2,3,...,n\} D1×D2×D3×...×Dn={(d1,d2,d3,...,dn)∣di∈Di,i=1,2,3,...,n}
其中集合的每个元素 ( d 1 , d 2 , d 3 , . . . , d n ) (d_1,d_2,d_3,...,d_n) (d1,d2,d3,...,dn)叫做一个n元组(n-tuple,即n个属性的元组
),元素的每一个值 d i d_i di叫做元组一个分量。若 D i ( i = 1 , 2 , 3 , . . . , n ) 为有限集,其基数( C a r d i n a l n u m b e r , 元组的个数为 D_i(i=1,2,3,...,n)为有限集,其基数(Cardinal number,元组的个数为 Di(i=1,2,3,...,n)为有限集,其基数(Cardinalnumber,元组的个数为m_i(i=1,2,3,…,n) ,则 ,则 ,则D_1\times D_2\times D_3\times …\times D_n$的基数M为:
M = ∏ i = 1 n m i M=\prod\limits_{i=1}^{n}{m_i} M=i=1∏nmi
定义2: D 1 × D 2 × . . . × D n D_1\times D_2\times ...\times D_n D1×D2×...×Dn的子集的称作在域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn上的关系,表示 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn),称为关系R为n元关系。
元数(属性的个数),基数(记录的条数)。
示例:若 D 1 = 0 , 1 , D 2 = a , b , D 3 = c , d D_1={0,1},D_2={a,b},D_3={c,d} D1=0,1,D2=a,b,D3=c,d,求解 D 1 × D 2 × D 3 D_1\times D_2\times D_3 D1×D2×D3,以及 D 1 × D 2 × D 3 D_1\times D_2\times D_3 D1×D2×D3的基数。
分析:根据定义1可知 D 1 × D 2 × D 3 D_1\times D_2\times D_3 D1×D2×D3中的每一个元素是一个三元组,其结果为:
D 1 × D 2 × D 3 = { ( 0 , a , c ) , ( 0 , a , d ) , ( 0 , b , c ) , ( 0 , b , d ) , ( 1 , a , c ) , ( 1 , a , d ) , ( 1 , b , c ) , ( 1 , b , d ) } D_1\times D_2\times D_3= \{(0,a,c),(0,a,d),(0,b,c),(0,b,d),(1,a,c),(1,a,d),(1,b,c),(1,b,d) \} D1×D2×D3={(0,a,c),(0,a,d),(0,b,c),(0,b,d),(1,a,c),(1,a,d),(1,b,c),(1,b,d)}
由于 D 1 D_1 D1的基数 m 1 = 2 m_1=2 m1=2、 D 2 D_2 D2的基数 m 2 = 2 m_2=2 m2=2、 D 3 D_3 D3的基数 m 3 = 2 m_3=2 m3=2,所以 D 1 × D 2 × D 3 D_1\times D_2\times D_3 D1×D2×D3的基数 M = m 1 × m 2 × m 3 = 8 M=m_1\times m_2\times m_3=8 M=m1×m2×m3=8,也可以用二维表来表示如下:
关系的类型
关系的三种类型如下:
- 基本关系(通常又称为基本表或基表):实际存在的表,它是实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:是由基本表或其他视图表导出的表。由于它本身不独立存储在数据库中,数据库中只存放它的定义,所以常称为虚表。
关系模式
关系的描述称为关系模式(Relation Schema),可以表示为 R ( U , D , d o m , F ) R(U,D,dom,F) R(U,D,dom,F)。其中,R表示关系名,U是组成该关系的属性名集合,D是属性的域,dom是属性向域的影响集合常常直接说明属性的类型、长度,F为属性间数据的依赖关系集合。也可以简记为 R ( U ) R(U) R(U)或 R ( A 1 , A 2 , A 3 , . . . , A n ) R(A_1,A_2,A_3,...,A_n) R(A1,A2,A3,...,An), A 1 , A 2 , A 3 , . . . , A n A_1,A_2,A_3,...,A_n A1,A2,A3,...,An为属性名或域名,通常在关系模式主属性上加下划线表示该属性为主码属性。
完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。分类如下:
- 实体完整性(Entity Integrity):规定基本关系R的主属性A不能取空值。
- 参照完整性(Referential Integrity):也称引用完整性,关系与关系间的引用。属性上加
实下画线,通常表示该属性为主码属性
。属性上加虚下画线,通常表示该属性为外码属性
。值必须为外码中某个元组的主码值或取空值。 - 用户定义完整性(User defined Integrity):针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,有应用的环境决定。例如,银行的用户账户规定必须大于等于100000,小于999999。
总结
关系数据库基于关系模型,该模型采用表的形式来组织和存储数据。关系模式是定义这些表格结构的蓝图,包括表的名称、表中列的名称和数据类型,以及表之间的关联关系。关系数据库的核心概念包括表、关键字(主键和外键)、数据约束(如唯一性、非空和检查约束),以及规范化过程,旨在减少数据冗余和提高数据完整性。
在关系数据库中,数据操作通常遵循ACID原则,确保事务的原子性、一致性、隔离性和持久性。此外,数据库设计者可以利用索引来提升查询性能,使用视图来简化数据操作和提供安全措施,以及通过存储过程和触发器来自动化复杂的数据处理任务。
总的来说,关系模式是关系数据库设计的基石,它支持高效的数据存储、检索和管理。通过精确的关系模式设计,我们可以构建出既灵活又强大的数据库系统,满足各种商业和技术领域的需求。
相关文章:

关系数据库:关系模式
文章目录 基本概述关系的相关名词术语笛卡儿积与关系关系的类型 关系模式总结 基本概述 关系的相关名词术语 关系:简单来说,就是一张二维表格。属性(Attribute):也称字段或列,在现实世界中,要描述一个事务常常取若干…...

医学图像处理质量的评价方法
评判处理后医学图像的质量是确保图像处理技术有效性和可靠性的关键。以下是一些常用的图像质量评估方法和指标: 1. 主观评估 主观评估是由专业人员(如放射科医生)通过视觉检查对图像质量进行评分。常用的主观评估方法包括: 视觉…...

Ehcache Java 缓存框架
详解 下图是 Ehcache 在应用程序中的位置: Ecache 是一个广泛使用的 Java 缓存框架,能够有效提升应用性能,并减少与后端数据库的交互次数。它采用了一系列高级缓存策略,包括内存缓存、磁盘缓存、分布式缓存等,并提供了…...

详解Spring IoCDI(二)
目录 承接上文:详解Spring IoC&DI (一) 1.IoC详解 1.1方法注解Bean 1.2方法注解要配合类注解使用 1.3定义多个对象 1.4重命名Bean 1.5扫描路径 2.DI详解 2.1DI与IoC的关系 2.2属性注入 2.3构造方法注入 2.4Setter注入 2.5 三…...

说明白计算机网络之TCP的流量控制与拥塞控制之慢开始算法与拥塞避免算法
TCP的流量控制 利用滑动窗口实现流量控制 设A向B发送数据,连接建立时候,B告诉A自身的接收窗口大小,A的发送窗口大小不能超过接收方B的窗口大小 流量控制:发送方发送速率不要太快,要让接收方来得及接收。窗口大小的单…...

这款信创FTP软件,可实现安全稳定的文件传输
信创,即信息技术应用创新,2018年以来,受“华为、中兴事件”影响,国家将信创产业纳入国家战略,并提出了“28n”发展体系。“8”具体指金融、石油、电力、电信、交通、航空航天、医院、教育等主要行业。目前企业使用比较…...

代码随想录算法训练营第十天|232.用栈实现队列、225. 用队列实现栈
232.用栈实现队列 题目链接:232. 用栈实现队列 文档讲解:代码随想录 状态:写出来 ,但差强人意 思路: 定义两个容器,可以是Stack,也可以是Deque,stackIn相当于临时容器,用来存放元素&…...

STM32 IIC协议
本文代码使用 HAL 库。 文章目录 前言一、什么是IIC协议二、IIC信号三、IIC协议的通讯时序1. 写操作2. 读操作 四、上拉电阻作用总结 前言 从这篇文章开始为大家介绍一些通信协议,包括 UART,SPI,IIC等。 UART串口通讯协议 SPI通信协议 一、…...

Java生成随机数的几种方式
随机数,在一些特殊场景下,是非常常用的。比如一些测试和验证场景、安全加密、随机抽样等都有随机数的‘身影’。 一、 使用java.util.Random类 java.util.Random类提供了更全面的随机数生成功能,包括随机整数、随机浮点数、随机布尔值等。 p…...

【面试】什么是Java虚拟机
目录 1. 说明2. 关键点 1. 说明 1.Java虚拟机(Java Virtual Machine,简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境。2.JVM是Java平台无关性的关键,它允许Java程序在任何支持JVM的硬件和操作系统上运…...

Go 语言的基本构成、要素与编写规范
Go 语言,作为由 Google 开发的现代编程语言,以其简洁、高效和并发编程能力而著称。在构建高性能分布式系统和现代软件开发中,Go 语言正日益受到欢迎。本篇文章将详细探讨 Go 语言程序结构的各个要素,包括函数定义、注释规范、数据…...

从了解到掌握 Spark 计算框架(二)RDD
文章目录 RDD 概述RDD 组成RDD 的作用RDD 算子分类RDD 的创建1.从外部数据源读取2.从已有的集合或数组创建3.从已有的 RDD 进行转换 RDD 常用算子大全转换算子行动算子 RDD 算子综合练习RDD 依赖关系窄依赖宽依赖宽窄依赖算子区分 RDD 血统信息血统信息的作用血统信息的组成代码…...

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)
整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(…...

【git】常用命令
删除 删除本地分支: // 删除本地分支 git branch -d localBranchName 删除远程仓库分支 git push origin --delete <branch_name> 验证远程分支是否删除 git fetch -p //会清理已经删除的远端分支的引用 git branch -r //列出所有远端分支࿰…...

JavaWeb_MySQL数据库
数据库: MySQL数据模型: MySQL是关系型数据库。 SQL: 简介 分类: 数据库设计-DDL 对数据库操作: 表操作: 小练习: 创建下表 SQL代码: create table tb_user (id int primar…...

中国BI步入增长大周期,腾讯云ChatBI加速AI+BI融合
过去十年,大数据技术的快速发展,让数据消费前进一大步,数据价值得到一定程度的挖掘与释放,真正开启了“用数”的大时代。但数据分析繁杂的技术栈、复杂的处理过程以及程式化的交互方式,让“数据消费”的门槛始终降不下…...

揭秘Python:下划线的特殊用法,你绝对想不到!
在Python编程中,下划线(underscore)是一个常见而又强大的工具。它不仅仅是一个普通的字符,而是具有特殊含义和用法的符号。今天,我们就来揭开Python下划线的神秘面纱,探索它的各种妙用。 下划线的基本用法…...

深入探索Java世界中的Jackson魔法:玩转JsonNode
哈喽,大家好,我是木头左! 揭秘Jackson库:JSON处理的瑞士军刀 在Java的世界里,处理JSON数据就像是一场探险。幸运的是,Jackson库就像一把多功能的瑞士军刀,为提供了强大而灵活的工具来解析和操作…...

为什么要使用动态代理IP?
一、什么是动态代理IP? 动态代理IP是指利用代理服务器来转发网络请求,并通过不断更新IP地址来保护访问者的原始IP,从而达到匿名访问、保护隐私和提高访问安全性的目的。动态代理IP在多个领域中都有广泛的应用,能够帮助用户…...

【PB案例学习笔记】-09滚动条使用
写在前面 这是PB案例学习笔记系列文章的第8篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gitee…...

C++中常见的构造函数类别
目录 摘要 默认构造函数(Default Constructor): 带参数的构造函数(Parameterized Constructor): 拷贝构造函数(Copy Constructor): 移动构造函数(Move C…...

万界星空科技MES系统功能介绍
制造执行系统或MES 是一个全面的动态软件系统,用于监视、跟踪、记录和控制从原材料到成品的制造过程。MES在企业资源规划(ERP) 和过程控制系统之间提供了一个功能层,为决策者提供了提高车间效率和优化生产所需的数据。 万界星空科技MES 系统基础功能&am…...

炸裂的开源AI语音生成模型ChatTTS
今天看到GitHub上开源了一个非常厉害的AI语音生成模型ChatTTS,可以生成和人类声音非常接近的语音,而且有语气、语调、可以停顿和发出笑声,再也没有了以前的AI味道 体验地址:https://colab.research.google.com/drive/1MYep5f0-BJ…...

Mac逆向Electron应用
工具库 解压asar文件 第一步 找到应用文件夹位置 打开活动监视器: 搜索相关应用 用命令行打开刚才复制的路径即可 open Applications/XXX.app/Contents/Resources/app第二步 解压打包文件 解压asar文件...

(三)MobaXterm、VSCode、Pycharm ssh连接服务器并使用
背景:根据前两篇文章操作完成后, 手把手教学,一站式安装ubuntu及配置服务器-CSDN博客 手把手教学,一站式教你实现服务器(Ubuntu)Anaconda多用户共享-CSDN博客 课题组成员每人都有自己的帐号了࿰…...

【Linux】初识信号及信号的产生
初始信号 初始信号什么是信号站在应用角度的信号查看Linux系统定义的信号列表 信号的常见处理方式信号的产生通过终端按键产生信号什么是core dump?如何开启core dump?core dump有什么用?为什么默认关闭core dump?设置了core文件大小但是没有产生core文…...

故障诊断 | 基于 KAN、KAN卷积的轴承故障诊断模型
研究背景: 轴承是机械设备中常见的关键部件之一,其工作状态直接影响设备的性能和可靠性。因此,轴承故障的早期诊断对于设备的正常运行和维护具有重要意义。近年来,基于振动信号的轴承故障诊断成为了研究的热点之一。KAN: Kolmogorov-Arnold Network 是一种有效的处理方法。…...

【设计模式】JAVA Design Patterns——Factory Method(虚拟构造器模式)
🔍目的 为创建一个对象定义一个接口,但是让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类 🔍解释 真实世界例子 铁匠生产武器。精灵需要精灵武器,而兽人需要兽人武器。根据客户来召唤正确类型的铁匠。 通俗描述 它为类…...

Spring——依赖项
文章目录 依赖注入基于构造函数的依赖注入基于 Setter 的依赖注入依赖解析过程依赖注入的示例 依赖关系和配置详细信息直接值(原语、字符串等)idref标签References to Other Beans (对其他 Bean的引用)Inner Beans(内部…...

C语言 | Leetcode C语言题解之第119题杨辉三角II
题目: 题解: int* getRow(int rowIndex, int* returnSize) {*returnSize rowIndex 1;int* row malloc(sizeof(int) * (*returnSize));row[0] 1;for (int i 1; i < rowIndex; i) {row[i] 1LL * row[i - 1] * (rowIndex - i 1) / i;}return row…...