读SQL进阶教程笔记11_关系数据库基础

这篇具有很好参考价值的文章主要介绍了读SQL进阶教程笔记11_关系数据库基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读SQL进阶教程笔记11_关系数据库基础文章来源地址https://www.toymoban.com/news/detail-412837.html

1. 1969年

1.1. 关系模型的创始人E.F. Codd(1923—2003)

1.1.1. 牛津大学数学专业

1.1.2. 一己之力奠定了关系模型的基础

1.2. 论文《大型数据库中关系存储的可推导性、冗余与一致性》

2. 1970年

2.1. 权威学术杂志Communications of ACM

2.2. Codd《大型共享数据库的关系模型》

2.2.1. 数据库中不再包含索引,字段间也没有顺序了

2.2.2. 第一次明确主张关系模型应该在表现层放弃指针

2.2.3. 出现了范式的概念

3. 主要贡献

3.1. 定义了关系运算(relational calculus)

3.1.1. 关系逻辑(relational logic)

3.2. 定义了关系代数(relational algebra)

3.2.1. 包含选择、投影、并、交等8种运算

3.2.2. 输入和输出都是关系

3.3. 采用谓词逻辑作为数据库操作的基础

3.3.1. 谓词逻辑已经成为了逻辑学的标准

4. 阻抗不匹配

4.1. 面向对象语言和关系数据库不一致的问题

5. 为什么叫它关系模型,而不叫它表(tabular)模型

5.1. 关系中不允许存在重复的元组(tuple),而表中可以存在

5.2. 关系是通常说的不允许存在重复元素的集合,而表是多重集合(multiset)

5.3. 关系中的元组没有从上往下的顺序,而表中的行有从上往下的顺序

5.4. 关系中的属性没有从左往右的顺序,而表中的列有从左往右的顺序

5.5. 关系中所有的属性的值都是不可分割的,而表中列的值是可以分割的

5.6. 关系中的属性满足第一范式,而表中的列不满足第一范式

6. 术语对应关系

正式的关系模型术语 非正式的日常用语
关系(relation ) 表(table )
元组(tuple ) 行(row )或记录(record )
势(cardinality ) 行数(number of rows )
属性(attribute ) 列(column )或字段(field )
度(degree ) 列数(number of columns )
定义域(domain ) 列的取值集合(pool of legal values )

6.2. 关系模型是以数学中的集合论为基础的,因此沿用了集合论的一些术语

6.3. 定义域是关系模型在诞生之际就存在的一个重要的关键词

6.4. 如果无法确定定义域的话,关系就无法确定了

6.5. SQL-92标准终于增加了定义域这一功能

7. 关系的定义

7.1. R ⊆(D1×D2×D3 · · · ×Dn)

7.1.1. 关系R是定义域D1, D2, …, Dn的笛卡儿积的子集

7.1.2. 笛卡儿积是指“使用各个属性的定义域生成的组合数最多的集合”

7.2. 关系用符号R表示,属性用符号Ai表示,属性的定义域用符号Di表示

7.3. 元组个数为0的关系也是满足定义的

8. 关系值和关系变量

8.1. 值(value)和变量(variable)是很容易混淆的概念

8.2. 一般提到“关系”这个词时,如果不加特殊说明,指的都是“关系变量”

8.3. 关系值指的是关系变量在某一时刻取的值

8.3.1. 值就是变量的时间切片(time-slice)

9. 关系的关系

9.1. 在逻辑上是可能存在的

9.2. 为此必须定义能够使定义域包含关系的谓词,而且如果再考虑对关系的量化,就需要实现二阶谓词逻辑,因此实现“关系的关系”非常困难

9.3. 包含关系的列(属性)叫作关系值属性(relation-valued attribute)

9.4. 标准SQL语言已经支持了数组类型和集合类型的变量

9.5. 关系模型正朝着能够处理复合型数据的方向发展

9.6. C.J. Date等人断言:真正的关系系统就是支持关系值等全部复合型数据的系统

10. 封闭性

10.1. closure property

10.2. 运算的输入和输出都是关系

10.3. 保证关系世界永远封闭

10.4. 关系的封闭性与UNIX中管道的概念很像

10.5. 在UNIX系统中

10.5.1. 从设备到控制台,一切都可以当作“文件”来处理

10.5.2. 设备只不过是/dev目录下的一个普通文件而已

10.5.3. 这也是UNIX系统追求文件的封闭性的结果

10.5.3.1. “泛文件主义”

10.5.3.2. “一切皆文件主义”

11. 集合类型

