数据库 什么是关系_数据库关系表

数据库 什么是关系_数据库关系表计算机学习者经常会用到诸如Sqlserver Mysql Orcal 等“关系型”数据库。 问题一:那么,到底什么是“关系”呢? 首先,我们来看以下三组数据 注:A1,A2表示具体的某个人,比如张三,

【数据库】到底什么是关系?

计算机学习者经常会用到诸如Sqlserver Mysql Orcal 等“关系型”数据库。

 

问题一:那么,到底什么是“关系”呢?

 

首先,我们来看以下三组数据

数据库 什么是关系_数据库关系表         数据库 什么是关系_数据库关系表         数据库 什么是关系_数据库关系表   

注:A1,A2表示具体的某个人,比如张三,李四

我们用数学集合的形式对其进行表达,得到三个集合

  男人: D1 { A1,A2,A3 }
  女人: D2 { B1,B2,B3 }
  小孩: D3 { C1,C2,C3 }

  我们称 D1 D2 D3 为 “

 接来下,我们将这三个集合取笛卡尔积(如果不懂的话,请自行查阅,简单理解就是从三个集合中元素里各取一个,能够形成的所有组合)

  D1*D2*D3=? 直观来说,结果显示在下表内   

  数据库 什么是关系_数据库关系表

显然,该结果整体并没有什么真实含义,单纯的作为一些数据的组合,于是,我们便通过“某一关系”将表中含有意义的部分选择出来,如下图:

 

  数据库 什么是关系_数据库关系表

 

通过“家庭”这种“关系”我们便得到了上表,其中意义显而易见且通俗易懂,正是我们人类,数据库管理人员、开发者等所需要的。这个表再关系型数据库中被称为“关系”。

其中,丈夫,妻子,子女统称为属性名,家庭作为关系名或表名。

 

由此表,可得到一些解释:

  1.元组:一行完整的数据,如A1 B1 C1

  2.关系:属性名+表名+数据

  3.关系模式:属性名+表名

 

通过对比可看出关系与关系模式的异同,同一关系模式下可能存在多种关系,比如随着时间的推移,人口的更变,表中数据发生了变化,所以关系模式是稳定的,关系是不稳定的。

 

问题二:那么,我们为什么要通过求笛卡尔积这种思路来理解这部分的学习呢?计算机与数学到底是什么关系呢?

 

有人说,“数学是上帝的语言”。我们作为开发者,虽然我们最常使用的是高级语言,诸如C++ JAVA C#,他们代码的书写方式,语法,编程范式,编程思想都更加接近于人类的思考

纵观计算机语言发展历史,语言的目的在于沟通,作为一端,计算机本质上只是一门工具,语言的发展本质上是应该更好的服务于开发者,使其更容易专注于业务,而非机器逻辑。

数据库 什么是关系_数据库关系表

 

但是,为了让机器更加高效的服务,我们不得不在一些事上有所侧重,一些底层系统更是如此。

显然,计算机并不能直接理解我们的话,他直接理解的可能只有01,只有逻辑运算,只有线性运算(只有加法与乘法构成的运算),因此,我们为了让计算机能够听懂并且好用,我们需要定义“数学模型”!

看到这里,很多问题迎刃而解,为什么我们要用笛卡尔积,为什么我们要取他的子集,甚至为什么我们要在每个列上取一个新的名字并且标注他的类型(如,学生表中的年龄(int))。

归根结底,我们在寻求一种来自于数学的精准定义,计算机能够理解并执行的数学模型! 模型如下:

关系模式  R(A1:D1,A2:D2,…,An:Dn);

举个例子,家庭(丈夫:男人,妻子:女人,孩子:儿童);

家庭作为关系名,丈夫作为属性,:后面跟着的男人就是丈夫所属的“域”(你可以理解为,领域或类型,比如1、2、3的域可以是整数)。

那么,为什么既然有域了,我还要有属性名呢?

因为,实际业务中,很多属性都来源于同一个域,我们可以有效地区分,例如:身高和体重都来源于浮点型域,姓名和地址都来源于字符串类型域。

至此,什么是关系,什么是表,在数据库使用中,我们为什么要这么定义表,从根本上都是有原因的,相信,你已经明白了。再见~

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10362.html

(0)
上一篇 2022-12-28 22:00
下一篇 2022-12-29

相关推荐

  • docker的架构_MySQL架构

    docker的架构_MySQL架构高日耀 资深数据库内核研发 毕业于华中科技大学,喜欢研究主流数据库架构和源码,并长期从事分布式数据库内核研发。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信),现主要负责 MyS

    2023-04-26
    152
  • 用Python输出网页标题

    用Python输出网页标题在我们每天的上网冲浪中,打开一个网页的第一件事情,往往是看看这个网页的标题。有时我们需要爬取一大批网页,获取它们的标题信息。在这篇文章中,我们将学习如何使用Python输出网页标题,从而轻松获取网页信息,加速我们的工作。

    2024-05-07
    69
  • 前端技术栈_栈怎么定义

    前端技术栈_栈怎么定义1.什么是InfluxDB? ‘InfluxDB’ 是一个用Go语言开发的时序数据库,用于处理高写入和查询负载,专门为带时间戳的数据编写,对DevOps监控,IoT监控和实时分析等应用场景非常有用。通

    2022-12-16
    140
  • 前端工程化之H5性能优化篇

    前端工程化之H5性能优化篇  导读:从粗糙到精致,从简单到复杂,全球互联网Web App(网页应用)平均体积已增压到1.6Mb,随着音视频等富媒体内容的流量池膨胀,终端设备上的用户对网页装载速度尤其敏感。页面不能做到秒开,就…

    2023-04-13
    157
  • Python实现二进制数61

    Python实现二进制数61使用二进制有什么好处呢?首先二进制是计算机可以直接处理的数字形式,这是因为在计算机内部使用的是二进制电子元器件,所以使用二进制能够更加高效地进行数值运算和存储。其次,当数据需要在不同的计算机之间传输时,使用二进制能够保证数据的准确性和一致性。

    2023-12-05
    116
  • 解决mysql8 Public Key Retrieval is not allowed 问题

    解决mysql8 Public Key Retrieval is not allowed 问题DBeave配置图: 对应连接为: jdbc:mysql://localhost:3306/sgk?characterEncoding=utf8&useSSL=false &serverTimezo…

    2023-04-10
    143
  • mysql数据库教程_MySQL入门

    mysql数据库教程_MySQL入门ps: 中括号[]里的内容都是可以省略的,按需要添加 数据库操作 创建数据库 if not exists 判断是否重复 charset=gbk 简体中文 gb2312 简体中文 utf8 通用字符编码

    2023-02-23
    155
  • ES相关知识

    ES相关知识ElkStack介绍 对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我

    2023-01-29
    148

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注