数据库系统概念(第二周 第二堂)(关系模型)

目录

回顾

关系模型

历史与现状

 组成成分

数据结构——关系

关系定义

关系性质 

关系和关系模式

难点概念理解 

 关系属性的分类

一、超码(superkey)

二、候选码(candidate key)

三、主码(primary key)

四、外码(Foreign key)

完整性约束

 实体完整性

意义

实现

空值

参照完整性 

意义

实现

特别注意点 

用户完整性 

定义

例子 

课堂小练习 

模式图

总结 


回顾

前一堂最后在研究数据库系统结构,这也是引言最后部分。数据库系统结构包括数据库本身、数据库使用人员、编译器等。在引言整个部分,我们对数据库大体结构上有了大致的了解(模糊、大范围的了解)。

数据库这门课重点聚焦于数据库本身,并不是很关心数据库使用人员、数据库背后的编译处理器等。所以从本篇开始我们便关心数据库本身的知识(数据库设计、数据库使用等)。

对于设计一个数据库来说选择一个数据库模型是最重要的。而现阶段数据库模型中最流行的就是关系模型,所以我们先来研究关系模型

关系模型

历史与现状

 组成成分

研究任何数据库模型都考虑三个方面:数据结构、操作方式、完整性约束

数据结构——关系

单一的数据结构——关系:从数学角度,现实世界的实体以及实体间的各种联系均可用关系来表示

数据结构的逻辑结构——二维表:从用户角度,关系可视化体现出来就是一张张二维表格

关系定义

定义:

笛卡尔积D_1\times D_2\times\ldots\times D_n的子集叫做在域(相同数据结构的数据的集合)D_1D_2\ldotsD_n上的关系

理解

一、关系是笛卡尔积中有意义的子集(无限关系在数据库中没有意义)

二、关系在逻辑结构上可以表示为二维表

三、关系的表示:关系名+属性名(属性名的添加消除了笛卡尔积下关系的有序性)

四、关系由许多元组组成

五、域本身没有意义,也不存在关系,因为笛卡尔积才产生关系

六、关系的本质就是一种抽象归纳化的概念,就是让域之间产生联系,从而抽象为某种关系

关系性质 

 注意:在数据库中实际使用时,考虑到效率问题,会允许重复元组的存在

关系和关系模式

关系:是某一关系模式下,随时间变化的一个值(像面向对象编程中的对象)

关系模式:是关系的描述,包括关系名、关系属性、关系映像等(像面向对象编程中的类)

难点概念理解 

1、任何实体都可以有一系列属性(元组)来代替。任何世界上的事物本质都是一堆数据的集合。

2、实体间的产生联系都可以通过属性的交融(由旧元组通过笛卡尔积形成新元组)来实现。

3、实体间的联系也可以认为是关系与关系间的引用,用外码来体现

举个栗子:

学生+课程=学生选课关系

老师+课程=教师授课关系

学生+老师+课程=学生课程信息查询关系/教师授课信息查询关系

综上:实体和实体的联系都可以用关系来表示

 关系属性的分类

每张表都有不同的属性,但是这些属性在表格中的地位不同。同时通过笛卡尔积形成的新表格之间的联系也体现在属性之间的交融,所以更加深入地研究关系模型表格中的属性是非常有必要的。

一、超码(superkey)

是一个或多个属性的集合,这些属性能够唯一确定一个元组

二、候选码(candidate key)

是一个或多个属性的集合,这些属性都是超码,但是其任意真子集都不是超码

三、主码(primary key)

候选码中可以选择一个作为主码,用来当作表中元组的唯一标识

四、外码(Foreign key)

