数据库系统概论(二)关系数据库,SQL概述和数据库安全性
作者的话
前言:总结下知识点,自己偶尔看一看。
目录
一、关系模型概述
1.1关系数据结构及形式化定义
1.1.1域(Domain)
1.1.2笛卡尔积(Cartesian Product)
1.1.3关系(Relation)
1.2、关系模式
1.2.1定义关系模式
1.2.2关系模式与关系
1.3关系数据库
二、关系操作
三、关系的完整性
3.1 关系的三类完整性约束
四、关系代数
4.1概 述
4.2传统的集合运算
4.3专门的关系运算
五、SQL概述
5.1SQL的特点
综合统一
高度非过程化
面向集合的操作方式
以同一种语法结构提供多种使用方式
5.2SQL的组成
5.3视图的优点
六、数据库安全性
6.1数据库安全性概述
6.2用户身份鉴别
6.3存取控制
6.4数据库connect、resource、DBA角色
6.5视图机制
6.6审计
一、关系模型概述
1.1关系数据结构及形式化定义
关系模型中数据的逻辑结构是一张二维表
关系数据结构是关系数据库的基础,它是由若干个属性组成的表格,其中每个属性都有一个名字和一个数据类型。关系的描述称为关系模式(relation schema),它可以形式化地表示为 R(U,D,DOM,F),其中 R 为关系名, U 为组成该关系的属性名集合, D 为 U 中属性所来自的域, DOM 为属性向域的映像集合, F 为属性间数据的依赖关系集合
1.1.1域(Domain)
- 域是一组具有相同数据类型的值集合。
- 例如:自然数、整数等都可以是域
1.1.2笛卡尔积(Cartesian Product)
给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn ={(d1,d2,…,dn)|diDi,i=1,2,…,n}
其实就是简单的排列组合(概念太长难以理解)(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)
(d1,d2,…,dn)中的每一个值di叫作一个分量
一个域中允许有的不同的取值个数成为基数
在数据库中,基数(Cardinality)是指一个列中不同值的个数。
例如,如果一个表中有一个列叫做“性别”,其中有10个人的性别是男性,20个人的性别是女性,那么这个列的基数就是2。
1.1.3关系(Relation)
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)元组
关系中的每个元素是关系中的元组,通常用t表示。
单元关系与二元关系
当n=1时,称该关系为单元关系或一元关系
当n=2时,称该关系为二元关系属性
关系中不同列可以对应相同的域
为了加以区分,必须对每列起一个名字,称为属性(Attribute)
n目关系必有n个属性候选码
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
简单的情况:候选码只包含一个属性
全码
最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码
主码
若一个关系有多个候选码,则选定其中一个为主码三类关系包括:基本表、查询表、视图表
1.2、关系模式
1.2.1定义关系模式
关系模式是对关系的描述
通常可以简记为
R (U) 或 R (A1,A2,…,An)
R: 关系名
A1,A2,…,An : 属性名
1.2.2关系模式与关系
关系模式
对关系的描述
静态的、稳定的
关系
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
1.3关系数据库
关系数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解。在关系数据库中,表中的每一行都代表一条记录,每条记录都具有一个唯一的 ID(又被称为键),而表中的列则用于存储数据的属性
二、关系操作
关系操作是指对关系数据库进行的一些操作,包括查询操作和插入、删除、修改操作两部分。其中,查询操作中的选择、投影、并、差、笛卡尔积是5种基本操作,其他操作可以用基本操作来定义和导出
三、关系的完整性
3.1 关系的三类完整性约束
实体完整性
若属性A是基本关系R的主属性,则属性A不能取空值参照完整性
1. 关系间的引用
2. 外码
外码是指一个关系中的属性集合,它的值必须在另一个关系的主键中出现过。举个例子,如果有学生表、选课表和课程表三个表,选课表中的学生编号和课程编号就是外码,它们必须在学生表和课程表的主键中出现过。
3. 参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值用户自定义完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
四、关系代数
4.1概 述
4.2传统的集合运算
- 并 U 由属于R或属于S的元组组成
- 差 - 由属于R而不属于S的所有元组组成
- 交 ∩ 由既属于R又属于S的元组组成
- 笛卡尔积 笛卡尔积是指两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。例如,如果X={1,2},Y={red,white},则X×Y={(1,red),(1,white),(2,red),(2,white)}。
4.3专门的关系运算
相关记号
默认库
1.选择
2.投影
3.连接
一般连接
![]()
等值连接(equijoin)
自然连接(Natural join)
![]()
外连接 如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。
左外连接 如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
右外连接 如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。
4.除运算
五、SQL概述
5.1SQL的特点
综合统一
集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
可以独立完成数据库生命周期中的全部活动
用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。
数据操作符统一
高度非过程化
SQL只要提出“做什么”,无须了解存取路径。
存取路径的选择以及SQL的操作过程由系统自动完成。面向集合的操作方式
操作对象、查找结果可以是元组的集合
一次插入、删除、更新操作的对象可以是元组的集合以同一种语法结构提供多种使用方式
SQL是独立的语言
能够独立地用于联机交互的使用方式SQL又是嵌入式语言
SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用
5.2SQL的组成
(1)数据操作语言(The Data Manipulation Language,DML):该SQL语句允许用户提出查询,以及插入、删除和修改行。本书这章中将介绍插入、删除和修改行的DML命令。
(2)数据定义语言(The Data Definition Language DDL):该SQL语句支持表的创建、删除和修改,支持视图和索引的创建和删除。完整性约束能够定义在表上,可以是在创建表的时候,也可以是在创建表之后定义约束。
(3)数据控制语言(Data Control Language,DCL):该SQL语句的目标是管理用户对数据库对象的访问。
(4)触发器和高级完整性约束:新的SQL标准包括对触发器的支持,当对数据库的改变满足触发器的条件时,DBMS就执行触发器。
(5)嵌入式和动态SQL:嵌入式的SQL特征使得可以从宿主语言(例如C或者COBOL)中调用SQL代码。动态的SQL特征允许在运行时构建查询。
(6)客户-服务器执行和远程数据库提取:这些命令控制一个客户应用程序如何连接到一个SQL数据库服务器上,或者如何通过网络来访问数据库的数据。
(7)事管务理:各种命令允许用户显式地控制一个事务如何执行。这些命令将在后面章节中介绍。
5.3视图的优点
1、视图能够简化用户的操作
2、视图使用户能以多种角度看待统一数据
3、视图对重构数据库提供了一定程度的逻辑独立性
4、视图能够对机密数据提供安全保护
5、适当利用视图可以更清晰的表达查询
六、数据库安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
6.1数据库安全性概述
数据库不安全因素
- 非授权用户对数据库进行恶意存取和破坏
- 数据库中的敏感信息泄露
- 安全环境的脆弱性(计算机系统,网络系统的安全性)
6.2用户身份鉴别
用户标识由用户名和用户标识号组成
6.3存取控制
6.4数据库connect、resource、DBA角色
6.5视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义
6.6审计
启用一个专用的审计日志将用户对数据库的所有操作记录在上面
审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有审计功能
审计功能是可选的:审计很费时间和空间 || DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能 || 审计功能主要用于安全性要求较高的部门
审计事件:
服务器事件:审计数据库服务器发生的事件
系统权限:对系统拥有的结构或模式对象进行操作的审计 ,要求该操作的权限是通过系统权限获得的
语句事件:对SQL语句,如DDL、DML、DQL及DCL语句的审计
模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计
相关文章:

