DBMS-1.1 关系模型

  • 关系数据库基本概念

一.关系

1.关系:关系数据库是由表的集合构成的,因此在关系数据库中,表又称为关系。

2.属性:表的每一列称为一个属性。

(1)一个有n个属性的关系,称为n元关系。

3.元组:表的每一行称为一个元组。

(1)元组的一个属性值称为分量。即分量是一行与一列(元组与属性)的一个交点。

4.关系实质是一张二维表,表格的每一行就是一个元组,每一列就是一个属性

二.关系模式

1.关系模式就是对关系的描述,由关系名+属性集合构成。记作R(A1,A2,...An)。

例如:Student(Id,Name,Age,Dept)。

三.关系实例

1.关系实例是若干个关系元组的集合,可以看作是关系的一个子集,表示特定实例。

四.域

1.就是一个属性的合法取值集合,每个属性都存在一个域。

例如:Student关系的Age属性的域是(>=0)。

五.键

1.超键:如果一个属性或多个属性构成的集合可以唯一地标识不同的元组,则称该属性或该属性集合为超键。

2.候选键:是最小的超键,或者说不含多余属性的超键。即保持超键特性的同时,只要再少一个属性就不再是超键。

(1)例如:Id是可以唯一标识Student关系的元组的属性,则(Id)既是超键也是候选键,但是(Id,Age)只是超键而不是候选键,因为Age并不是关系的唯一标识。

(2)候选键的每个属性称为主属性,不包含在任何候选键的属性称为非主属性。

3.复合键:如果候选键的属性个数在两个及两个以上,则称该候选键为复合键。

4.主键:在定义关系数据库的关系表时,选择一个最合适的候选键作为该关系的主键

5.外键:若关系R1中的一个属性是另一个关系R2中的主键,则在R1中称该属性是参照R2的外键。

6.注意:

(1)上述提到的5种键,只有主键在一张关系表中是唯一的。一张表只能有一个主键,但可以有多个超键、候选键等。

(2)主键是唯一的,但不代表主键只有一个属性,主键也可以是复合键

  • 关系数据库语言

关系数据库语言包含 关系运算(关系代数和关系演算) 和 SQL。

一.关系代数(Relational Algebra)

1.关系代数是一种过程化查询语言,通过描述对关系的运算来表达查询、获取数据。

二.关系演算

1.关系演算是一种非过程化查询语言,通过描述想要获取的数据的信息来获取数据而无需给出运算过程。

三.SQL(Structured Query Language)

1.为了方便用户查询处理关系数据,定义了结构化查询语言SQL来处理了关系数据。

2.SQL是一种非过程化查询语言,但以关系代数作为理论基础。即介于关系代数和关系演算之间,作为用户与关系数据库直接交互的途径。

  • 关系约束

关系约束可以分为 完整性约束 和 其他约束。

一.完整性约束

1.实体完整性约束(主键约束)

(1)关系中每个元组都必须是唯一且可区分的。通过实施主键取值约束实现。

(2)关系的主键必需是非空且唯一的

        若键K是关系R的主键,则K的取值在R中不能重复。

        若键K是关系R的主键且K是复合键,则K的每个属性都不能为空。     

2.参照完整性约束(外键约束)

(1)参照完整性约束用于不同关系实例间的引用情况。例如若实例A被另一个实例B引用,则:

        插入:在B引用A前,A必须要先存在于数据库中。被参照实体先插入

        删除:在删除A前应当先删除B中引用A的实例。被参照实体后删除

3.用户定义完整性约束

(1)用户定义完整性约束指用户根据具体的数据库应用场景,设置的具体约束条件。例如关系Student中,Name属性必需为非空,Age属性必需为非空且大于0。

二.其他约束

1.非空约束(not null):指关系中某一属性的取值不能为空值。

2.唯一约束(unique):指关系中某一属性的取值不能重复。

(1)主键约束和唯一约束都用于保证属性的唯一性。

