草庐IT

《数据库系统概论》知识点梳理

水寿 2023-03-28 原文

第一章 绪论

1.1 数据库系统概述

1.1.1 数据库的4个基本概念

  1. 数据:描述事物的符号记录,数据的含义称为数据的语义,二者是不可分的。

  2. 数据库:数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 数据库数据基本特点:永久存储、有组织、可共享。

  3. 数据库管理系统(DBMS):是计算机的基础软件。 主要功能:(1)数据定义功能(2)数据组织、存储和管理功能(3)数据操纵功能(4)数据库的事务管理和运行管理(5)数据库的建立和维护功能(6)其他功能

  4. 数据库系统(DBS):由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统

1.1.2 数据管理技术的产生和发展

数据管理三个阶段的特点及其比较:

  人工管理阶段 文件系统阶段 数据库系统阶段
应用背景 科学计算 科学计算、数据管理 大规模数据管理
硬件背景 无直接存取存储设备 磁盘、磁鼓 大容量磁盘、磁盘阵列
处理方式 批处理 联机实时处理、批处理 联机实时处理、分布处理、批处理
       
数据的管理者 程序员 文件系统 数据库管理系统
数据面向对象 某一应用程序 某一应用 部门企业
数据的共享程度 无共享,冗余度极大 共享性差,冗余度大 共享性高,冗余度低
数据独立性 不独立 独立性差 具有高度的物理独立性和一定的逻辑独立性
数据结构化 无结构 记录内有结构、整体无结构 整体结构化,用数据模型描述
数据控制能力 应用程序自己控制 应用程序自己控制 DBMS提供数据安全性、完整性、并发控制和恢复能力

1.1.3 数据库系统的特点:

  1. 数据结构化(与文件系统的本质区别)

  2. 共享性高,冗余度低且易扩展

  3. 数据独立性高:

    (1)物理独立性:用户的应用程序与数据库中的数据的物理存储是相互独立的; (2)逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。

    数据独立性是由数据库管理系统提供的二级映像功能来保证的。

  4. 数据统一管理和控制

【联想】数据库系统的三级模式结构:外模式、模式和内模式。模式也称逻辑模式,是所有用户的公共数据视图;外模式也称用户模式,是数据库用户的数据视图;内模式也称存储模式,是数据在数据库内部的组织方式。

1.2 数据模型

1.2.1 两类数据模型

概念模型(实体-联系 E-R模型)、逻辑模型和物理模型

1.2.2 概念模型

基本概念:实体、属性、码、实体型、实体集、联系

1.2.3 数据模型的组成要素

数据结构、数据操作、数据的完整性约束条件

1.2.4 常用的数据模型

  • 层次模型

    优点:

    1. 数据结构比较简单清晰

    2. 数据库的查询效率高

    3. 数据模型提供了良好的完整性支持

    缺点:

    1. 现实世界中很多联系是非层次化的

    2. 程序编写复杂,插入删除限制多

    3. 查询子女节点必须通过双亲节点

    4. 由于结构严密,层次命令趋向于结构化

  • 网状模型

    优点:

    1. 能够更为直接的描述现实世界

    2. 具有良好的性能,存取效率较高

    缺点:

    1. 结构比较复杂

    2. DDL/DML复杂,不好掌握使用

    3. 因为联系是通过存取路径实现的,用户需要了解系统结构的细节

  • 关系模型

    优点:

    1. 建立在严格的数据概念基础上

    2. 概念单一,都用关系表示

    3. 存取路径对用户透明,简化工作

    缺点:

    1. 存取路径隐蔽,导致查询效率不高,为了提升性能,DMBS必须对用户查询请求进行优化

1.3 数据库系统的结构

1.3.3 数据库的二级映像功能与数据独立性

  1. 外模式/模式映像 模式改变,对映象做修改,可以保证外模式不变,保证了逻辑独立性

  2. 模式/内模式映象 内模式改变(数据库的存储结构改变),对映象做修改,可以保持模式不变,保证了物理独立性

 

第二章 关系数据库

2.1 关系模型数据结构及形式化定义

按照数据模型三要素,关系模型由数据结构、关系操作集合和关系完整性约束三部分组成

2.1.1 关系

  1. 关系:在域D上笛卡尔积的子集

  2. 关系可以有三种类型:基本关系(基本表)、查询表、视图表。

2.2 关系操作

2.2.1 基本的关系操作

  1. 查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积 选择、投影、并、差、笛卡尔积是五种基本操作

  2. 数据更新:插入、删除、修改

2.3 关系的完整性

关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。

2.3.1 实体完整性

若属性A是基本关系R的主属性,则A不能取空值。

2.3.2 参照完整性

若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对R中的每个元组在F上的值,必须为空值或者S中某个元组的主码值

2.4 关系代数

运算符 含义
-
× 笛卡尔积
σ 选择
Π 投影
连接
÷

前四种为传统的集合运算,后四种为专门的关系运算

第三章 关系数据库标准语言SQL

3.1 SQL概述

SQL功能 动词
数据查询 SELECT
数据定义 CREATE,DROP,ALTER
数据操纵 INSERT,UPDATE,DELETE
数据控制 GRANT,REVOKE

