《数据库系统》知识点

本文介绍了数据库系统的基础知识,包括数据库的定义、数据库管理系统的功能、SQL语言、关系模型和完整性规则。详细阐述了关系代数、元组演算和域演算,并探讨了数据库设计,如E-R模型、函数依赖和数据范式。还提到了数据库的更新操作、视图和模式分解等实用概念。
摘要由CSDN通过智能技术生成

概述:

Table:以按行按列形式组织及展现的数据
Database:相互之间有关联关系的Table的集合
在这里插入图片描述
数据库系统:数据库+数据管理系统 +数据库应用+数据库管理员

数据库管理系统的功能:

   1.完整性控制
   2.并发控制
   3. 通讯控制
   4.故障恢复
   5.数据字典管理

从用户角度看:数据库定义、操纵、控制、维护

数据库系统语言:

DDL(数据库定义、描述语言):定义数据库中Table的名称、标题(格式),创建表
DML(数据库操作语言):向数据库的Table中增加/删除/更新数 据及对数据进行查询、检索、统计等
DCL(数据库控制语言):控制权限、约束
DQL(数据查询语言)

数据库维护:转储/恢复/重组/性能监测/分析,运行日志维护、编辑、打印,一般由数据库管理员(DBA)使用

SQL语言:结构化的数据库语言

数据库语言可以嵌入到高级语言中使用
  修改数据是在内存实现的,要点执行,才会保存到磁盘上
  DBMS也可以直接修改磁盘数据(但最好别这样)

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

三大经典模型:关系模型(表)、层次模型(树形结构)、网状模型(有向图)

简要发展史:

第一阶段:摸索 研制成功格式文件系统 正式提出“Data Base”,开始研究
第二阶段:确立 提出三大数据库模型,形成理论基础:关系数据库理论
第三阶段:成熟 提出标准化数据库结构模型
第四阶段:深化 数据库方法逐步理论化

第一代数据库系统是指基于网状模型或层次模型的数据库系统
第二代数据库系统基于关系模型的数据库系统

三级模式、二层模式:

外模式(用户模式、子、局部模式)
概念模式(全局、逻辑模式)
内模式(存储模式、物理模式)
     模式又称概念模式
    外模式到概念模式:逻辑独立性 E-C
    概念模式到内模式:物理独立性 C-I
   模式是对数据本身结构的抽象,数据模式是对模式本身结构的抽象

关系模型:

“关系”-结构

列的取值范围“域”:一组相同数据类型的值得集合 个数称为基数
“元组”及所有可能组合成的元组:笛卡尔积
元组(d1,d2,…,dn)的每一个值di叫做一个分量
若di的基数为mi,则笛卡尔积的基数,即元组个数为m1×m2×…×mn
笛卡尔积 是由n个域形成的所有可能的n元组的集合
关系:笛卡尔积的子集

关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分