关系R中的一个属性,它和关系S的主码相对应,那么就称这个属性为R的外码(R和S可以是同一关系

图中班长属性与学号属性相对应,而学号属性又是同一张表的元组。所以也可以称班长为外码。 

完整性约束

目的:

完整性约束目的是为了保护数据库本身的安全,防止用户在使用数据库时向数据库中添加了非法数据

分类:

实体完整性、参照完整性、用户完整性

 实体完整性
意义

现实世界中的每一个实体都是相互可区分的(世界上没有两片完全相同的树叶),所以在数据库中每一个元组也都必须是相互可以区分的。

实现

关系的主码属性值不能为空值

空值

不知道或无意义的值。和0或空字符串不相同

课堂小练

结果为:null、null、false、true、null、null、true、false 

参照完整性 
意义

参照属性在另一个关系中属于主码,表示两个关系之间存在联系。如果在参照关系中其参照属性不是被参照关系中的值,那么代表参照关系参照了一个并不存在的实体,这在现实世界中是不允许的(例如一名学生选了一个并不存在的课程,这是不合理的)

实现

 参照属性在另一个关系中属于主码,表示两个关系之间存在联系。所以在参照关系中,其参照的对象(被参照关系)必须是被参照关系中的值(两个元组存在关系)或者空值(该元组并未实际链接上关系)

特别注意点 

一、如果外码由多个属性组成,参照时一定要一一对应,而不是分别对应(看成一个整体对应)

二、参照关系、被参照关系可以是同一个关系(外码和其对应的主码可以在同一个关系中)

用户完整性 
定义

用户根据应用的实际情况对数据具体设置的限制

例子 

如gender要求取值为“1”或“2”,考试成绩在0-100之间

课堂小练习 

结果为:Y、N、N、Y、N、Y、N 

模式图

可视化体现数据库表以及表之间关系的一种方式

特点:

一、有下划线的属性表示主码

二、箭头表示参照关系与被参照关系(箭头指向被参照关系的被参照属性)

总结 

本文的所有知识点、图片均来自《数据库系统概念》(黑宝书)、山东大学李晖老师PPT。不可用于商业用途转发。

本来想讲完关系代数的,但是篇幅实在太长啦~~本篇已经码了两个多小时了

如果能帮助到大家,大家可以点点赞、收收藏呀~ 

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

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

相关文章

Catmull-Rom P5 ThreeJs与前端

文章目录 问题Echarts 3D如何让曲线变得平滑?Echarts 2D图中平滑效果是如何实现的?如何在一个Echarts 3D图中画一个圆圈?如何在Echarts 3D图中画一个立方体? Catmull-Rom插值算法先来回答第二个问题回到第一个问题在Echarts 3D图中…

C#关闭程序 CefSharp.BrowserSubprocess.exe,执行控制台命令

执行控制台命令,关闭大量的CefSharp.BrowserSubprocess进程, 控制台命令: taskkill /f /im CefSharp.BrowserSubprocess.exe 有权限要求: 需要设置执行程序为管理员模式,IIS部署的应用程序,设置应用程序池…

git基础命令(三)之远程命令

目录 基础概念origin git clonegit remote add 添加远程存储库git remote 显示远程存储库列表git pushgit pushgit push origin mastergit push origin --allgit push -f origin mastegit push origin --tags git fetch获取远程仓库的更新查看远程分支的更新情况拉取特定远程分…

【Linux】——进程地址空间 Linux2.6内核进程调度队列

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一、环境变量的补充 二、进程空间的地址 2.1、程序地址空间 2.2、研究背景 2.3、程序地址空间 来段代码感受一下 2.4、进程地址空间 2.5、如何…

一文搞懂IP

IP 1. 基本介绍2. IP地址定义3. IP地址分类4. 子网掩码5. 全局地址与私有地址 1. 基本介绍 TCP/IP 协议的心脏是网络层,主要“实现节点之间的通信”,即“点对点(end-to-end)通信”。 网络层包含IP(Internet Protocol)及DNS(Domain Name Sys…

Linux的基本指令讲解

1 ls指令 语法: ls [选项][目录或文件] 功能: 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常用选项: -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -d…

Leetcode 387. First Unique Character in a String

Problem Given a string s, find the first non-repeating character in it and return its index. If it does not exist, return -1. Algorithm Use two lists: one list is used to count the letters in “s”; the other list is the position where the letter first …

Json Web Token(JWT) 快速入门

推荐视频:【从零开始掌握JWT】 目录 第一章 会话跟踪 01 使用Cookie和Session,jsessionid 02 使用token 例子一:自定义token 例子二:使用redis存储token 第一章 会话跟踪 应用背景 :浏览器访问web应用&#xff…

下拉树级带搜索功能

可以直接复制粘贴到自己的项目里,方法处把接口替换一下 <template><div><el-popoverplacement"bottom"width"200"trigger"click"><el-inputslot"reference"class"mrInput":placeholder"placehol…

天锐绿盾 | 公司内部文件数据 \ 资料加密系统,数据防泄密软件

#防止设计图纸、各种类型文件、各种类型软件、财务数据、客户资料、源代码&#xff0c;数据存储服务器、SVN、Git等商业核心文件数据外泄# 天锐绿盾是一款专业的企业级文件数据及资料加密系统&#xff0c;旨在为企业内部数据安全提供强有力的支持。 德人合科技 | ——天锐绿盾…

生成式人工智能如何改变商业和社会

生成式人工智能是否将带来生产力黄金时代,或在全球经济中摧毁数以百万计的生计?它是否将带人们步入个人充实的新成长道路,或引导他们一步步走入孤独和隔离的死胡同?它是否将 引领人类 走向新的高处,或播下我们集体毁灭的种子? 自ChatGPT上线以来14个月来,人们还没有完全弄清…

B站python爬虫课程笔记(Q11-15)

下面是学习的网址&#xff1a; ​​​​​​【Python爬虫】 目录 11、class定义类别的一些问题 1&#xff09;定义init初始化函数的一些问题 2&#xff09;定义两个不同函数之间要有空行 3&#xff09;print的技巧 12、class定义类别的一些问题2 13、class_inheritance类…

MySQL数据库的基本概念与安装

目录 引言 一、数据库的基本概念 &#xff08;一&#xff09;数据、表与数据库 1.数据(Data) 2.表 3.数据库 &#xff08;二&#xff09;数据库管理系统 &#xff08;三&#xff09;数据库系统 二、数据库的发展 三、主流数据库的介绍 &#xff08;一&#xff09;关…

地理数据表达方式学习——KML与SHP

一、KML-Keyhole Markup Language Keyhole Markup Language (KML)是一种XML符号&#xff0c;用于浏览器中二维地图和三维地球的地理注释和地理可视化&#xff08;地理数据包括点、线、面、多边形、多面体以及模型等&#xff09;。KML是伴随着Google Earth的使用而开发的&#x…

word的第六课笔记

1.排版的六大特点&#xff08;留白、对齐、亲密、对比、重复、可自动更新&#xff09; 先设置页边距为2厘米&#xff0c;左侧装订线考虑2.75厘米。段落间距段前段后设置一个就可以了&#xff0c;如段前0.5行 &#xff08;留白&#xff1a;让文字更加容易阅读&#xff0c;调大页…

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能&#xff0c;并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

体验函数式组件简单实现Loading 加载(造轮子篇)

一、前言 最近想着优化一下网站&#xff0c;在文章列表页加一个Loading操作&#xff0c;于是就想到了函数式组件&#xff0c;于是本章就来和大家一起简单探讨下实现思路。 二、Loading设计 这里我想实现的效果是&#xff1a;当我们刷新页面的时候&#xff0c;前端请求接口&…

【MySQL】中位数巧解之给定数字的频率查询中位数

力扣题 1、题目地址 571. 给定数字的频率查询中位数 2、模拟表 Numbers 表&#xff1a; Column NameTypenumintfrequencyint num 是这张表的主键(具有唯一值的列)。这张表的每一行表示某个数字在该数据库中的出现频率。 3、要求 中位数 是将数据样本中半数较高值和半数…

扭矩测量仪行业研究:规模不断扩大市场需求旺盛

一、市场趋势 扭矩测量仪是用于精确测量旋转力矩的精密仪器&#xff0c;广泛应用于汽车、航空航天、机械制造和电子产品等领域。随着工业自动化程度的提升和精密制造的需求增加&#xff0c;扭矩测量仪的市场呈现出稳步增长的趋势。 二、主要竞争者 市场上的主要竞争企业包括德国…

华为OD机试 - 求字符串中所有整数的最小和(Java JS Python C C++)

题目描述 输入字符串s&#xff0c;输出s中包含所有整数的最小和。 说明&#xff1a; 字符串s&#xff0c;只包含 a-z A-Z 合法的整数包括 1&#xff09;正整数&#xff1a;一个或者多个0-9组成&#xff0c;如 0 2 3 002 102 2&#xff09;负整数&#xff1a;负号 – 开头…