《数据库系统概论》学习笔记——王珊 萨师煊
第一章 绪论
一、数据库系统概述
1.数据库的4个基本概念
(1)数据
描述事物的符号记录称为数据
(2)数据库
存放数据的仓库
(3)数据库管理系统
主要功能:
(1)数据定义功能
(2)数据组织、存储和管理
(3)数据操纵功能
(4)数据库的事务管理和运行管理
(5)数据库的建立和维护
(4)数据库系统
由数据库、数据库管理系统、应用程序、数据库管理员组成的存储、管理、处理和维护数据的系统
2.数据库的发展
人工管理阶段——>文件系统阶段——>数据库系统阶段
3.数据库系统的特点
(1)数据(整体)结构化
这就要求在描述数据时不仅要描述数据本身,还要描述数据之间的关系
(2)数据的共享性高、冗余度低且易扩充
数据共享——>减少了数据冗余
(3)数据独立性高
物理独立性:应用程序和数据库中数据的物理存储是相互独立的
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的
(4)数据由数据库管理系统统一管理和控制
数据库管理系统必须提供以下几方面的数据控制功能:
数据的安全性保护
数据的完整性检查
并发控制
数据库恢复
二、数据模型
1.模型分类
(1)第一类:概念模型
概念模型是现实世界到信息世界的第一层现象
信息世界中的基本概念:
1)实体
2)属性:实体所具有的某一特性(如:性别,学号,姓名)
3)码:唯一标识实体的属性(如:学号)
4)实体型:用实体名和属性名集合来抽象和刻画同类实体,称为实体型。
如:学生(姓名,学号,性别)
5)联系:实体之间的联系通常指实体集之间的联系
有:一对一,一对多,多对多
概念模型的一种表示方法:
实体-联系方法(E-R模型)
(2)第二类:逻辑模型和物理模型
逻辑模型,包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系模型、半结构化数数据模型
物理模型,描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上存储方式和存取方法
2.数据模型的组成要素
(1)数据结构
描述对象和对象之间的联系
(2)数据操作
(3)数据的完整性约束条件
3.常用的数据模型
(1)层次模型
具体例子:
完整性约束:
插入时,若没有相应双亲结点就不能插入它的子女节点值
删除时,如果删除双亲结点值,则相应的子女节点值也将同时删除
(2)网状模型
具体例子:
(3)关系模型
一些术语:
(4)面向对象数据模型、对象关系数据模型、半结构化数据模型
三、数据库系统的结构
1.数据库系统模式的概念
型: 对一类数据的结构和属性的说明,如(学号,姓名,性别)
值: 型的一个具体赋值,如(12345,李明,男)
模式: 数据库中全体数据的逻辑结构和特征的描述,仅涉及型的描述(相对稳定)
实例: 模式的一个具体值(相对变动)
2.数据库系统的三级结构
(1)模式(逻辑模式): 数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共视图。
一个数据库只有一个模式,定义模式时,不仅要定义数据的逻辑结构,还要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
(2)外模式(子模式、用户模式): 是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
(3)内模式(存储模式): 是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
3.数据库的二级映像功能与数据独立性
(1)外模式/模式映像
(2)模式/内模式映像
第二章 关系数据库
一、关系数据结构及形式化定义
1.关系 —— 一张二维表
域: 一组具有相同数据类型的值的集合,类似数学中的值域
笛卡尔积: D1XD2XD3X……Dn
关系: 笛卡尔积的子集,表示为R(D1,D2,…Dn),R表示关系的名字,n是关系的目或度
候选码: 能唯一标识一个元组的属性组
主码: 选定一个候选码作为主码(类似身份证号)
全码: 所有属性都是候选码
基本关系的性质:
(1)列是同质的
每一列中的分量是同一类型的数据,来自同一个域
(2)不同的列可以出自同一个域
(3)列的顺序无所谓
(4)行的顺序无所谓
(5)任意两个元组的候选码不能相同
(6)分量必须取原子值,即每个分量都必须是不可分的数据项
2.关系模式——关系的描述
关系模式可以表示为
R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性见数据的依赖关系集合
3.关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
型: 也称为关系数据库模式,是对关系数据库的描述
值: 这些关系模式在某一时刻对应的关系的集合
二、关系操作
1.基本的关系操作
常用:查询、插入、删除、修改
其中,查询可分为选择、投影、连接、除、并、差、交、笛卡尔积
基本操作: 选择、投影、并、差、笛卡尔积
2.关系数据语言分类
(1)关系代数
用对关系的运算来表达查询要求
(2)关系演算
用谓词来表达查询要求
(3)SQL(结构化查询语言)
介于关系代数与关系演算之间,是集查询、数据定义语言、数据操纵语言、数据控制语言于一体的关系数据语言
三、关系的完整性
1.实体完整性
主属性不能取空值
2.参照完整性
外码要么取空值,要么等于被参照关系某个元组的主码值
3.用户定义完整性
针对某一具体关系数据库的 约束条件
如某个属性必须取一值,某个非主属性不能取空值,等等
四、关系代数 !
1.传统的集合运算
2.专门的关系运算
(1)选择(限制)
σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ 真 ′ } \sigma_F(R)=\{t|t\in R \wedge F(t)='真'\} σF(R)={t∣t∈R∧F(t)=′真′}
其中,F表示选择条件,取逻辑值“真”或“假”
F的基本形式为 X 1 θ Y 1 X_1 \theta Y_1 X1θY1, θ \theta θ的取值如下:
参考资料
1.《数据库系统概论》王珊 萨师煊
相关文章:
《数据库系统概论》学习笔记——王珊 萨师煊
第一章 绪论 一、数据库系统概述 1.数据库的4个基本概念 (1)数据 描述事物的符号记录称为数据 (2)数据库 存放数据的仓库 (3)数据库管理系统 主要功能: (1)数据定…...
关于使用百度开发者平台处理语音朗读问题排查
错误信息:"convert_offline": false, "err_detail": "16: Open api characters limit reach 需要领取完 识别和合成都要有...
安全认证 | CISP和CISP-PTE的区别在哪里?
CISP和CISP-PTE的区别在哪里? 在国内安全信息认证体系中,虽然CISP认证与CISP-PTE认证都是中国信息安全测评中心负责颁发,均获得政府背景的认可,但二者还是有区别的。 今天就详细为大家介绍一下。 01 定义不同 ★ 注册信息安全专…...
Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
目录 前言: 准备资料: 正文: 1:打包一个带有签名的apk 2:对包进行反编译 3:使用ipaguard来对程序进行加固 前言: 对于辛辛苦苦完成的apk程序被人轻易的反编译了,那就得不偿…...
C语言扫雷小游戏
以下是一个简单的C语言扫雷小游戏的示例代码: #include <stdio.h>#include <stdlib.h>#include <time.h>#define BOARD_SIZE 10#define NUM_MINES 10int main() { int board[BOARD_SIZE][BOARD_SIZE]; int num_flags, num_clicks; int …...
用取样思想一探AIX上进程性能瓶颈
本篇文章也是我在解决客户问题时的一些思路,希望对读者有用。 本文与GDB也与DBX(AIX上的调试工具)无关,只是用到了前文《GDB技巧》中的思想:取样思想 客户问题: 原始问题是磁盘被占满了,通过…...
分布式搜索引擎elasticsearch(二)
1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查…...
Tecplot绘制涡结构(Q准则)
文章目录 目的步骤1步骤2步骤3步骤4步骤5步骤6结果 目的 Tecplot绘制涡结构(Q准则判别)并用温度进行染色 Q准则计算公式 步骤1 步骤2 步骤3 步骤4 步骤5 步骤6 结果...
Whisper
文章目录 使后感Paper Review个人觉得有趣的Log Mel spectrogram & STFT Trainingcross-attention输入cross-attention输出positional encoding数据 Decoding为什么可以有时间戳的信息 Test code 使后感 因为运用里需要考虑到时效和准确性,类似于YOLOÿ…...
Android系统分析
Android工程师进阶第八课 AMS、WMS和PMS 一、Binder通信 【Android Framework系列】第2章 Binder机制大全_android binder-CSDN博客 Android Binder机制浅谈以及使用Binder进行跨进程通信的俩种方式(AIDL以及直接利用Binder的transact方法实现)_bind…...
五、关闭三台虚拟机的防火墙和Selinux
目录 1、关闭每台虚拟机的防火墙 2、关闭每台虚拟机的Selinux 2.1 什么是SELinux...
【从零开始学习Redis | 第六篇】爆改Setnx实现分布式锁
前言: 在Java后端业务中, 如果我们开启了均衡负载模式,也就是多台服务器处理前端的请求,就会产生一个问题:多台服务器就会有多个JVM,多个JVM就会导致服务器集群下的并发问题。我们在这里提出的解决思路是把…...
Kubernetes学习笔记-Part.05 基础环境准备
目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第五章 基础环境准备 5.1.SSH免密登录 在master01、…...
语义分割 DeepLab V1网络学习笔记 (附代码)
论文地址:https://arxiv.org/abs/1412.7062 代码地址:GitHub - TheLegendAli/DeepLab-Context 1.是什么? DeepLab V1是一种基于VGG模型的语义分割模型,它使用了空洞卷积和全连接条件随机(CRF)来提高分割…...
java设计模式学习之【建造者模式】
文章目录 引言建造者模式简介定义与用途实现方式: 使用场景优势与劣势建造者模式在spring中的应用CD(光盘)的模拟示例UML 订单系统的模拟示例UML 代码地址 引言 建造者模式在创建复杂对象时展现出其强大的能力,特别是当这些对象需…...
Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽 前言第一:基础整合实现第二:处理消息消费异常第三:实现延迟消息处理第四:优雅的消息重试机制第五:异步处理超时消息第六࿱…...
nrm : 镜像源工具npm镜像切换
nrm命令 安装nrm:npm i -g nrm 查看镜像源:nrm ls,带*号的为当前使用的源 添加新镜像:nrm add [镜像源名称] <源的URL路径> 切换镜像源:nrm use [镜像源名称] 删除一个镜像源:nrm del [镜像源名称] …...
Star 10.4k!推荐一款国产跨平台、轻量级的文本编辑器,内置代码对比功能
notepad 相信大家从学习这一行就开始用了,它是开发者/互联网行业的上班族使用率最高的一款轻量级文本编辑器。但是它只能在Windows上进行使用,而且正常来说是收费的(虽然用的是pj的)。 对于想在MacOS、Linux上想使用,…...
iOS 17.2:可以修改消息提示音了
时隔2周之后,苹果今日为开发者预览版用户推送了iOS 17.2 Beta4测试版的更新,已经注册Apple Beta版软件计划的用户只需打开设置--通用--软件更新即可在线OTA升级至最新的iOS 17.2测试版。 本次更新包大小为590M左右,内部版本号为(…...
PTA 一维数组7-3出生年(本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话)
以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的…...
【3】基于多设计模式下的同步异步日志系统-设计模式
详细介绍设计模式 单例模式 ⼀个类只能创建⼀个对象,即单例模式,该设计模式可以保证系统中该类只有⼀个实例,并提供⼀个访问它的全局访问点,该实例被所有程序模块共享。⽐如在某个服务器程序中,该服务器的配置信息存放…...
Metasploit的使用和配置
预计更新 第一章 Metasploit的使用和配置 1.1 安装和配置Metasploit 1.2 Metasploit的基础命令和选项 1.3 高级选项和配置 第二章 渗透测试的漏洞利用和攻击方法 1.1 渗透测试中常见的漏洞类型和利用方法 1.2 Metasploit的漏洞利用模块和选项 1.3 模块编写和自定义 第三章 Me…...
测试用例的设计思路
接到提测单后要做的事情: 测试准备阶段 确认提测单内包含的文件、URL地址可以访问确认需求 (迭代目标、用户故事、用户愿望、问题反馈等)确认回归测试范围、更新测试范围、新增测试范围编写测试点思维导图,过程中有问题及时进行沟通与迭代相关人员约一个…...
HCIP——交换综合实验
一、实验拓扑图 二、实验需求 1、PC1和PC3所在接口为access,属于vlan2;PC2/4/5/6处于同一网段,其中PC2可以访问PC4/5/6;但PC4可以访问PC5,不能访问PC6 2、PC5不能访问PC6 3、PC1/3与PC2/4/5/6/不在同一网段 4、所有PC通…...
大学生如何搭建自己的网站
这篇是我在大一的时候,写过的一篇文章。 前言 作为一名大学生,我觉得搭建个人网站很有意义。 这篇博客讲述的是这个寒假,我是如何从零到搭建好个人网站的过程。我提供的主要是具体的思路,也附带了一些零零散散的细节。时间跨度…...
linux 路由表的优先级
[rootlocalhost cc]# ip rule list 0: from all lookup local 32765: from 10.0.19.24 lookup 4096 32766: from all lookup main 32767: from all lookup default 现在有 4 条路由规则,优先级是怎样的,0 代表最低优先级还是最高优先级 在 Linux 的 IP …...
毕业项目分享
大家好,今天给大家分享112个有趣的Python实战项目,可以直接拿来实战练习,涵盖机器学习、爬虫、数据分析、数据可视化、大数据等内容,建议关注、收藏。 项目名称 主要技术 2023招聘数据分析可视化系统爬虫 7种薪资预测模型 Flas…...
Android启动系列之进程杀手--lmkd
本文概要 这是Android系统启动的第三篇文章,本文以自述的方式来讲解lmkd进程,通过本文您将了解到lmkd进程在安卓系统中存在的意义,以及它是如何杀进程的。(文中的代码是基于android13) 我是谁 init:“大…...
tex中的边框
文章目录 利用tcolorbox宏包给公式加框 利用tcolorbox宏包 tcolorbox可以创建一个盒子的环境,例如: \documentclass{article} \usepackage{tcolorbox} \begin{document}\begin{tcolorbox}[left1cm, right1cm, top0.5cm, bottom0.5cm,colbackblue!10!wh…...
面试题库之JAVA基础篇(三)
final 被final修饰的类不可以被继承。被final修改的方法不可以被重写。被final修改的方法,jvm会尝试内联,以提高运行效率。被final修改的变量不可变,如果修改的是引用,那么引用不可变,引用指向的对象内容可变。被fin…...
网站建设_seo技术支持/网络运营好学吗
接前面。 回到程序调用关系上来: estimate_rel_size -> RelationGetNumberOfBlocks->RelationGetNumberOfBlocksINFork ->Smgrnblocks->mdnblocks... 折腾了一圈,就是为了评估一个表的大小。 那么,我们所获得的block,…...
怎样利用网站做推广/优化网站链接的方法
iOS 杂笔-20(UIView和CALayer的区别与联系) 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提供。两者都有树状层级结构,layer 内部有 SubLayers࿰…...
wordpress欢迎页插件/烟台seo关键词排名
换硬盘如何不重装系统?有用户会给电脑加装一块固态硬盘,那么如何不重装系统直接把系统拷贝过去呢?下面就给大家介绍Win10换硬盘不用重装系统的方法。操作步骤:1、下载分区助手,解压缩后运行应用;2、打开程序后…...
自己弄网站怎么弄/seo优化排名软件
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi n filename :打开文件,并将光标置于第n行首 vi filename :打开文件,并将光标置于最后一行首 vi /pattern filename:打开文件&…...
南京企业网站设计建设/做网上营销怎样推广
/*第一种方法 require:缺点就是如果加载文件过多,需要多个require*/// require(A.CLASS.PHP);// require(B.CLASS.PHP);/*第二种方法__autoloadPHP5在new 一个没有存在的类,会自动调用这个__autoload函数,____autoload只是去include_path寻找…...
如何去门户网站做推广呢/百度公司有哪些部门
<pre name"code" class"html">/* 需求:编写一个js文件,在js文件中自定义一个数组工具对象, 该工具对象要有一个找到最大值的方法,与找元素对应的索引值的方法。 */这个代码在ArrayTool.js文件中 //创建…...