数据库系统概论(二)关系数据库,SQL概述和数据库安全性
作者的话 前言:总结下知识点,自己偶尔看一看。 目录 一、关系模型概述 1.1关系数据结构及形式化定义 1.1.1域(Domain) 1.1.2笛卡尔积(Cartesian Product) 1.1.3关系(Relation) …...

【VM服务管家】VM4.x算子SDK开发_3.1 环境配置类
目录 3.1.1 环境配置:CSharp算子SDK开发环境配置方法3.1.2 算子封装:使用C封装算子SDK的方法3.1.3 异常中断:算子SDK软件运行报错“托管调试助手”中断的解决方法3.1.4 深度学习:GPU运行深度学习算子引发StackOverFlow异常的方法 …...
Java核心书籍1
1.《Java核心技术》是一本深入浅出的Java编程指南,适合初学者和有一定Java编程基础的读者。这本书的主要作者是Cay S. Horstmann和Gary Cornell,他们都是Java领域的知名专家。这本书的最新版本是第10版,其中涵盖了Java SE 9、10和11的新特性&…...
crontab详细用法 定时任务
使用crontab可以在指定时间执行一个shell脚本或者一系列Linux命令 crontab的使用方法 方法1.使用crontab命令 例如添加一个新的或者编辑已有的,使用: crontab -e就可以进入配置文件.此时配置crontab的执行者是当前登入用户,如果当前有用户是root,需要为其他用户配置,可以使用…...

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局
查看原文>>>基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局 目录 第一章、生态安全评价理论及方法介绍 第二章、平台基础 第三章、数据获取与清洗 第四章、基于USLE模型的土壤侵蚀评价 第五章、基于风蚀修正模型的防风固…...
开心档之MySQL 创建数据类型
MySQL 数据类型 MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型 MySQL 支持所有标准 SQL 数值数据类型。 这些类型包括严格数值数据类型(INTEGER、S…...

【C++ Primer(第5版) 课后习题题目及答案 第一章】
C Primer5th 课后习题答案 第一章 1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系…...

【英语】100个句子记完7000个托福单词
其实主要的7000词其实是在主题归纳里面,不过过一遍100个句子也挺好的,反正也不多。 文章目录 Sentence 01Sentence 02Sentence 03Sentence 04Sentence 05Sentence 06Sentence 07Sentence 08Sentence 09Sentence 10Sentence 11Sentence 12Sentence 13Sent…...

六、CANdelaStudio入门-通信参数编辑
本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的通信参数编辑,欢迎各位朋友订阅、评论,…...

【致敬未来的攻城狮计划】— 连续打卡第十三天:FSP固件库开发启动文件详解
系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…...
Java中mybatis是否支持延迟加载?延迟加载的原理是什么?
是的,MyBatis支持延迟加载。延迟加载是指在查询对象时,只加载其基本属性,而将关联对象的数据暂不加载,等到真正需要使用关联对象时再去查询加载其数据的一种技术。 MyBatis通过在映射文件中配置lazyLoadingEnabled属性来开启延迟加…...

真题详解(磁盘)-软件设计(五十八)
真题详解(MTTR)-软件设计(五十七)https://blog.csdn.net/ke1ying/article/details/130354940 1、2021年上半年 解析: 哈希地址 0 1 2 3 4 5 6 7 8 9 10 构建哈希表 第一步:3%11 3 ,放在哈希地址3的位置…...

MATLAB连续时间信号的实现和时域基本运算(八)
1、实验目的: 1)熟悉常用连续时间信号的实现方法; 2)掌握连续时间信号的时域基本运算; 3)掌握实现基本函数及其运算的函数的使用方法; 4)加深对信号基本运算的理解。 2、实验内容&am…...
MongoDB 聚合管道中使用字符串表达式运算符
字符串表达式运算符主要用于实现字符串操作,主要包括了大小写转换、字符串截取、拼接、替换等 一、准备工作 初始化字符串数据 db.strings.insertMany([{ "_id": "1", "comment": " Abc" },{ "_id": "2&…...

用Python分析周杰伦歌曲并进行数据可视化
大家好,今天我们用python分析下周杰伦歌曲。为了尽量完整地呈现从原始数据到可视化的过程,接下来我们会先简单讲解数据的预处理过程,即如何将 JSON 数据转化为Excel 格式,以及如何对周杰伦的歌曲进行分词。 本案例中的歌词数据来…...
培训技能 GET
技巧 调整语速和语调:讲解者需要注意语速和语调的调整,以便让听众更好地理解和接受内容。 使用案例和实例:讲解者可以使用案例和实例来帮助听众更好地理解和记忆内容,同时也可以增强听众的兴趣和参与度。 互动式讲解:…...
数据库安全性案例分享
1 概述1.1 适用范围 本规范明确了Oracle数据库安全配置方面的基本要求。 1.2 符号和缩略语 缩写 英文描述 中文描述 DBA Database Administrator 数据库管理员 VPD Virtual Private Database 虚拟专用数据库 OLS Oracle Label Security Oracle标签…...

2023,你了解Kafka吗?深入详解
- 消息队列的核心价值 - 解耦合。 异步处理 例如电商平台,秒杀活动。一般流程会分为:1: 风险控制、2:库存锁定、3:生成订单、4:短信通知、5:更新数据。 通过消息系统将秒杀活动业务拆分开&#x…...

奇舞周刊第 491 期 初探 Web 客户端追踪技术
记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 初探 Web 客户端追踪技术 浏览器的追踪技术是一把双刃剑,它建立了用户个人信息和网站之间的连接,合理地使用能够大大提高用户的体验,但是同时也…...

【Java】什么是SOA架构?与微服务有什么关系?
文章目录 服务化架构微服务架构 我的一个微服务项目,有兴趣可以一起做 服务化架构 我们知道,早期的项目,我们都是把前后端的代码放在同一个项目中,然后直接打包运行这个项目,这种项目我们称之为单体项目,比…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...

未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...
iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)
崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题,不一定会立刻崩,但一旦积累,就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能,而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...