(2)主键约束保证主键包含的属性必须是唯一且非空;唯一约束保证属性必须是唯一但可以为空

(3)主键约束只能作用于一个候选键;唯一约束可以作用于任意属性

3.自增长约束(auto_increment):指关系中某一属性取值自增长。

4.默认值约束(default):指关系中某一属性的取值为默认值。

5.检查约束(check):指关系中某一属性的取值必须满足一个指定条件的约束。

三.完整性约束与其他约束的理解

1.完整性约束偏向于规定关系的设计范式,而其他约束则偏向于对完整性约束范式的具体实现。

2.例如非空约束+唯一约束可用于实现主键约束,而其他约束中的每一种都可以用于用户实现用户定义完整性约束。

3.因此主键约束和唯一约束虽然在定义上相似,但从作用上来讲两者完全在不同的方向上。

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

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

相关文章

awk用法

文章目录 一、awk工具awk工作原理AWK程序的结构awk内置变量 二、案例1.基础案列2.BEGIN END 运算3.数值与字符串的比较4.awk高级用法5. awk if语句6.BEGIN END 流程7.AWK 数组8.awk 循环 一、awk工具 awk工作原理 当读到第一行时,匹配条件,然后执行指定…

Mojo模型的端到端加密:数据安全的终极防线

Mojo模型的端到端加密:数据安全的终极防线 在数字化时代,数据安全已成为企业和个人最为关注的问题之一。Mojo模型,作为一个先进的数据处理框架,其端到端加密(E2EE)功能为数据传输提供了坚不可摧的安全保障…

【C++11】C++11新纪元:深入探索右值引用与移动语义

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:位图与布隆过滤器 🌹🌹期待您的关注 🌹🌹 ❀C11 📒1. C11简介…

【Qt】修改窗口的标题和图标

以下操作仅对顶层 widget(独⽴窗口),有效。 修改窗口的标题 一.windowTitle属性 1.概念 是一种在用户界面中显示窗口的标题的属性。它可以用来设置窗口的标题栏文本。 2.API API说明windowTitle()获取到控件的窗⼝标题.setWindowTitle(const QString& title)设置控件的…

10 BERT

目录 1 综述 1.1 BERT的核心思想 1.2 BERT的关键技术:预训练阶段 1.3 微调阶段 2 BERT的架构 2.1 输入处理 3. 特征选择/学习模块 BERT 的自注意力过程 4. 预训练任务:同时进行 4.1 Next Sentence Prediction (NSP) 4.2 Masked Language Model…

基于微信小程序+SpringBoot+Vue的网络安全科普系统(带1w+文档)

基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 优质的网络安全科普系统不仅可以单纯的满足工作人员管理的日常工作需求,还可以满足用户的需求。可以降低工作人员的工作压力,提高效…

rust 初探 -- 常用的集合

rust 初探 – 常用的集合 Vector 存储在堆内存上的数据&#xff0c;运行时可以动态变大或者变小。 Vec 特性&#xff1a; 由标准库提供&#xff0c;可以存储多个相同类型的值&#xff0c;并且值在内存中连续存放 Vector 的创建 fn main() {// Vec::new()let v: Vec<i32…

Mojo模型的自动调参:深度学习优化的新境界

Mojo模型的自动调参&#xff1a;深度学习优化的新境界 深度学习模型的参数调优是提高模型性能的关键步骤之一&#xff0c;但同时也是一个耗时且复杂的过程。Mojo模型作为一个先进的深度学习框架&#xff0c;其设计理念包含了自动化调参的概念&#xff0c;以简化模型训练流程并…

2024.7.29 作业

1> 写一个日志文件&#xff0c;将程序启动后&#xff0c;每一秒的时间写入到文件中 #include <myhead.h> int main(int argc,const char *argv[]) {FILE *fp NULL;if((fpfopen("./log.txt","r"))NULL) {perror("open error1");return…

