首页 > 数据库 >数据库系统概论

数据库系统概论

时间:2023-11-04 19:01:20浏览次数:36  
标签:候选 元组 运算符 概论 数据库系统 连接 select 属性

绪论

DBS中的4个基本概念

  • 数据
  • DB
  • DBMS
  • DBS

DB发展阶段

1.人工 2. 文件 3. DBMS

数据模型

  1. 概念模型
  • 实体(属性,码)
  • 实体型
  • 实体集
  1. 逻辑模型 2.1 层次模型 2.2 网状模型 2.3 关系模型 一张表即为关系,表中一行为元组,一列为属性(多列成组)(放在元组中称分量,其中起唯一标识作用的为码,具有相同数据类型的为域)
  2. 物理模型

ER图

Entity Relationship Diagram,实体-联系图

  1. 实体型
  2. 属性
  3. 联系
  • 实体间:实体型之间的联系
  • 实体内:属性间的联系

用来描述现实世界的概念模型

DBS结构

  1. 三级模式
  • 外模式(用户模式)
  • 模式(逻辑模式)
  • 内模式(存储模式)
  1. 2级映像
  • 外模式/模式
  • 模式/内模式

3级模式和2级映像关联:底层模式改变后,可以通过修改映像实现上层无需改变

关系数据库

关系代数

抽象的查询语句,用对关系的运算表示查询

1.1 运算对象 1.2 运算符 1.3 运算结果

1.2 运算符-详细信息

1.2.1 集合运算符 上述运算符体现在表格中,∩∪-都很好理解,主要是笛卡尔积 笛卡尔积相当于2层for循环,第一层循环一表,第2层循环另一表,实现两张表的组合

1.2.2 关系运算符

  1. 选择,即添加条件

  2. 投影,只想查询部分属性,即对目标属性进行投影 image

(SC是表名)

  1. 连接 image

注意多出去的横线在哪边就是哪个方向的连接

  • 两个表进行自然连接,找到共同属性,具有共同属性的元组进行笛卡尔积。两个表的共同属性仅保留一次。 image

没有用到的被舍弃元组成为悬浮元组,其他连接就是将悬浮元组以不同的方式进行保留

  • 两个表进行外连接,就是在自然连接基础上,将左右两张表的悬浮元组全部保留在结果中,悬浮元组不存在但最终结果中存在的属性设为空
  • 外连接是左右两张表的悬浮元组均保留,左/右连接就是仅保存左/右一表中的悬浮元组,悬浮元组不存在属性在最终结果中设空
  1. 除法 表A除以表B,首先结果应当是把A属性中那些处在B属性中的属性去掉后的一张表,即下图中最终结果只剩下姓名。最终结果留下的,应当是A中把B属性去掉后,其他属性均相同的元组集合中,B属性分量包含B中的所有值的那些元组,下图中,元组集合有3个,分别为张三,李四,王五,而只有张三和王五对应B属性的分量,即选修课程,同时包含数据库和网络,因此最后结果就是张三和王五 image

关系完整性

  1. 实体完整性 主键唯一且非空
  2. 参照完整性 外键为空或对应其他表主键
  3. 用户自定义完整性

SQL

SQL语言分类

前面的D都是指data数据,最后的L都是值language语言,中间依次是DQMC

  • DDL,defination定义 定义基表,视图,索引

  • DQL,query查询 select

  • DML,manipulation操纵 insert,delete,update

  • DCL,control控制 表和视图授权,完整性规则描述,事务开始和结束控制

查询语句

  1. 起别名 select columnname (as) column_name_alias from tablename (table_name_alias)

  2. 去重 select distince column_name from table_name

  3. 加条件

  4. 聚集函数 查询column_name有多少行: select count(column_name) from table_name

  5. 分组查询

应用场景

  1. 查询每个班级有多少学生: select class, count(*) from student group by class;
  2. 查询人数小于30人的班级: select class,count(*) from student group by class having count(*)<30

注: WHERE 关键子无法与聚合函数一起使用,筛选只能用having

  1. 连接

