数据库关系模型

news2024/9/22 4:02:38

关系模型简述

形象地说,一个关系就是一个table。

关系模型就是处理table的,它由三个部分组成:

  • 描述DB各种数据的基本结构形式;
  • 描述table与table之间所可能发生的各种操作;
  • 描述这些操作所应遵循的约束条件;

关系模型就是研究:table如何描述,有哪些操作,结果是什么,有哪些约束等。

关系模型的三个要素:

  • 基本结构
  • 基本操作
  • 完整性约束:实体完整性、参照完整性和用户自定义的完整性

关系

域:一组值的集合,这组值具有相同的数据类型。

集合中元素的个数称为域的基数

笛卡尔积:

元组中的每一个值叫做一个分量。

关系:一组域的笛卡尔积的子集。

关系模式与关系:

  • 同一关系模式下,可有很多的关系;
  • 关系模式是关系的结构,关系是关系模式在某一时刻的数据;
  • 关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的;

关系的特性:

  • 列是同质:即每一列中的分量来自同一域,是同一类型的数据;
  • 不同的列可来自同一个域,称其中的每一列为一个属性;
  • 关系的任意两个元组不能完全相同;
  • 属性不可再分特性:关系第一范式;

候选码/候选键

关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,他就不具有这一性质了,这样的属性组称作候选码

主码/主键

当有多个候选码时,可以选定一个作为主码。

主属性:包含在任何一个候选码中的属性被称作主属性;

非主属性:而其他属性被称作非主属性。

所有属性构成这个关系的候选码,称为全码

外码/外键

关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码。

关系模型的完整性

实体完整性:关系的主码中的属性值不能为空值(不知道或无意义的值);

参照完整性:如果关系R1的某个元组t1参照了关系R2的某个元组t2,则t2必须存在;

  • 空值,表示尚未分配;
  • 非空值则必须时相应元组中存在的值;

用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件。

关系代数

关系代数基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、选择、投影更名等基本操作,以及交、连接关系除等扩展操作,是一种集合思维的操作语言。

关系代数操作以一个或多个关系为输入,结果是一个新的关系。

集合操作

纯关系操作

 

并相容性

某些关系代数操作,如并、差、交等,需满足并相容性。

参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性。

  • 关系R与关系S的属性数目必须相同;
  • 属性的域也相同;

笛卡尔积

选择:给定一个关系R,同时给定一个选择的条件,选择运算结果也是一个关系。

投影:从关系R中选出包含在A中的列构成。

θ-连接:给定关系R和关系S,R域S的θ连接运算结果也是一个关系,它由关系R域关系S的笛卡尔积中,选取属性A域S中属性B这几件满足θ条件的元组构成。

自然连接:给定关系R和关系S,R与S的自然连接运算结果也是一个关系,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成。

:经常用于求解查询所有的/全部的问题

外连接:两个关系R与S连接时,如果找不到相匹配的元组,将该元组和全为空值的元组形成连接,放在结果关系中。

关系演算

关系元组演算

关系演算是以梳理逻辑中的谓词演算为基础的,关系演算是描述关系运算的另一种思维方式。

根据谓词变量的不同,可分为关系元组演算和关系域演算:

  • 关系元组演算是以元组变量作为谓词变量的基本对象;
  • 关系域演算是以域变量作为谓词变量的基本对象;

关系元组演算公式的基本形式:{ t | P(t) }

上式表示:所有使谓词P为真的元组t的集合;

  • t是元组变量
  • t∈r表示元组t在关系r中
  • t[A]表示元组t的分量,即t在属性A上的值
  • P是与谓词逻辑相似的公式,P(t)表示以元组t为变量的公式

这个公式可以递归地构造。

用元组演算实现关系代数

关系域演算

关系域演算公式的基本形式:{ <x1, x2, ..., xn> | P(x1, x2, ..., xn) }

域演算语言QBE