关系模式R(A1:D1,A2:D2 ,…,An:Dn)中属性向域的映象
例:Student(S# char(8),Sname char(10),Ssex char(2),Sage integer, D# char(2), Sclass char(6) )
关系模式是关系的结构

关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的

    列位置互换性:区分哪一列是靠列名
	行位置互换性:区分哪一行是靠某一或某几列的值(关键字/键字/码字)

任意两个元组不能完全相同

键,码概念

  • 候选码(键):唯一标识一个元组的,可有1个或多个属性
    若有多个候选码,则选择1个做主码
  • 主属性:包含在任何1个候选码的属性,其他属性称为非主属性
    最简单:候选码只有1个属性
    全码:候选码包含所有属性
  • 外码(键):一个属性组不是R的候选码,但是另一个关系的主码、可以是R的主属性或非主属性
    关系的任何属性都是不可再分的

数据的基本操作

在这里插入图片描述

完整性:

完整性:数据的有效性。
实体完整性:表中的主键必须为有效值。
参照完整性:一个表中的外码必须与另一个表中的主键相对应,且为有效值,可为空值
用户自定义完整性: 用户针对具体的应用环境定义的完整性约束条件

关系运算之关系代数

在这里插入图片描述五种基本运算:并、差、选择、投影、笛卡尔积

纯关系操作:选择(筛选条件)、投影(从关系R中选出属性包含在A中的列构成)、更名、连接、除
并相容性:R和S的属性数目必须相同且对应域相同
广义笛卡尔积 基数(元组个数):是积 度数(属性个数):是和

θ-连接,以一定条件组合两个集合;
在这里插入图片描述
等值连接:选择R中属性A与S中属性B上值相等的元组(相同值的属性名不同)
在这里插入图片描述
自然连接是一种特殊的等值连接,去掉共同属性那列
θ-连接和等值连接不需要去除共同属性,自然连接需要去除共同属性

书写关系代数表达式的基本思路:
在这里插入图片描述

除操作:查询。。。。全部的
在这里插入图片描述例:
在这里插入图片描述外连接:将找不到匹配的元组 看成空值放在结果关系中
在这里插入图片描述

关系演算之关系元组演算

以元组为变量,以元组为基本处理单位,先找到元组,然后再找到元组分量,进行谓词判断
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

关系演算之关系域演算

以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的元组是否存在或是否满足谓词判断。
在这里插入图片描述元组演算和域演算、关系代数可以等价互换
三种关系运算都可说是非过程性的,但相比之下:域演算的非过程性最好,元组演算次之,关系代数最差

SQL

是集DDL\DML\DCL与一体的数据库语言
在这里插入图片描述在这里插入图片描述
create database 数据库名
create table (列名 数据类型 [Primary key |UNIQUE(候选键、可有多个)] [not null],列名 数据类型【非空】)

在这里插入图片描述

         insert into 表名 [(列名[,列名]… ]values (值[, 值], …) ;
         若表名后的所有列名省略,则values后的值的排列,须与该表存储中的列名排列一致

在这里插入图片描述在检索结果中要求无重复元组, 是通过DISTINCT保留字的使用来实现的
在这里插入图片描述
模糊搜索:
在这里插入图片描述
注意:一个汉字占两个字符,张某某,应该表示为:张_ _ _ _

若两个表的属性名相同,则采用 表名.属性名 来限定
在这里插入图片描述

  • 子查询: in 、θ some / θ all谓词(没有any)
    在这里插入图片描述在这里插入图片描述相关子查询:外层向内层传递参数

表达式 = some (子查询) 等价于 表达式 in (子查询)
表达式 not in (子查询) 等价于 表达式 not in (子查询)

[not] Exists谓词:相关子查询  子查询结果有无元组存在

  取外层查询的第一个元组,根据它与内层查询相关的属性值处理内层查询,若where子句返回true,则将此元组
放入结果表,然后取下一个元组,重复这个过程直到全部检查完为止。

在这里插入图片描述

  • 结果计算与聚集函数:
    select-from-where语句中, select子句后面不仅可以是列名,而且可以是一些计算表达式或聚集函数,表明在选择和投影的同时直接进行一些运算:
    在这里插入图片描述内置聚集函数:COUNT、SUM、AVG、MAX、MIN
    分组:Group by S#
    聚集函数不能用于where子句中,若要进行条件过滤,使用Having子句(需要Group by子句支持、检查每一分组内的)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 并、交、查的处理
    在这里插入图片描述
  • 空值处理
    在这里插入图片描述在这里插入图片描述
  • 内连接、外连接
    在这里插入图片描述在这里插入图片描述
    更新:Insert/Update/Delete

Insert into 表名(列) [values(值)]
注意:当新增元组时:如果不符合用户定义的完整性约束条件,将不会执行新增条件。

更新:Update 表名 Set 列名 = 表达式 |(子查询)【【,列名 = 表达式 |(子查询)】。。。】【Where 条件表达式】
删除: Delete From 表名 【where 条件表达式】 删除表中元组

  • 视图
    在这里插入图片描述
    视图也可像表一样进行查询

有些类型的视图不可更新
如果视图的select目标列包含聚集函数,则不能更新
如果视图的select子句使用了unique或distinct,则不能更新
如果视图中包括了group by子句,则不能更新
如果视图中包括经算术表达式计算出来的列,则不能更新
如果视图是由单个表的列构成,但并没有包括主键,则不能更新nT

➢对于由单一Table子集构成的视图 ,即如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键,则可以更新

撤销视图 Drop View view_name
撤销基本表: drop table 表名(不只删除元组,撤销格式、结构等)
Drop database 数据库名

修正基本表结构:alter table 表名
【add {colname datatype,…}】增加新列
[drop {完整性约束名}] 删除完整型约束
【modify {colname datatype,。。。}】 修改列定义

指定当前数据库: Use 数据库名
关闭当前数据库:close 数据库名;

嵌入式语言

将SQL语言嵌入到某一种高级语言中使用,这种高级语言,如C/C++, Java等,又称宿主语言

  • 变量的声明与使用
    在这里插入图片描述
    宿主程序的字符串长度要比字符类型的字段+1,有“\0”

  • 程序与数据库的连接与断开

  • SQL结果的提交与撤消

  • 游标(Cursor)的基本使用方法(单行检索结果与多行检索结果的处理差异)

  • 错误捕获与处理

域演算语言QBE

高度非过程化查询语言 适合终端用户使用

P.:显示输出
D.:删除
I.:插入 P.X P.Y示例元一般是或 用相同示例元素表示与操作
U.:更新操作
当涉及多个表时,可利用同一连接条件使用相同的示例元素来实现多个表的连接。

关系运算的安全性:不产生无限关系和无穷验证的运算
关系代数(集合本身有限)是安全的,关系演算不一定(非运算可能产生无限关系)

DOM(安全约束有限集合)

数据库设计

通过对现实世界的分析,设计出数据库的模式

  • 信息:抽象,反映现实世界中事物

  • 数据库设计中的抽象:现实世界==>信息世界==>计算机世界
    在这里插入图片描述

E-R模型

  • 实体:客观存在并可相互区分的事物

一类实体:具有相同或相似的特性 (型)
一个个个体称为实例 (值)
找出有哪些类/实体能够用一个个、一件件、一串串等重叠量词形容的

  • 属性:实体所具有的某一方面特性 分类有单一、复合、单值、多值、可空值、非空值、导出(由其它属性计算而得)属性
  • 关键字/码,实体中能够用其值唯一区分开每一实例的属性或属性组合
  • 联系,是指一个实体中的实例和其他实体中实例之间所可能发生的联系
    联系的度或元:参与发生联系的实体的个数
    角色:实体在联系中的作用
    完全参与联系(至少有1个实例)、部分参与实例(可以不参与)

表示方法

Chen方法

在这里插入图片描述

Crow’s Foot方法
IDEF1X方法

函数依赖

定义:
在这里插入图片描述x相同,y相同
在这里插入图片描述

部分或完全函数依赖

在这里插入图片描述注:部分依赖存在非受控冗余

传递函数依赖

在这里插入图片描述

逻辑蕴涵

在这里插入图片描述

闭包

在这里插入图片描述

超码

是一个或多个属性的集合,超码中的这些属性可以让我们在一个实体集中唯一地标识一个实体
在这里插入图片描述

函数依赖公理

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

属性闭包

在这里插入图片描述

计算属性闭包方法:

在这里插入图片描述

最小覆盖

在这里插入图片描述

x->A不可少, x没有多余属性
注:右部单属性,没有冗余FD,左部没有冗余属性

在这里插入图片描述

数据范式

R的规范化程度与F是否最小函数依赖集无关。
在这里插入图片描述
不能有复合属性、多值属性、组合
在这里插入图片描述
不存在非主属性对候选键的部分依赖

eg:R(S#,SN,SD)  S#:学号,SN:姓名,SD:班级

在这里插入图片描述
没有传递函数依赖

eg:邮编(城市, 街道, 邮政编码)

在这里插入图片描述
函数依赖都包含候选键
在这里插入图片描述在这里插入图片描述
第4范式消除了非主属性对候选键以外属性的多值依赖,一定复合BCNF

模式分解

在这里插入图片描述
在这里插入图片描述
在模式不符合关系范式时,进行模式分解

无损连接分解

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

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

保持依赖分解

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

解释:Πr1-n:先求出投影
A->C关于G的+:首先判断A是不是属于模式Πr1-n中,是的话就落下去,在判断C是不是被包含在R1-n中,是的话也落下去
无损分解和保持依赖无关

将关系模式分解成BCNF

在这里插入图片描述

关系模式分解成3NF

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值