【数据库】关系模型介绍+形式化关系查询语言

目录

第2章 关系模型介绍

2.1 关系数据库的结构

关系

2.2 数据库模式

2.3 码

2.4 模式图

大学数据库的模式图!!!

大学数据库关系模式!!!

2.5 关系查询语言

2.6 关系运算

2. 7 总结

第6章 形式化关系查询语言

1. Relational Algebra关系代数

a. 选择(Select Operation)

b. 投影(Project Operation)

组合

c. 集合并(Union Operation)

d. 集合差(Set Difference Operation)

e. 笛卡尔积(Cartesian-Product Operation)

 f. 更名(Rename Operation)

2. Tuple Relational Calculus

3. Domain Relational Calculus


第2章 关系模型介绍

2.1 关系数据库的结构

关系

  • 属性(attributes):表中每一列数据。A1, A2, …, An
  • 元组(tuples):表中每一行数据
  • 关系(relation):关系是无序
    • 关系实例(relation instance):表
    • 关系模式(relation schema): R = (A1, A2, …, An )。例如: instructor = (ID, name, dept_name, salary)

2.2 数据库模式

2.3 码

  • 超码(superkey):一个或一组属性,可以使我们在一个关系中唯一地标识一个元组。

                例如 {ID, name}{ID}

  • 候选码(candidate key):最小(包含属性个数最少)超码。例如 {ID}

  • 主码(primary key):候选码中挑出一个作为主码,任何关系只能有一个主码

    • 主码的选择必须慎重。正如我们所注意到的那样,人名显然是不足以作主码的,因为可能有多个 人重名。

    • 主码应该选择那些值从不或极少变化的属性

  • 外码(foreign key):一个表中某一列的所有值一定出现在另一张表的某一列,且在另一张表中为主码

2.4 模式图

大学数据库的模式图!!!

        一个含有主码和外码依赖的数据库模式可以用模式图(schema diagram)来表示。如下为大学数据库的模式图:

大学数据库关系模式!!!

department(dept_name,building,budget);
instructor(ID, name,dept_name,salary);
course(course_id,title,dept_name,credits);
section(course_id,sec_id,semester,year,building,room_number,time_slot_id);
teaches(ID,course_id,section_id,semester,year);
student(ID,name,dept_name,tot_cred);
prereq(course_id,prereq_id);
Advisor(s_id,i_id)
takes(ID,course_id,sec_id,semester,year,grade)
classroom(building,room_number,capacity)
time_slot(time_slot_id,day,start_time,end_time)

2.5 关系查询语言

2.6 关系运算

2. 7 总结

  • 关系数据模型(relational data model)建立在表的集合的基础上。数据库系统的用户可以对这些表进行 査询,可以插入新元组、删除元组以及更新(修改)元组。表达这些操作的语言有几种.
  • 关系的模式(schema)是指它的逻辑设计,而关系的实例(instance)是指它在特定时刻的内容。数据库 的模式和实例的定义是类似的。关系的模式包括它的属性,还可能包括属性类型和关系上的约束, 比如主码和外码约束。
  • 关系的超码(superkey)是一个或多个属性的集合,这些属性上的取值保证可以唯一识别岀关系中的元 组。候选码是一个最小的超码,也就是说,它是一组构成超码的属性集,但这组属性的任意子集都 不是超码。关系的一个候选码被选作主码(primary key) 
  • 在参照关系中的外码(foreign key)是这样的一个属性集合:对于参照关系中的每个元组来说,它在外 码属性上的取值肯定等于被参照关系中某个元组在主码上的取值。 
  • 模式图(schema diagram)是数据库中模式的图形化表示,它显示了数据库中的关系,关系的属性、主码和外码。
  • 关系查询语言(relational query language)定义了一组运算集,这些运算可作用于表上,并输岀表作为 结果。这些运算可以组合成表达式,表达所需的查询。 
  • 关系代数(relational algebra)提供了一组运算.它们以一个或多个关系为输入,返回一个关系作为输 出。诸如SQL这样的实际查询语言是基于关系代数的•但增加了一些有用的句法特征。

第6章 形式化关系查询语言

1. Relational Algebra关系代数

        关系代数是一种过程化查询语言。它包括一个运算的集合,这些运算以一个或两个关系为输入, 产生一个新的关系作为结果。关系代数基本运算有:选择、投影、并、集合差、笛卡儿积和更名。在 基本运算以外,还有一些其他运算,即集合交、自然连接和赋值。我们将用基本运算来定义这些运算。

        选择、投影和更名运算称为一元运算,因为它们对一个关系进行运算,另外三个运算对两个关系 进行运算.因而称为二元运算。

a. 选择(Select Operation)

       选择(selelct)运算选出满足给定谓词的元组,用符号σ表示:

b. 投影(Project Operation)

组合

