当前位置: 首页 > news >正文

数据库系统概论(二)关系数据库,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. 域是一组具有相同数据类型的值集合。
  2. 例如:自然数、整数等都可以是域

1.1.2笛卡尔积(Cartesian Product)

给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn ={(d1,d2,…,dn)|diDi,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传统的集合运算

  1. 并 U        由属于R或属于S的元组组成
  2. 差 -     由属于R而不属于S的所有元组组成
  3. 交    ∩   由既属于R又属于S的元组组成
  4. 笛卡尔积   笛卡尔积是指两个集合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

技巧 调整语速和语调:讲解者需要注意语速和语调的调整,以便让听众更好地理解和接受内容。 使用案例和实例:讲解者可以使用案例和实例来帮助听众更好地理解和记忆内容,同时也可以增强听众的兴趣和参与度。 互动式讲解&#xff1a…...

数据库安全性案例分享

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架构?与微服务有什么关系?

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

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...