解决 Git 访问 GitHub 时的 SSL 错误

引言 在使用 Git 进行版本控制时&#xff0c;我们可能会遇到各种网络相关的错误。其中一种常见的错误是 SSL 连接问题&#xff0c;这会导致 Git 无法访问远程仓库。本文将介绍一个具体的错误 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0&#xff0c;以及如何通过禁用 SSL 证…

Python数值计算(1)

准备总结一下通过Python进行数值计算的环境&#xff0c;先说一下数值计算的基本语法和库。 1.基本运算 Python中提供基本运算符&#xff0c;常见的加减乘除&#xff0c;唯一需要注意的是除法&#xff0c;整数除法和浮点数除法不一样。 一般除法/&#xff0c;无论参与运算的数…

【嵌入式英语教程--3】C语言中的基本数据类型

C语言中的基本数据类型 英文原文 In the C programming language, basic data types form the building blocks of any program. These include int, float, char, and bool. The int type is used for integer values, float for floating-point numbers, char for single c…

相机拍摄如何正确曝光

不同场景下的曝光思路 数码时代&#xff0c;我们并不需要准确曝光&#xff0c;我们只需要用单张或者多张照片&#xff0c;记录下场景的全部亮度信息直方图可以辅助我们确认&#xff0c;是否完整记录下了场景的亮度信息正常光比环境&#xff0c;提倡“向右曝光”。大光比环境&a…

通信系统的均衡技术

1、摘要 在通信系统中&#xff0c;信号从发送端发出&#xff0c;经过信道&#xff0c;到达接收端&#xff0c;而在传输的过程中&#xff0c;信号会发生失真&#xff0c;产生失真的原因有很多&#xff0c;包括阻抗不匹配&#xff0c;干扰等。为了优化信号质量&#xff0c;需要进…

【PyTorch笔记】训练时显存一直增加到 out-of-memory?真相了!

最近用 Pytorch 训模型的过程中&#xff0c;发现总是训练几轮后&#xff0c;出现显存爆炸 out-of-memory 的问题&#xff0c;询问了 ChatGPT、查找了各种文档。。。 在此记录这次 debug 之旅&#xff0c;希望对有类似问题的小伙伴有一点点帮助。 问题描述&#xff1a; 训练过…

mysql的唯一索引和普通索引有什么区别

在MySQL中&#xff0c;唯一索引&#xff08;UNIQUE Index&#xff09;和普通索引&#xff08;普通索引&#xff0c;也称为非唯一索引&#xff09;有一些关键的区别。以下是它们的比较以及性能分析&#xff1a; 唯一索引与普通索引的区别 唯一性&#xff1a; 唯一索引&#xff…

也来聊一聊反复开关空调是否更费电

文章目录 为了制造噱头而刻意开展的毫无实际价值的实验空调制冷的基本原理空调主要耗电部件分析空调主要耗电阶段分析启动阶段&#xff1a;瞬时功率较高&#xff0c;但持续时间较短制冷运行阶段&#xff1a;压缩机持续运行&#xff0c;耗电量最大温度达到设定值后的阶段&#x…

深入探索非线性数据结构:树与图的世界

在数据结构的广阔天地中&#xff0c;非线性结构以其独特的逻辑关系和广泛的应用场景&#xff0c;成为计算机科学领域的重要组成部分。其中&#xff0c;树和图作为两种典型的非线性数据结构&#xff0c;不仅深刻影响了算法的设计与分析&#xff0c;也广泛应用于各种实际问题的解…

基于tkinter的学生信息管理系统之登录界面和主界面菜单设计

目录 一、tkinter的介绍 二、登陆界面的设计 1、登陆界面完整代码 2、部分代码讲解 3、登录的数据模型设计 4、效果展示 三、学生主界面菜单设计 1、学生主界面菜单设计完整代码 2、 部分代码讲解 3、效果展示 四、数据库的模型设计 欢迎大家进来学习和支持&#xff01…