第11章 数据库技术(第一部分)

一、数据库技术术语

(一)术语

1、数据

  • 数据描述事物的符号
  • 描述一个对象所用的标识,可以文字、图形、图像、语言等等

2、信息

  • 现实世界对事物状态变化的反馈。
  • 可感知、可存储、可加工、可再生。
  • 数据是信息的表现形式和载体,信息是加载于数据之上,对数据作具有含义的解释。

3、数据库

  • 按照数据结构来组织、存储和管理数据的仓库。
  • 数据库时按照一定的数据模型组织、存储和应用的数据的集合。
  • 数据间联系紧密、数据冗余度小、数据独立性高、容易扩展、便于共享。

(二)相关术语

1、关系(单一数据结构、表文件)

  • 关系模型的逻辑结构是一张二维表,这个二维表就是关系。
  • 一个关系对应一张表。
  • 关系数据库的表采用二维表格存储数据,按行与列排列的具有一些信息的逻辑组。

2、属性(字段)

  • 每一列称为一个字段,每个字段描述所含有的数据的意义。
  • 数据表的设计实际上是对字段的设计。
  • 字段可以包含各种字符、数字甚至图形
  • 为每个字段分配一个数据类型

3、元组(记录)

  • 表中的一行称为一个元组或一条记录。

4、分量

  • 给定一个元组后,这个元组的第一个属性就是该元组的第一个分量
  • 元组中的一个属性就是一个分量,一系列元组同一分量的集合就是关系属性(二维表中的列)。

5、关系模式

  • 对关系的描述,记为R(A1, A2, ···, An),关系名(属性1,属性2,……,属性n)

6、候选码/候选键

  • 能够唯一标识关系中某一元组的一个属性或属性集
  • 需要满足:唯一性、最小性(构成候选码的属性个数最少)

7、主码/主键/关系键/关键字

  • 从候选码中选一个作为查询、插入、删除元组操作的操作变量
  • 最具代表性
  • 实线标识

8、外码/外键

  • 涉及两个关系
  • 在一个关系中的属性,在另一个关系中作主键,为外键。
  • 虚下划线标识

9、主属性/非主属性

  • 主属性:包含在任何一个候选码的各个属性称为主属性
  • 非主属性:不包含在任何候选码中的属性

10、全码

  • 一个关系中把所有属性放在一起组成一个属性组才能唯一标识关系中的每一元组,这样的属性组叫做全码(ALL KEY)。

二、三级模式/两级映像

在这里插入图片描述

(一)三级模式

有效组织、管理数据,提高数据库的逻辑独立性和物理独立性。

1、外模式(子模式/用户模式,对应于用户级 用户观)

  • 可以有多个
  • 从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据,数据库中局部数据的逻辑结构和特性的描述。
  • 用户通过外模式描述语言来描述、定义对应于用户的数据记录,也可使用DML对这些数据记录进行操作。
  • 对应关系数据库中的视图

2、模式(概念模式/逻辑模式,对应于概念级 整体观)

  • 数据库中全体数据全局逻辑结构和特性的描述。
  • 由DDL(数据模式描述语言,Data Description Language)描述、定义的
  • 对应关系数据库中的基本表

3、内模式(存储模式/物理模式,对应于物理级 存储观)

  • 只有一个
  • 数据在数据库系统内部物理结构和存储结构的描述。
  • 对应关系数据库中的文件

(二)两级映像