不想写了

 关系运算的安全性

  • 关系代数是一种集合运算,是安全的:集合本身是有限的,有限元素集合的有限次运算依旧是有限的;
  • 关系演算不一定是安全的;
  • 需要对关系演算施加约束条件,即任何公式都在一个集合范围内操作,而不是无限范围内操作,才能保证其安全性;

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

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

相关文章

你是真的“C”——详解指针知识

你是真的“C”——详解指针知识&#x1f60e;前言&#x1f64c;1、 指针是什么&#xff1f;&#x1f64c;2、指针和指针类型&#x1f64c;2 、1指针-整数2 、 2指针的解引用3、 野指针&#x1f64c;3、 1野指针成因3、 2如何规避野指针4、指针运算&#x1f64c;4、1 指针-整数4…

Flutter WebView 性能优化,让 h5 像原生页面一样优秀

大家好&#xff0c;我是 17。 WebView 的文章分两篇 在 Flutter 中使用 webview_flutter 4.0 | js 交互Flutter WebView 性能优化&#xff0c;让 h5 像原生页面一样优秀 本篇和大家一起讨论下性能优化的问题。 WebView 页面的体验上之所以不如原生页面&#xff0c;主要是因…

c#数据结构-有序列表和有序字典

有序列表和有序字典 有序列表和有序字典都是是一个键值对容器&#xff0c;像字典一样。 从习惯和描述推测&#xff0c; 列表控制一个数组有序列表使用比有序字典更少的内存如果一次性添加一堆数据&#xff0c;且这堆数据有序。那么有序列表比有序字典更快 有序列表大概长这样 …

最后一个单词的长度-力扣58-java

一、题目描述给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1&#xff1a;输入&#xff1a;s "Hello World"输出&#x…

聊聊火出圈的ChatGPT

前言 OpenAI 近期发布聊天机器人模型 ChatGPT&#xff0c;迅速火爆各大技术网站&#xff0c;就像一个突然激起的巨浪打破了沉寂已久的水面。它的出现无论是对人工智能的资本圈还是技术圈都感受到了春风回暖&#xff0c;前兔似锦的未来。 尤记得2015年谷歌开源的Tensorflow&am…

2.19、读者-写者问题

有读者和写者两组并发进程&#xff0c;共享一个文件&#xff0c;当两个或两个以上的读进程同时访问共享数据时不会产生副作用&#xff0c; 但若某个写进程和其他进程&#xff08;读进程或写进程&#xff09;同时访问共享数据时则可能导致数据不一致的错误。 因此要求: ①允许…

新专利:苹果笔可充当VR游戏控制器,智能笔与Find My结合将成为趋势

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果获得了一项关于 Apple Pencil 的技术专利。根据专利描述&#xff0c;Apple Pencil 可以和混合现实头显、iPad、Mac 显示器等设备进行交互和操作&#xff0c;可以充当 VR 游戏的控制器。 该专利的…

Three.js 3D建模必备基础

在 three.js 中&#xff0c;可见对象由几何体和材质构成。 我们已经了解了如何创建适用于点和线图元的简单几何图形&#xff0c;并且遇到了各种标准网格几何图形&#xff0c;例如 THREE.CylinderGeometry 和 THREE.IcosahedronGeometry。 在本节中&#xff0c;我们将了解如何从…

【Unity 代码相关】实现脚本之间动态变量传递

这是我在做作品的过程中遇到的问题&#xff0c;大概阐述一下遇到的问题及解决思路。 1 问题阐述 因为是做天空盒&#xff0c;有很多变量需要控制&#xff0c;shader之间又想实现颜色、变量的传递&#xff0c;所以整个项目的所有暴露出来的可调整变量&#xff0c;我都汇总在了…

算法训练营DAY53|392.判断子序列、115.不同的子序列

392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/is-subsequence/ 判断子序列这道题目&#xff0c;和上一期的题解法几乎完全相同&#xff0c;只是递推公式有一点差别&#xff0c;但是要是完全用之前的代码也是可行的。…