3.3 数据定义

  • 数据定义语句

    操作对象 创建 删除 修改
    模式 CREATE SCHEMA DROP SCHEMA  
    CREATE TABLE DROP TABLE ALTER TABLE
    视图 CREATE VIEW DROP VIEW  
    索引 CREATE INDEX DROP INDEX ALTER INDEX
  • 主要(常用)数据类型

    数据类型 含义
    int,smallint 整数
    char(n) 长度为n的字符串
    float(n) 可选精度的浮点数
    date 日期,格式为YYYY-MM-DD
    time 时间,格式为HH:MM:SS

3.4 数据查询

  • 数据查询语句

     select [all/distinct] <目标列表表达式>
     from <表名/视图名> [as] <别名>
     [where <条件表达式>]
     [group by <列名>[having <条件表达式>]]
     [order by <列名>]  --升序或降序
  • where查询常用条件

    查询条件 谓词
    比较 (not) =,>,<,>=,<=,!=,<>,!>,!<
    确定范围 between and; not betweeen and
    确定集合 in, not in
    字符匹配 like, not like
    空值 is null, is not null
    多重条件 and, or, not
  • 字符匹配:(1)%(百分号):代表任意长度字符串;(2)_(下横线):代表任意单个字符

  • 聚集函数:

    函数 含义
    count(*) 统计元组个数
    count([all/distinct] <列名>) 统计一列中值的个数
    sum([all/distinct] <列名>) 统计一列中值的总和
    avg([all/distinct] <列名>) 统计一列中值的平均值
    max([all/distinct] <列名>) 统计一列中值的最大值
    min([all/distinct] <列名>) 统计一列中值的最小值
  • 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。使用存在量词后,若内层查询结果非空,则外层的where字句返回真值,否则返回假值。

3.6 空值的处理

  • 空值的判断:is null或者is not null

3.7 视图

3.7.4 视图的作用

  1. 视图能够简化用户的操作

  2. 视图使用户能以多种角度看待同一数据

  3. 视图对重构数据库提供了一定程度的逻辑独立性

  4. 视图能对机密数据提供安全保护

  5. 适当利用视图可以更清晰地表达查询

 

第四章 数据库安全性

数据库的安全性:保护数据库以防止不合法使用所造成的的数据泄露、更改或破坏

4.2 数据库安全性控制

4.2.4 授权:授予与收回

  1. grant授权语句一般格式:

     grant <权限>
     on <对象类型><对象名>
     to <用户>
     with grant option --该用户可以将权限授予他人
  2. revoke回收权限语句:

     revoke <权限>
     on <对象类型><对象名>
     from <用户> [cascade|restrict]

第五章 数据库完整性

5.1 实体完整性

  1. 检查主码是否唯一,拒绝插入或修改

  2. 检查主码的各个属性是否为空,拒绝插入或修改

5.2 用户定义的完整性

属性上约束条件的定义:(1)列值非空(not null);(2)列值唯一(unique);(3)检查列值是都满足一个条件表达式(check短语)

5.4 完整性约束命名字句

 constraint<完整性约束条件名><完整性约束条件>

5.7 触发器

  • 定义格式:

     CREATE TRIGGER <触发器名>
     BEFORE|AFTER <触发事件> ON <表名>
     REFERENCING NEW|OLD ROW AS <变量>
     FOR EACH{ROW|STATEMENT}
     [WHEN<触发条件>]<触发动作体>
  • 触发事件:可以是insert、delete或update;after/before表示触发的时机

 

第六章 关系数据理论

6.1 问题的提出

常见的关系模式问题:

  • 数据冗余

  • 更新异常

  • 插入异常

  • 删除异常

6.2 规范化

6.2.1 函数依赖

X函数确定Y或Y函数依赖X,记做X->Y; F(X)=Y

  • X->Y,但Y不属于X,则称X->Y是非平凡的函数依赖

  • X->Y,但Y属于X,则称X->Y是平凡的函数依赖

  • 区别:完全函数依赖x-^F>y)、部分函数依赖(x-^P>y)、传递函数依赖

6.2.2 码

  • R<U,F>,若U对K存在完全函数依赖,则K为R的候选码

  • 如果U函数依赖于K,即K->U,则K称为超码

  • 若候选码多余一个,则选定其中一个为主码

  • 包含在任何一个候选码中的属性称为主属性,其余为非主属性

6.2.3 范式

  • NF:码X,非主属性Z,不存在X->Y,Y->Z成立,且Y不函数依赖于Z。

  • 2NF:在NF的基础上删除非主属性对码的部分函数依赖

  • 3NF:在2NF的基础上消除非主属性对码的传递函数依赖

  • BCNF:在3NF的基础上消除主属性对码的部分和传递函数依赖

 

第七章 数据库设计

7.1 数据库设计概述

7.1.3 数据库设计步骤

  1. 需求分析

  2. 概念结构设计

  3. 逻辑结构设计

  4. 物理结构设计

  5. 数据库实施

  6. 数据库运行和维护

 


由于期末考核需要,整理了一份发一下叭

 

制作:BDT20040

有关《数据库系统概论》知识点梳理的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  3. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  6. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  7. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  8. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  9. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  10. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

随机推荐