数据库学习之关系数据库与关系

2.1关系数据库与关系

1. 什么是数据模型?什么是关系数据模型

数据模型是对现实世界物体的一种抽象,是严格定义的一组概念的集合,这些概念精确描述了物体的静态特性,动态特性和完整性约束。
静态特性:数据结构
动态特性:数据操作
完整性约束:数据的完整性约束条件
那么关系数据模型也就是:关系数据结构,关系操作集合,和关系完整性约束条件组成。

2. 关系模型中的关系数据结构是什么?关系是什么?

关系数据结构简单来看,就是一张Table
关系是这张Table的名字 Table=关系
在这里插入图片描述补充开发软件的思维

3. 关系的严格定义

在这里插入图片描述

  • 域(Domain):列的取值范围。一组相同数据类型的集合比如整数集合,全体学生的集合。集合中元素的个数称为域的基数。
    在这里插入图片描述
  • 笛卡尔积(Cartesian Product):元组及所有可能组合成的元组

在这里插入图片描述
元组(d1, d2 , … , dn)的每一个值di叫做一个分量(component)
元组(d1, d2 , … , dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合。
若Di的基数为mi,则笛卡尔积的基数=元组个数为:m1m2m3*…*m_n

  • 但是笛卡尔积的元组不一定是有意义的
    在这里插入图片描述

在这里插入图片描述
练习:写出下图的关系模式(表标题)(Schema)
家庭(丈夫:男人,妻子:女人,子女:儿童)或者家庭(丈夫,妻子,子女)
下表中关系的度(degree)是3,基数是3
在这里插入图片描述

  • 关系模式与关系(简单理解,关系模式就是标题名,关系是还有数据的表)
    同一关系模式下,可以有很多个关系
    关系模式是关系的结构,关系是关系模式在某一刻的数据
    关系模式是稳定的,关系是可能会变化的
Student(S# char(8), Sname char(10), Ssex char(2), Sage integer,   
D# char(2),  Sclass char(6)
  • 练习

在这里插入图片描述
有三列,关系模式为家庭(丈夫,妻子,子女),丈夫的domain是李基,张鹏,妻子的domain是王方,刘玉,子女的domian是李健,张锋,张睿。笛卡尔积为各个域的基数相乘223=12。关系中的元组是三列。

4.关系的特性

  • 列是同质:即每一列中的分量来自同一域,是同一类型的数据

  • 不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予
    不同的属性名
    例: 我们定义所有男人、女人和儿童的集合= {李基,张鹏,王芳,刘玉,李健,张睿,张峰},则下述“家庭”关系的三个列将来自同一个域Person, 因此需要不同的属性名“丈夫”“妻子”“子女”以示区分。

  • 列位置互换性:区分哪一列是靠列名,不是靠列的位置

  • 行位置互换性:区分哪一行是靠某一或某几列的值(关键字/键字/码字)

  • 关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分
    在这里插入图片描述
    属于相同关系

  • 理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有
    相同的两个元素);现实应用中,表(Table)可能并不完全遵守此特性。
    -属性不可再分特性:又被称为关系第一范式
    在这里插入图片描述

5.关系上的一些重要概念—候选码/候选键

候选码与候选键

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

  • 例如:“学生(S# , Sname, Sage, Sclass)”,S#就是一个候选码,在此
    关系中,任何两个元组的S#(学号)是一定不同的,而这两个元组的Sname,
    Sage, Sclass都可能相同(同名、同龄、同班),所以S#是候选码。

  • 再如:“选课(S#, C#个候选码, Sname, Cname, Grade)”,(S#,C#)(学号和课号)联合起来是一个候选码。

  • 有时,关系中有很多组候选码,例如:学生(S#, Sname, Sage, Sclass, Saddress)其中属性S#是候选码,属性组(Sname, Saddress)也是候选码(同名同地址的两个同学是不存在的
    主码与主键

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

  • 例如可选定属性S# Saddress作为“学生”表的主码,也可以选定属性组(Sname )作为“学生”表的主码。
    主属性与非主属性

  • 包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性如“选课”中的S# , C#为主属性,而Sname, Cname, Grade则为非主属性

  • 最简单的,候选码只包含一个属性

  • 最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)
    外码与外键

  • 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选
    码相对应,则称这个属性组为R的外码或外键。(我不是这个关系的自己人,我跟别的关系眉来眼去)

  • 例如“合同”关系中的客户号系中的候选码“客户号不是候选码,但却是外码。因它与“客户”关” 相对应。

  • 两个关系通常是靠外码连接起来的。
    在这里插入图片描述

小结:在这里插入图片描述

6.关系模型中的完整性

1.实体完整性

  • 关系的主码中的属性值不能为空值(不知道或没有意义的值)
  • 意义:关系中的元组对应到现实世界相互之间可区分的一个个个体,这些个体是通过主码来唯一标识的;若主码为空,则出现不可标识的个体,这是不容许的。

2.空值及其含义

  • 空值:不知道、不存在或无意义的值;
  • 在进行关系操作时,有时关系中的某属性值在当前是填不上的,比如档案中有“生日不详”、“下落不明”、“日程尚待公布”等,这时就需要空值来代表这种情况。关系模型中用‘?’表征
  • 数据库中有了空值,会影响许多方面,如影响聚集函数运算的正确性,不能参与算术、比较或逻辑运算等。比如3+?
  • 再例如,一个班有30名同学,如所有同学都有成绩,则可求出平均成绩;如果有一个同学没有成绩,怎样参与平均成绩的计算呢,是当作0,还是当作100呢?还是不考虑他呢?

3.参照完整性

  • 如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2 中某个元组的Pk 值,或者为空值
  • 意义:如果关系R1的某个元组t1参照了关系R2的某个元组t2,则t2必须存在
  • 例如关系Student在D#上的取值有两种可能:空值,表示该学生尚未分到任何系中,若非空值,则必须是Dept关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中。
    简单来说,若两个关系具备参照完整性,那么外码的取值范围只有上述的空和非空两种,其中非空时候取值范围是关系2主码属性值的集合。

4.用户自定义完整性

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

5.DBMS对关系完整性的支持

  • 实体完整性和参照完整性由DBMS系统自动支持
  • DBMS系统通常提供了如下机制:
    (1)它使用户可以自行定义有关的完整性约束条件
    (2)当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java - 数组 Array

一、概念 结构是一种线性表(元素排列成直线的结构),创建数组会开辟一块连续的内存空间,长度固定无法更改,元素可以重复且只能是同一种类型(Object类型数组除外)。优点查询快:由于元…

二手手机回收平台系统|基于JSP技术+ Mysql+Java+ B/S结构的二手手机回收平台系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

代码中加了@ApiModelProperty注解,swagger不显示注释?

前言 今天接了一个需求,因为只是涉及到字段内容的更改,就把以前的接口copy过来,只改了一个sql。结果后面和前端联调的时候,前端告诉我swagger返回的字段没有注释,我寻思我家里swagger的注解,为什么没显示呢…

类和对象详解

目录 1.面向对象 1.1什么是面向对象 1.2与面向过程的比较 2类的定义和使用 2.1简单认识类 2.2类的定义格式 2.3类的实例化 2.3.1什么是实例化 2.3.2类和对象的说明 2.3.3this关键字 2.3.4什么是this引用 2.3.5this引用的特性 3.对象的构造和实例化 3.1对象的初始化…

AIOCR:AI文字识别web集成系统@Kylin+RISCV

基于kotti_ai的AI文字识别web集成系统 AIOCR项目目标: 在KylinRISCV搭建一个kotti_ai构架的网站,提供AI OCR文字识别web服务。 二期目标:在AIOCR的基础上提供chatgpt和文心一言等大模型调用,建立综合大模型应用平台。 功能&am…

【链表】算法例题

目录 八、 链表 57. 环形链表 ① 58. 两数相加 ② √ 59. 合并两个有序链表 ① √- 60. 随机链表的复制 ② 61. 反转链表II ② 62. K个一组翻转链表 ③ 63. 删除链表的倒数第N个结点 ② √- 64. 删除排序链表中的重复元素II ② √- 65. 旋转链表 ② √- 66. 分隔链…

腾讯云服务器如何购买省钱?2024年优惠券和优惠活动整理

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

基于torch.compile和gptfast代码风格实现ChatGLM模型推理加速

目录 一、ChatGLM模型代码重构迁移 二、推理的代码重构 三、效果分析对比 参考文章 torch2.0发布以后模型训练和推理可以实现一行代码加速,试用之后发现效果并不明显。随后gptfast项目也发布,表明它确实是可以实现模型推理的加速,看来之前…

c/c++ 深拷贝和浅拷贝

深拷贝与浅拷贝 深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是对象复制的两种不同方式,它们涉及到对象成员数据的复制方式和内存管理。 浅拷贝(Shallow Copy): 浅拷贝是指将一个对象的…

投资400亿美元!人工智能或将诞生超级大国

据外媒报道,沙特阿拉伯政府计划设立约 400 亿美元的基金来投资人工智能,如此规模的基金将成为迄今为止全球最大的专注于人工智能发展的基金之一。 据知情人士透露,该基金长期以来一直被硅谷用来为科技初创企业提供资金,甚至一度是…

在线教育话术(1W字精选)

产品结构图 Nginx实现代理 问:我们在本机的host文件中配置了域名映射,都是同一个服务器。我们只需要输入对应的域名就可以到对应的界面,这是怎么实现的? 答:主要就是通过Nginx反向代理来实现的,Nginx会先…

【go语言开发】性能分析工具pprof使用

本文主要介绍如何在项目中使用pprof工具。首先简要介绍pprof工具的作用;然后介绍pprof的应用场景,主要分为工具型应用和服务型应用。最后数据分析项目,先采集项目信息,再可视化查看 文章目录 前言应用场景工具型应用服务型应用 数…

基于补丁方式修复 nginx漏洞 缓冲区错误漏洞(CVE-2022-41741)、越界写入漏洞(CVE-2022-41742)

nginx1.22.0版本漏洞 CVE-2022-41741 、CVE-2022-41742 漏洞描述 1、nginx 缓冲区错误漏洞(CVE-2022-41741) 此插件基于版本检测,有可能误报,未开启 MP4 模块的nginx属于误报,请忽略该漏洞。Nginx是美国Nginx公司的一款轻量级Web服务器/反…

Jmeter Ultimate Thread Group 和 Stepping Thread Group

线程组:使用复杂场景的性能测试 有时候我们做性能测试时,只依靠自带的线程组,显示满足不了性能测试中比较复杂的场景,下面这两种线程组可以帮助你很好的完成复杂的场景 第一种:Stepping Thread Group 在取样器错误后…

2024年【安全员-C证】考试资料及安全员-C证新版试题

题库来源:安全生产模拟考试一点通公众号小程序 安全员-C证考试资料是安全生产模拟考试一点通生成的,安全员-C证证模拟考试题库是根据安全员-C证最新版教材汇编出安全员-C证仿真模拟考试。2024年【安全员-C证】考试资料及安全员-C证新版试题 1、【多选题…

Java基础入门day17

day17 复习二分查找java package com.saas; ​ public class BinarySearch { ​public static void main(String[] args) {int[] nums {12, 21, 33, 77, 89, 90}; ​System.out.println(binarySearch(nums, 21));} ​public static int binarySearch(int[] arrs, int target)…

springBoot项目,无配置中心,怎么实现类似功能

实现EnvironmentPostProcessor import cn.hutool.http.HttpUtil; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.boot.env.YamlPropertySourceLoader; import org.springfr…

springboot企业级抽奖项目业务一(登录模块)

开发流程 该业务基于rouyi生成好了mapper和service的代码,现在需要在controller层写接口 实际操作流程: 看接口文档一>controller里定义函数一>看给出的工具类一>补全controller里的函数一>运行测试 接口文档 在登录模块有登录和登出方…

在windows上安装Jenkins

jenkins安装 下载jenkins 官网:Jenkins download and deployment 官方文档说明:Jenkins User Documentation 安装jenkins1.点击下载好的安装包,点击Next 2.选择一个安装路径 如果系统是windows家庭版打不开策略就创建一个txt文件&#xff0c…

Android分区存储到底该怎么做

文章目录 一、Android存储结构二、什么是分区存储?三、私有目录和公有目录三、存储权限和分区存储有什么关系?四、我们应该该怎么做适配?4.1、利用File进行操作4.2、使用MediaStore操作数据库 一、Android存储结构 Android存储分为内部存储和…