c. 集合并(Union Operation)

     

        1. 关系r和s必须是同元的,即它们的属性数目必须相同

        2. 对所有的i,r的第i个属性的域必须和s的第i个属性的域相同

请注意r和s可以是数据库关系或者作为关系代数表达式结果的临时关系。

d. 集合差(Set Difference Operation)

        用—表示的集合差(set-difference)运算使得我们可以找出在一个关系中而不在另一个关系中的那些元组。表达式r-s的结果即一个包含所有在r中而不在s中的元组的关系。

e. 笛卡尔积(Cartesian-Product Operation)

 f. 更名(Rename Operation)

待完善

2. Tuple Relational Calculus

3. Domain Relational Calculus

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

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

相关文章

【分布式搜索引擎elasticsearch】

文章目录 1.elasticsearch基础索引和映射索引库操作索引库操作总结 文档操作文档操作总结 RestAPIRestClient操作文档 1.elasticsearch基础 什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能 什么是…

docker安装jenkins

运行jenkins docker run -d \--name jenkins \ --hostname jenkins \-u root \-p 29090:8080 \--restart always \-v D:\springcloud\学习\jekins\jenkins\jks_home:/var/jenkins_home \ jenkins/jenkins获取root登录密码 密码在jekins_home/secrets/initalAdminPassword文件…

LLM - LLaMA-2 获取文本向量并计算 Cos 相似度

目录 一.引言 二.获取文本向量 1.hidden_states 与 last_hidden_states ◆ hidden_states ◆ last_hidden_states 2.LLaMA-2 获取 hidden_states ◆ model config ◆ get Embedding 三.获取向量 Cos 相似度 1.向量选择 2.Cos 相似度 3.BERT-whitening 特征白化 …

python数据分析基础—pandas中set_index()、reset_index()的使用

文章目录 一、索引是什么?二、set_index()三、reset_index() 一、索引是什么? 在进行数据分析时,通常我们要根据业务情况进行数据筛选,要求筛选特定情况的行或列,这时就要根据数据类型(Series或者DataFrame)的索引情况…

短信验证码服务

使用的是 阿里云 阿里云官网 1.找到 左上角侧边栏 -云通信 -短信服务 2.在快速学习测试处 ,按照步骤完成快速学习,绑定要测试的手机号,选专用 【测试模板】,自定义模板需要人工审核,要一个工作日 3.右上角 获取 Acces…

Revit SDK:AutoParameter 添加参数

前言 这个例子介绍如果往族文件里添加参数。 内容 Revit 的参数,参考官方文档: 这个例子的关键接口: // 通过 FamilyManager 添加参数 FamilyParameter AddParameter(string parameterName, BuiltInParameterGroup parameterGroup, Categ…

matlab绘制局部放大图

ZoomPlot是一个交互式的matlab局部绘图库,其github仓库地址为 https://github.com/iqiukp/ZoomPlot-MATLAB。在使用库之前需要先将库下载到本地,可以直接添加到matlab的库中,也可以放在项目文件中直接使用。 简单使用 其实使用这个库只需要…

CocosCreator3.8研究笔记(三)CocosCreator 项目结构说明及编辑器的简单使用

我们通过Dashboard 创建一个2d项目,来演示CocosCreator 的项目结构。 等待创建完成后,会得到以下项目工程: 一、assets文件夹 assets文件夹:为资源目录,用来存储所有的本地资源,如各种图片,脚本…

爬虫异常处理之如何处理连接丢失和数据存储异常

在爬虫开发过程中,我们可能会遇到各种异常情况,如连接丢失、数据存储异常等。本文将介绍如何处理这些异常,并提供具体的解决代码。我们将以Python语言为例,使用requests库进行网络请求和sqlite3库进行数据存储。 1. 处理连接丢失 …

idea查找maven所有依赖

文章目录 idea自带的依赖结构图idea安装maven helper插件 idea自带的依赖结构图 缺点是只有依赖,没有版本 idea安装maven helper插件 settings–>plugins–>搜索maven helper并安装 安装后打开pom.xml文件会有依赖解析 勾选conflict就是有冲突的依赖选中…

mysql数据库创建只读用户

只需要三步,超级简单 很详细 方法1:在linux之centos上登陆/usr/local/mysql/bin/mysql -u root -p然后输入密码:ABCD2345 这是我的密码,你要输入自己对应的root密码然后1.创建只读用户: 使用以下 SQL 命令创建一个只…

python3.11教程1:python基础语法、程序控制、函数

文章目录 一、Python简介1.1 为什么学习python1.2 python安装与配置1.3 python解释器1.4 命令行参数1.4.1 sys.argv变量1.4.2 -c和-m选项 1.5 解释器的运行环境1.5.1 编码格式1.5.2 编码声明 二、Python基础语法2.1 行结构2.2 变量(标识符)2.3 字节串2.4…