11.1. 群(group):对加法和减法(或者乘法和除法)封闭

11.2. 环(ring):对加法、减法、乘法封闭

11.3. 域(filed):对加法、减法、乘法、除法封闭,即可以自由进行四则运算

11.4. 这些对某种运算封闭的集合在数学上称为“代数结构”

11.5. 布尔值的集合{true, false} 也是域

11.5.1. 如果想要强调布尔型的域的特征,可以称为布尔域

11.6. 关系可以理解为“能自由进行四则运算的集合”

11.6.1. 关系支持加法(UNION)运算和减法(EXCEPT)运算,因此满足群的条件

11.6.2. 关系还支持相当于乘法运算的CROSS JOIN,所以也满足环的条件

11.6.3. 关系中没有除法运算符,所以不满足域的条件

11.6.4. 除法运算的定义是有的。因此,关系也满足域的条件

到了这里,关于读SQL进阶教程笔记11_关系数据库基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读SQL进阶教程笔记13_SQL中的分组和层级

    1.3.1.1. 还有一种只包含NULL的集合 1.4.1.1. 通过对3取余给自然数集合N分类后 1.4.1.1.1. “模3剩余类” 1.4.1.2. 模在SQL中也有实现,就是取模函数MOD 1.4.1.2.1. --对从1到10的整数以3为模求剩余类 1.4.1.3. --从原来的表中抽出(大约)五分之一行的数据 1.4.2.1. 数学理论并不是脱离实

    2023年04月21日
    浏览(28)
  • 读SQL进阶教程笔记12_地址与三值逻辑

    5.1.4.1. 命题其实不存在于客观世界,而存在于我们的内心

    2023年04月19日
    浏览(37)
  • Lua 进阶 · 教程笔记

    笔记的内容出自 Bilibili 上的视频:Lua教程-进阶部分 - 4K超清【不定期更新】 笔记主要用于供笔者个人或读者回顾知识点,如有纰漏,烦请指出 : ) 国内的大佬 云风 翻译了 Lua 的 Api 参考手册:传送门【】 以后读者在练习或者开发途中可以在参考手册里查看 Lua 提供的 Api。

    2024年01月24日
    浏览(34)
  • 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!

    学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量

    2024年02月09日
    浏览(43)
  • ROS2 Navigation 进阶教程学习笔记 第一章

    Nav2提供了新的拱你和工具,使创建机器人应用程序变得更容易 在本单元中,将学习 1. 通过simple Commander API进行基本Nav2操作 2. 通过followwaypoints使用waypoint follower和task executor插件 3. 禁区和限速区简介 然后您将基于Nav2创建一个基本的自主机器人demo。您将经常在一个仿真仓库中

    2024年02月08日
    浏览(30)
  • 【数据库·关系数据库标准语言SQL·学习笔记】Microsoft SQL Server数据库的建立和删除

    开发环境:SQL Server Management Studio(SSMS) 利用数据库对象资源管理器创建数据库 (1)右击对象资源管理器中的数据库,选择新建数据库 (2)在新建数据库界面输入数据库名称 ,并选择确定 利用CREAT DATABASE命令在SSM工具的新建查询中创建数据库 1.语法格式 CREATE DATABASE dat

    2024年02月08日
    浏览(39)
  • 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(14)-Fiddler断点(breakpoints)实战,篡改或伪造数据

    1.简介 上一篇主要就讲解和分享Fiddler断点的理论和操作,今天宏哥就用具体例子,将上一篇中的理论知识实践一下。而且在实际测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以使用fiddler进行此类操作。可以使用断点功能完成。 2.断点调试

    2024年01月22日
    浏览(46)
  • kotlin教程4:函数进阶

    kotlin教程:编程基础💎数据结构💎面向对象 kotlin 的函数定义非常灵活,既可以按照顺序传参,也可以通过参数名传参,而且可以设置参数默认值,这些在基础教程中已经讲过了。 此外, kotlin 中用 vararg 修饰的参数,为长度可变的参数列表 递归是一种常用的编程技巧,就像

    2024年02月05日
    浏览(31)
  • aardio教程二) 进阶语法

    aardio中除了基础数据类型外,其他的复合对象都是table(例如类和名字空间等)。table可以用来存放aardio的任何对象,包括另一个table。 在其他语言中的字典、列表、数组、集合映射等,在aardio中都使用table来实现。 创建字典 创建数组 数组和字典可以混用 使用class定义类

    2024年03月18日
    浏览(30)
  • SpringBoot进阶教程(七十七)WebSocket

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 很多

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包