模拟信号隔离放大器直流信号转换0-20mA/ 4-20mA/2-10V/0-±5V/0-±10V

概述&#xff1a;导轨安装DIN11 IPO EM系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要电量隔离测控的行业。该模块内部嵌入了一个高效微功率的电源&#xff0c;…

【Linux系统编程】02:文件操作

文件IO 系统调用&#xff08;不带缓冲的IO操作&#xff09;库函数&#xff08;默认带用户缓冲的IO操作&#xff09; 一、非缓冲IO 系统调用&#xff1a;即为不带缓冲的IO 1.打开文件open 2.读取文件read NAMEread - read from a file descriptorSYNOPSIS#include <unist…

Spring Boot HTTP 400排查

背景 前段时间朋友咨询他们公司某个HTTP接口偶现400错误&#xff0c;有没有什么好的分析方法和解决方案&#xff0c;使用的是Spring Cloud体系。最近有时间总结下这个问题的处理过程。 为了分析问题&#xff0c;笔者使用 Spring Boot 3.0.2还原报错场景进行讲解。 问题分析 …

OM | 强化学习 + 约束规划求解组合优化问题

组合优化在航空航天、交通规划以及经济学等众多学科领域中有广泛应用&#xff0c;其目标是在有限集中寻找最优解。然而状态空间过大的问题让目前组合优化变得棘手。在过去的几年中&#xff0c;使用深度强化学习&#xff08;deep reinforcement learning&#xff0c;DRL&#xf…

SharpSCCM:一款利用SCCM实现横向渗透的强大工具

关于SharpSCCM SharpSCCM是一款功能强大的横向渗透和凭证收集工具&#xff0c;该工具主要利用了微软终端配置管理器&#xff08;SCCM&#xff09;来实现其功能&#xff0c;并能够通过访问SCCM管理终端GUI来实现横向渗透和凭证收集。 功能介绍 1、后渗透功能&#xff0c;支持横…

QT入门Input Widgets之QSlider

目录 一、界面布局功能 1、界面位置介绍 2、控件界面基本属性 2.1horizontalSlider界面属性 2.2设置步进 2.3打开或关闭滑块跟踪&#xff08;setTracking&#xff09; 二、属性功能介绍 1、常用信号 2、调用信号 3、鼠标点击QSlider滑块定在点击位置 三、Demo展示 …

2.8、调度算法的评价指标

1、CPU 利用率 由于早期的 CPU 造价极其昂贵&#xff0c; 因此人们会希望让CPU尽可能多地工作\color{red}希望让 \texttt{CPU} 尽可能多地工作希望让CPU尽可能多地工作 CPU利用率\color{red}\texttt{CPU}利用率CPU利用率&#xff1a;指 CPU “忙碌” 的时间占总时间的比例。 利…

动态规划之01背包问题和完全背包问题

01背包的问题描述&#xff1a;&#xff08;内容参考代码随想录&#xff09;有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。问题示例&#…

Echarts 设置折线图拐点的颜色,边框等样式,hover时改变颜色

第014个点击查看专栏目录上一篇文章我们讲到了如何设置拐点大小,图形类型&#xff0c;旋转角度&#xff0c;缩放同比&#xff0c;位置偏移等&#xff0c;这篇文章介绍如何设置拐点的颜色、边框大小颜色等样式。hover轴线时候&#xff0c;拐点的填充颜色改变文章目录示例效果示例…

Zookeeper安装部署

文章目录Zookeeper安装部署Zookeeper安装部署 将Zookeeper安装包解压缩&#xff0c; [rootlocalhost opt]# ll 总用量 14032 -rw-r--r--. 1 root root 12392394 10月 13 11:44 apache-zookeeper-3.6.0-bin.tar.gz drwxrwxr-x. 6 root root 4096 10月 18 01:44 redis-5.0.4 …