对象关系映射(ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。

1、外模式/模式的映像

  • 保证数据与应用程序间的逻辑独立性
    应用程序更改时,可不改模式。
    模式更改时,不影响数据库的程序。
  • 实现外模式到模式的相互转换。

2、模式/内模式的映像

  • 保证数据与应用程序间的物理独立性
    应用程序、外模式、模式更改,不改内模式。
    内模式更改时,不用改应用程序、外模式、模式。
  • 实现模式到内模式的相互转换

(三)数据库管理系统

数据库管理系统

1、数据库的安全性

  • 防止不合法、非法用户去使用数据库对数据造成破坏泄露等

2、数据库的完整性

  • 数据库的正确性和相容性,防止合法用户使用数据库时,向数据库里加入不符合语义的数据。

3、并发控制

  • 多用户访问时,并发控制负责协调事务的执行能力,保证数据库完整性和一致性不被破坏。

4、故障恢复

  • 数据库发生故障,将其恢复到发生故障前的一致性的状态的情况。

三、完整性约束

防止的是对数据的意外破坏。

(一)实体完整性

  • 在关系R中,主属性不能为空。
  • 主键是已经作为约束的候选键。

(二)用户自定义完整性

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。
  • 比如年龄必须为大于0小于150的整数。

(三)参照完整性/引用完整性

  • 当前关系外键的取值必须等于另一个关系中的一个主键值、或者为空(null)。
  • 规定,若F是基本关系R的外码,它与基本关系S的主码K,相对应(基本关系R和S不一定是不同的关系),则R中每个元组在F上的值必须为:或者取空值;或者等于S中某个元组的主码值

四、数据库设计

(一)分布式数据库

1、透明性

用户只用关心业务,不用关系数据库相关问题。

2、透明性分类

  • 分片透明
    用户不用关心数据在数据库中如何被分割成片,但会通过应用程序从数据库取到后完整呈现给用户。
  • 复制透明
    分布式数据库分布到网络中不同节点,节点间的数据需要复制同步,用户不需要关心如何复制同步。
  • 位置透明
    用户不需要关注所操作的数据存放在哪个位置。
  • 局部映像透明性(逻辑透明)
    最低层次的透明
    局部数据模型透明,即用户或应用程序无需知道局部使用是哪种数据模型

(二)DBA(数据库管理员)

职责

职责

(三)数据库设计的阶段

1、用户需求分析

2、概念结构设计

  • 主要工具E-R模型,生成E-R图

3、逻辑结构设计

  • 将E-R图转成对应关系数据库支持的数据库表、表之间的关系情况等。
  • 逻辑结构设计是在概念结构设计的基础上进行的数据模型设计,可以是层次、网状模型和关系模型。由于当前的绝大多数DBMS都是基于关系模型的,E-R方法又是概念结构设计的主要方法,如何在全局E-R图基础上进行关系模型的逻辑结构设计成为这一阶段的主要内容。
  • 在数据库逻辑结构设计阶段,需要需求分析阶段形成的需求说明文档、数据字典和数据流图作为设计依据。

4、物理结构设计

  • 涉及数据存储结构及存储结构控制等

五、E-R模型

E-R图:实体关系图。

(一)3要素

1、实体(E)

  • 客观存在的对象,对象间相互区分

2、联系(R)

  • 对象与对象间的关系。

3、属性

  • 实体具体的一个特征,通过一系列特征反映实体状态。
  • 有多种类型。

(二)图例

图例

(三)实体的属性

属性是一个实体具体的一个特征,一系列特征能描述一个对应的实体。

1、简单属性

  • 一个不可分割的属性,是原子的。

2、复合属性

  • 一个可细分为一系列简单属性构成的属性。

3、单值属性

  • 针对一个元组来讲,某一个分量的取值是单一的。
  • 二进制的表示,要么取值0,要么取值1。

4、多值属性

  • 针对一个元组来讲,某一个分量的取值是多个的。

5、NULL属性

  • 表示空,数据库中没有输入数据的对象。

6、派生属性

  • 根据其他属性的值计算出值的属性。

(四)E-R模型的联系

联系

1、一对一(1:1)

在这里插入图片描述
在这里插入图片描述

2、一对多(1:n)/(1:*)

在这里插入图片描述
在这里插入图片描述

3、多对多(m:n)/(:

在这里插入图片描述
在这里插入图片描述

六、函数依赖公理系统

(一)函数依赖

1、函数依赖

函数依赖

  • 大的决定小的

2、完全函数依赖

  • 右侧被决定的一方完全只依赖于左侧。

3、部分函数依赖

  • 右侧被决定的一方只依赖于部分左侧。

4、传递函数依赖

  • A决定B,B决定C===A决定C(C依赖于A)

(二)函数依赖的公理系统

公理系统

七、规范化

(一)确定候选码

  • 首先应该找出F中所有的决定因素,即找出出现在函数依赖规则中“→”左边的所有属性,组成集合U1
  • 再从U1中找出一个属性或属性组K,运用Armstrong公理系统及推论,使得K→U,而K真子集K’→U不成立
  • 这样就得到了关系模式R的一个候选码,找遍U1属性的所有组合,重复过程(2),最终得到关系模式R的所有候选码
  • 注意:如果已经找到了一个候选码K,K是U1的一个子集,那么找下一个候选码时,就不需要考虑 K与U1中其他属性的组合

(二)判定1~4NF的主要依据

  • 1NF
    每个分量是不可再分割的数据项

  • 2NF
    1NF的基础上,非主属性对码不存在部分依赖

  • 3NF
    2NF的基础上,非主属性对码不存在传递依赖

  • BCNF
    1NF基础上,主属性对码不存在部分和传递依赖

  • 4NF
    全键表中,键的一部分可以确定至多一个其他字段的多个值

    若关系模式R属于1NF,R的每个非平凡多值依赖X→→Y且Y不属于X时,X必含有码,则关系模式R(U,F)属于4NF。如:若实体中存在多值属性,那么将E-R图转为关系模式时将实体的码分别和每个多值属性独立构成一个关系模式得到的关系模式属于4NF

八、SQL语句

(一)创建视图

1、概念

  • 视图相当于一个虚拟表,本身不存储数据,本质是存储起来的select语句
  • 视图本身的删除,不会导致基表中数据的删除。
  • 大型项目考虑使用视图。

2、作用

  • 对机密数据提供安全保护,屏蔽后台数据复杂性;
  • 根据用户需求,定制特别的数据;
  • 以多种角度看待同一数据;
  • 对重构数据库提供一定逻辑独立性。

3、语法

CREATE VIEW 视图名
	AS SELECT 子句
	WITH CHECK OPTION

建立计算机系CS学生的视图

CREATE VIEW vwCS
	AS SELECT Sno, Sname,  Sage FROM student
		WHERE Sdept= 'cs'
	WITH CHECK OPTION

(二)select语法

SELECT <列名>[···n]
	FROM <表名|视图名> [,···n]
	[WHERE <条件表达式>]

1、简单查询

  • 查询员工号为2的员工的姓名和工龄
SELECT 姓名, 工龄
	FROM 员工表
	WHERE 员工号=2

2、连接查询

  • 查询部门名为“企业信息部”,且在2022年2月2日后入职的员工工号、姓名和性别
SELECT 员工号, 姓名, 性别
	FROM 员工表, 部门表
	WHERE 员工表.部门号=部门表.部门号
		AND 部门.名称='企业信息部'
		AND 参加工作时间>'2022-02-02'
  • 字符类型,日期类型的数据需要使用单引号

(三)聚集函数

1、函数

函数名(列名)

  • 平均值AVG
  • 最小值MIN
  • 最大值MAX
  • 求和SUM
  • 计数COUNT

2、查询员工总数

SELECT COUNT (*) AS 雇员总数
	FROM 员工表

3、查询部门人员少于5个的部门号

SELECT 部门号, COUNT (部门号)
	FROM 员工表
	GROUP BY 部门号
	HAVING COUNT (部门号)<5

(四)授权语句

1、语法

GRANT <权限>[,··· n]
	ON <对象类型><对象名>
	TO <用户>[,··· n]
	WITH GRANT OPTION

2、将员工表查询、更新的权利赋予给用户U1

GRANT SELECT, UPDATE
	ON TABLE 员工 TO U1

3、将对供应商S的插入权限赋给用户U1,并允许将此权限赋给其他用户

GRANT INSERT ON TABLE S 
	TO U1
	WITH GRANT OPTION

九、关系代数运算

(一)关系代数运算符

运算符

(二)笛卡尔积

定义
例子

  • 将笛卡尔积转换成关系数据库的二维表
    二维表

(三)广义笛卡尔积

广义笛卡尔积

(四)投射

投射

(五)选择

选择

(六)连接

连接

1、θ连接

θ连接

2、自然连接

自然连接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

github托管静态页面

免费在线上空间&#xff0c;不用简直就是浪费&#xff0c;关键还不限流量赶紧去折腾一下 这是搭建的GitHub托管网页&#xff0c;由于是GitHub的服务器&#xff0c;国内访问会非常&#xff01;慢 下载 Watt Toolkit 这里我建议下载一个软件 Watt Toolkit 它是一个开源跨…

QT——简易计算机(从0开始)

目录 一、题目描述&#xff1a; 二、创建工程&#xff1a; 三、UI界面设计&#xff1a; 四、程序编写&#xff1a; 五、总程序&#xff1a; 六、windows可执行文件 七、实现效果 一、题目描述&#xff1a; 创建一个简单的图形用户界面(GUI),包括一个文本框用于显示计算结…

Linux(Centos 7)环境下安装wget,并且更换阿里云镜像

Linux(Centos 7) Minimal 安装后&#xff0c;由于没有预装wget&#xff0c;在使用wget命令去下载安装相关应用时&#xff0c;提示&#xff1a;“wget: command not found” 先在Linux服务器窗口中&#xff0c;输入如下命令&#xff0c;检查Linux服务器有没有安装过wget。 rpm -…

【网站项目】戒烟网站

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难&#xff0c;对于Ubuntu或Debian系统&#xff0c;使用命令sudo apt install python3&#xff1b;对于CentOS、Red Hat或Fedora系统&#xff0c;使用命令sudo yum install python3。 如何在Linux上安装Python&#xff1f; 确切的安装步骤有所不同&am…

【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解

一、线程概念 线程是进程的一个执行分支&#xff0c;是在进程内部运行的一个执行流。下面将从是什么、为什么、怎么办三个角度来解释线程。 1、什么是线程 上面是一张用户级页表&#xff0c;我们都知道可执行程序在磁盘中无非就是代码或数据&#xff0c;更准确点表述&#xff0…

Python基础学习之记录中间文件

倘若想记录代码运行过程中的结果文件&#xff0c;那么以下函数仅供参考 代码示例&#xff1a; import os import datetime import sys import pandas as pd# 定义总的文件夹路径 base_folder E:\\D\\log\\product_data_compare_log# 定义一个函数来创建带时间戳的文件夹 def…

Python量化炒股的财务因子选股

Python量化炒股的财务因子选股-财务因子选股 选股是股市投资的第一步&#xff0c;是最基础的一步&#xff0c;也是最重要的一步。 初识财务因子选股 量化选股是利用数量化的方法选择股票组合&#xff0c;期望该股票组合能够获得超越基准收益率的投资行为。总的来说&#xff…

el-tabs作为子组件使用页面空白

文章目录 前言一、问题展示二、源码分析三、解决方案 前言 如果el-tabs是子组件&#xff0c;父组件传值value / v-model为空字符&#xff0c;这个时候在watch中监听value / v-model就会发现监听的数据会被调用为‘0’。一定是作为子组件引用&#xff0c;且在watch进行监听&…

【webrtc】MessageHandler 7: 基于线程的消息处理:切换main线程向observer发出通知

以当前线程作为main线程 RemoteAudioSource 作为一个handler 仅实现一个退出清理的功能 首先on message的处理会切换到main 线程 :main_thread_其次,这里在main 线程对sink_ 做清理再次,在main 线程做出状态改变,并能通知给所有的observer 做出on changed 行为。对接mediac…

OpenNJet : 下一代云原生应用引擎

本心、输入输出、结果 文章目录 OpenNJet &#xff1a; 下一代云原生应用引擎前言OpenNJet 技术架构安装 OpenNJet为什么有了 OpenNJetOpenNJet 和 NGINX 是什么关系什么是云原生应用引擎&#xff1f;OpenNJet 的有哪些优势OpenNJet 的有哪些优势 OpenNJet 与国产化OpenNJet 使…

【团体程序设计天梯赛】往年关键真题 L2-036 网红点打卡攻略 模拟 L2-037 包装机 栈和队列 详细分析完整AC代码

【团体程序设计天梯赛 往年关键真题 详细分析&完整AC代码】搞懂了赛场上拿下就稳 【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析&完整AC代码】&#xff08;L2-001 - L2-024&#xff09;搞懂了赛场上拿下就稳了 【团体程序设计天梯赛 往年关键真题 25分题合…

初学React基础

最近准备跟着黑马React学一下React&#xff0c;扩充一下技术面&#xff0c;打算还是以一边学习一边记笔记为主&#xff0c;进行学习&#xff01; 1. React介绍 1.1. React是什么&#xff1f; React是由FaceBook现在称&#xff08;Meta&#xff09;开发的开源 JavaScript 库&a…

SpringCloudStream 3.x rabbit 使用

1. 前言 今天带来的是SpringCloudStream 3.x 的新玩法&#xff0c;通过四大函数式接口的方式进行数据的发送和监听。本文将通过 rabbitMQ 的方式进行演示 3.x版本后是 可以看到 StreamListener 和 EnableBinding 都打上了Deprecated 注解。后续的版本更新中会逐渐替换成函数式…

如何批量修改文件的时间属性?修改创建时间,修改时间和访问时间

一&#xff0c;前言 在Excel中&#xff0c;修改文件的访问时间、创建时间和修改时间通常不是一个直接的功能。但是&#xff0c;我们可以通过一些间接的方法和工具来实现这一目标。请注意&#xff0c;直接修改这些时间戳可能会影响文件的完整性和安全性&#xff0c;因此在进行任…

Python 与 TensorFlow2 生成式 AI(四)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第九章&#xff1a;文本生成方法的崛起 在前几章中&#xff0c;我们讨论了不同的方法和技术来开发和训练生成模型。特别是在第六章“使用 …

WIN10 anaconda 安装 CondaError: Run ‘conda init‘ before ‘conda activate‘

1 下载 https://www.anaconda.com/download/success 2 安装 3 修改环境变量 安装后修改环境变量 4 winrun 进入命令窗口 输入cmd 输入 conda info 5 创建 虚拟环境 conda create -n yolov8 python3.8 -y 6 CondaError: Run ‘conda init’ before ‘conda activate’ c…

[Java、Android面试]_24_Compose为什么绘制要比XML快?(高频问答)

欢迎查看合集&#xff1a; Java、Android面试高频系列文章合集 本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&am…

GPT3 终极指南(二)

原文&#xff1a;zh.annas-archive.org/md5/6de8906c86a2711a5a84c839bec7e073 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第五章&#xff1a;GPT-3 作为企业创新的下一步 当一个新的创新或技术转变发生时&#xff0c;大公司通常是最后一个采纳的。它们的等级结构…

将聊天记录与 LangChain 集成:为提升对话机器人体验提供了一种变革性的解决方案

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…