注意和[关系代数-1.2.2关系运算符-3.连接](## 关系代数)中提到的3种连接进行区分,关系运算符涉及到的连接仅有自然连接,外连接,左外连接,右外连接。在sql中涉及更多连接方式 同时注意区分sql中的连接方式和mysql中的连接方式是不同的,例如sql中是包含外连接full join的,但是mysql中并不包含,只是可以用其他连接实现相同的效果

连接主要是应用于多表查询

注意加条件时,使用的是on,注意与聚合函数的havingwhere进行区分

6.1 内连接 6.1 等值连接 6.3 自然连接 6.4 左右外连接 6.5 自连接

6.1 内连接 当条件为=时,结果等于等值连接 之所以说内连接为等值连接的特例,是因为其除了相等条件,也可以选择其他条件

6.1 等值连接 通过“=”等号来连接多张表之间相字段对应的值,其产生的结果会出现重复列。 course是课程表,sc是学生成绩表,通过课程编号进行连接,最终结果中出现两列课程编号 select * from course,sc where course.cnum = sc.cnum;

6.3 自然连接

同[关系代数-1.2.2关系运算符-3.连接](## 关系代数)中提到的自然连接,属于特殊的等值连接,只是将等值连接中重复列去重

select * from course natural join sc;

6.4 左/右外连接

同[关系代数-1.2.2关系运算符-3.连接](## 关系代数)中提到的左/右外连接是相同效果

左/右外连接时,需要添加on条件

  1. 嵌套查询,使用()将嵌套部分包含起来

  2. any和all

  3. exists

  4. 查询结果的∩∪- 交集:select语句1 union select语句2 并集: select语句1 intersect select语句2 差集: select语句1 except select语句2

DB安全性

1.数据库安全性控制 1.1 用户身份鉴别 1.2 存取控制 1.3 自主存取控制方法

  1. 权限管理 常见权限

grant授予权限 grant 权限 on 表名(列名) to 用户 with grant option

列名可选,用户示例'root'@'%',with grant option会给予用户赋予其他用户相同权限的功能

revoke 权限 on 表名(列名) to 用户 cascade

cascade会把with grant option用户赋予其他用户的权限一同撤销

  1. 视图 相当于外模式,仅显示部分数据,且内容会实时更新 create view cname as select cname from course;

关系数据理论

数据依赖:函数依赖 | 多值依赖 函数依赖关系:完全vs部分 | 传递依赖 | 平凡vs非平凡

平凡即属性集能决定自己的子集,属于废话

平凡函数依赖关系是指,如果属性集合X包含了属性集合A,那么就一定有X->A(X决定A)

候选码,主码,主属性,非主属性 候选码:能够唯一标识元组的属性或属性组 主码:被数据库设计者选中的,用来在实体集中区分不同实体的候选码 主属性:包含在任一候选码中的属性(候选码的并集,主属性不一定包含在主码中) 非主属性:不包含在任何候选码中的属性(候选码并集的补集)

范式:符合某一种级别的关系模式的集合 1、2、3、BCNF是属于函数依赖范畴下的 4、5NF是多值依赖范畴下的

2NF:每一个非主属性都完全依赖于任何一个候选码

e.g.

拆表(模式分解方法):谁跟你好,复制并将其带走 部分函数依赖,体现出的就是将所依赖的主属性复制一份,并结合依赖它的属性,单独组成一张表,从而解决部分函数依赖的问题

3NF:每一个非主属性都直接依赖于任何一个候选码,不存在传递依赖关系

  1. 找候选码,分清主属性和非主属性
  2. 从候选码出发,将候选码和非主属性的决定关系写出
  3. 把候选码内部的主属性和非主属性的决定关系写出

BCNF:在3NF基础上,满足每一个主属性都完全且直接依赖于任何一个不包含它候选码 在BCNF之前,考虑的都是非主属性和候选码之间的关系,但当主属性过多时,可能主属性本身和候选码之间存在一些冗余的关系

判断时的两种思路:1是用下面图中提到的方法,判断X->A,X是否包含非主属性; 2是根据定义,找到主属性和不包含它的候选码,确定是否存在部分和传递依赖

参考

标签:候选,元组,运算符,概论,数据库系统,连接,select,属性
From: https://blog.51cto.com/u_14882565/8184720

相关文章

  • 2023-2024-1 20231407陈原《计算机科学与概论》第五周学习总结
    这个是哪里的作业?<2023-2024-1计算机基础与程序设计第五周作业>作业的要求在哪里?https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05作业的目的是什么?Pep/9虚拟机机器语言与汇编语言算法与伪代码测试:黑盒,白盒作业正文  https://www.cnblogs.com/CCCY......
  • [11章]技术大牛成长课,从0到1带你手写一个数据库系统
    点击下载——[11章]技术大牛成长课,从0到1带你手写一个数据库系统 提取码:y31p 这是一套一步步带着大家从0开始写一个数据库系统的视频教程,2023最新录制,提供有配套的源码资料下载!无论你是数据库内核研发、DBA、还是后端研发,能够手写一套自己的数据库系统,都是你突破技术发展瓶颈的......
  • 课程概论与python3语法
    server端云盘:代替硬盘disk,存图片,视频,几百G、几TMysql:存代码,文本,几十GRedis:占用内存, client端WebStorageds内存 1、注释#......
  • 数据库系统笔记 - chap2 - 关系模型
    关系数据结构关系代数Asetoffundamentaloperationstoretrieveandmanipulatetuplesinarelation.Theseoperationstakeoneorsomerelationsasinputs,andoutputsanewrelation.并、交、差、笛卡尔积与集合运算相似。选择(Select)行视角,选择出符合条件的若......
  • 数据库系统笔记 - chap3 - SQL
    IntroductiontoSQLSQL(StructuredQueryLanguage),是关系数据库的标准查询语言。SQL的特点:综合统一SQL集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。高度非过程化SQL只要提出“做什么”,而无须指明“怎么做”,因此无须了解存取路径。存取路径的选择......
  • 数据库系统笔记 - chap1 - 绪论
    数据库发展史人工管理阶段(1950)\(\Rightarrow\)文件系统阶段(1950-1960)\(\Rightarrow\)数据库系统阶段(1960-)数据库管理系统(DBMS)的出现,使得数据存储、数据管理和数据应用分离。数据库管理系统采用外模式-模式-内模式的三级模式,外模式/模式和模式/内模式的两级映象结构。数......
  • 20231407陈原《计算机科学与概论》及《C语言程序设计》第三周学习情况
    [2022-2023-1-计算机基础与程序设计]2023-2024-1计算机基础与程序设计第三周作业https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP[2022-2023-1计算机基础与程序设计第一周作业](https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03)作业目标学习《计算机科......
  • 数据库系统笔记
    \[Chapter1.\quad绪论\]数据库发展史人工管理阶段(1950)\(\Rightarrow\)文件系统阶段(1950-1960)\(\Rightarrow\)数据库系统阶段(1960-)数据库管理系统(DBMS)的出现,使得数据存储、数据管理和数据应用分离。数据库管理系统采用外模式-模式-内模式的三级模式,外模式/模式和模式/......
  • 2023-2024-1 20231422《计算机科学概论》
    作业信息这个作业属于哪个课程 2023-2024-1-计算机基础与程序设计这个作业要求在哪里 2023-2024-1计算机基础与程序设计第一周作业这个作业的目标 学习本周学习资源,安装Linux操作系统,学习Linux基础,浏览计算机科学概论,提出问题作业正文 https://www.cnblogs.com/Augenstern45......
  • 高级系统架构师学习(九)数据库系统
    一、数据库概述数据库模式三级模式:外模式:视图模式(也称为概念模式):数据库表内模式:物理文件两层映像:两层映像可以保证数据库中的数据具有较高的逻辑独立性和物理独立性。外模式-模式映像模式-内模式映像物理独立性:即数据库的内模式发生改变时,应用程序不需要改变。......