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

目录

回顾

关系模型

历史与现状

 组成成分

数据结构——关系

关系定义

关系性质 

关系和关系模式

难点概念理解 

 关系属性的分类

一、超码(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图中…

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…

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;旨在为企业内部数据安全提供强有力的支持。 德人合科技 | ——天锐绿盾…

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…

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

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

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

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

Python爬虫之Scrapy框架系列(24)——分布式爬虫scrapy_redis完整实战【XXTop250完整爬取】

目录&#xff1a; 每篇前言&#xff1a;1.使用分布式爬取豆瓣电影信息&#xff08;1&#xff09;settings.py文件中的配置&#xff1a;&#xff08;2&#xff09;spider文件的更改&#xff1a;&#xff08;3&#xff09;items.py文件&#xff08;两个项目一致&#xff01;&…

Vue el-table 合并单元格

一般常见的就是下图这种的单列&#xff0c;上下重复进行合并。 有时候可能也会需要多行多列的合并。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…

3.19网络编程

select实现的TCP并发服务器 #include <myhead.h> #define SER_IP "192.168.141.134" #define SER_PORT 8888 int main(int argc, const char *argv[]) {// 1、创建一个套接字int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (sfd -1){perr…

Division by Invariant Integers using Multiplication

在处理器中&#xff0c;整数除法的成本通常是整数乘法的几倍&#xff1a; 流水线式的组合乘法器通常在不到10个周期内完成操作&#xff1b;而对于整数除法则没有硬件支持&#xff0c;或者使用的迭代除法器比乘法器慢几倍。 表 1.1 比较了一些处理器上乘法和除法的时间。这张表…

php 页面中下载文件|图片

一、需求 页面中点击下载图片 二、实现 protected function pageLoad(){$filePath $_GET[file];$host $_SERVER[HTTP_HOST];$file http://.$host.$filePath;$fileName basename($filePath);$content file_get_contents($file);ob_clean();$suffixArr explode(., $file…

数据库系统概论-练手题集合【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的练手题&#xff0c;以供大家期末复习和考研复习的时候使用。 数据库系统概论系列文章传送门&#xff1a; 第一章 绪论 第二/三章 关系数据库和标准语言SQL 第四/五章 数据库安全性和完整性…

服务器硬件基础知识和云服务器的选购技巧

概述 服务器硬件基础知识涵盖了构成服务器的关键硬件组件和技术&#xff0c;这些组件和技术对于服务器的性能、稳定性和可用性起着至关重要的作用。其中包括中央处理器&#xff08;CPU&#xff09;作为服务器的计算引擎&#xff0c;内存&#xff08;RAM&#xff09;用于数据临…

zookeeper快速入门(合集)

zookeeper作为一个分布式协调框架&#xff0c;它的创建就是为了方便或者简化分布式应用的开发。除了服务注册与发现之外&#xff0c;它还能够提供更多的功能&#xff0c;但是对于入门来说&#xff0c;看这一篇就够了。后续会讲zookeeper的架构设计与原理&#xff0c;比如zookee…