中级软考笔记-基础知识-7-数据库

  • 基本概念
    • 数据库
    • 数据库管理系统DBMS
      • 特征
        • 数据结构化且统一管理
        • 有较高的数据独立性
        • 提供数据控制功能
      • 分类
        • 关系数据库系统RDBS(Relation DataBase System)
          • 支持关系模型的数据库系统
          • 常见FoxBASE、Foxpro、dBASE、Access
        • 面向对象的数据库系统OODBS(Object-Oriented DataBase System)
          • 必须符合两个条件
            • 必须是一个DBMS
            • 必须面向对象
        • 对象关系数据库系统ORDBS(Object-Oriented Relation DataBase System)
          • 传统关系数据模型基础上,提供元组、数组、集合等更丰富的数据类型以及处理新的数据类型操作的能力
  • 数据库三级模式两级映像
    • 模式结构
      • 外模式/用户模式/子模式External Schema
        • 用户与数据库系统的接口,是用户用到的那部分数据的描述
        • 外模式的数据定义语言称为外模式DDL
      • 概念模式/模式Schema
        • 数据库中全体数据的逻辑结构和特征的描述,只涉及行的描述,不涉及具体的值
      • 内模式/存储模式Internal Schema
        • 数据物理结构和存储方式的描述,是数据在数据库内部的表示方式
        • 定义所有的内部记录类型、索引和文件的组织方式以及数据控制方面的细节
    • 两级映像
      • 模式/内模式映像
      • 外模式/模式映像
      • DBMS的二级映像功能保证了数据的独立性
  • 数据库的分析与设计过程
    • 一般分为以下6个阶段

  • 数据模型
    • 三要素
      • 数据结构
      • 数据操作
        • 包括操作及操作规则
      • 数据的约束条件
    • E-R模型/实体-联系模型*

      • 实体 矩形
      • 联系 菱形
        • 一对一关系
          • 1:1
        • 一对多关系
          • 1:n
        • 多对多关系
          • m:n
      • 属性 椭圆形
        • 简单属性
          • 原子的、不可再分的
        • 符合属性
          • 可以细分为更小的部分
        • 单值属性
          • 只有单独的一个值
        • 多值属性
          • 对应一组值
        • NULL属性
          • 表示无意义或不知道
        • 派生属性
          • 从其他属性得来
  • 关系代数
    • 关系相关名词
      • 目或度
        • R表示关系的名字,n表示关系的目或度
      • 候选码(Candidate Key)
        • 若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码
      • 主码(Primary Key)
        • 若一个关系中有多个候选码,选定其中一个为主码
      • 主属性
        • 在关系中,属于候选码的属性被称为主属性。
        • 不属于任何候选码的属性被称为非主属性。
      • 外码
        • 外码是表中的一个属性或属性组,它建立了表与表之间的参照关系,通常用于维护数据库的参照完整性。外码的值要么是 NULL,要么引用另一个表中的主码或候选码的值。
        • 外键表示了两个关系之间的相关联系
      • 全码
        • 若关系模式的所有属性组都是这个关系模式的候选码
    • 关系的三种类型
      • 基本关系/基本表/基表
        • 实际存在的表,它是实际存储数据的逻辑表示
      • 查询表
        • 查询结果对应的表
      • 视图表
        • 由基本表或其他视图表导出的表
        • 它本身不独立 存储在数据库中,数据库中只存放它的定义,所以称为虚表
    • 关系代数运算
      • 笛卡儿积
      • 投影
        • 从关系的垂直方向进行运算

      • 选择
        • 从关系的水平方向进行运算

      • 连接/联接

        • 连接
        • 等值连接
        • 自然连接
      • 除÷

  • 数据库完整性约束
    • 实体完整性
      • 基本关系R的主属性A不能取空值
    • 参照完整性/引用完整性
      • 若F是基本关系R的外码,它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值
    • 用户定义完整性
      • 针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定
  • 关系数据库SQL简介
    • 体系结构
      • 三标准
        • ANSI SQL
        • SQL-92或SQL2
        • SQL-99(也称为SQL3)
      • SQL支持关系数据库的三级模式结构
        • 视图=外模式
        • 基本表=模式
        • 存储文件=内模式
      • SQL数据定义
        • 创建表
          • 语句格式
            • CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束条件],[<列名><数据类型>[列级完整性约束条件]]...[,[表级完整性约束条件]])
          • 列级完整性约束条件
            • NULL
            • UNIQUE
            • NOT NULL UNIQUE:取值唯一且不能取空值
        • 修改表
          • 语句格式
            • ALTER TABLE <表名> [ADD<新列名><数据类型>[列级完整性约束条件]],[DROP <完整性约束名>][MODIFY <列名><数据类型>];
        • 删除表
          • DROP TABLE <表名>;
        • 创建索引
          • CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[次序][,<列名>[<次序>]]...);
          • 次序:ASC升序(默认),DSC降序
          • UNIQUE:唯一
          • CLUSTER:建立的索引是聚集索引
        • 删除索引
          • DROP INDEX <索引名>;
        • 创建视图
          • CREATE VIEW 视图名 (列表名)AS SELECT 查询子句[WITH CHECK OPTION];

        • 删除视图
          • DROP VIEW 视图名;
      • SQL数据查询
        • SELECT基本结构
          • SELECT [ALL|DISTINCT]<目标列表达式>[目标列表达式]...FROM <表名或视图名>[,<表名或视图名>] [WHERE <条件表达式>] [GROUP BY <列名1>[HAVING<条件表达式>]] [ORDER BY <列名2>[ASC|DESC]...];
          • 子句顺序:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY
            • SELECT和FROM是必须的,HAVING子句只能与GROUP BY搭配使用
            • SELECT子句对应关系代数中的投影运算
              • 输出可以是列名、表达式、集函数(AVG、COUNT、MAX、MIN、SUM)
              • DISTINCT选项可以保证查询的结果集不存在重复元组
            • FROM子句对应关系代数中的笛卡儿积
            • WHERE子句对应关系代数中的选择谓词

        • 子查询与聚集函数
          • 子查询/嵌套查询
          • 聚集函数
            • 以一个值的集合为输入,返回单个值的函数
            • SQL提供五个聚集函数:平均值AVG、计数COUNT、MAX、MIN、SUM
            • 使用ANY和ALL谓词必须同时使用比较运算符

          • 分组查询
            • GROUP BY子句
            • HAVING子句
          • 更名运算
            • oldname AS newname
          • 字符串操作
            • 模式匹配LIKE
              • %匹配任意字符串
              • _匹配任意一个字符
          • 视图查询
        • SQL数据更新
          • 插入
            • INSERT INTO 基本表名[(字段名[,字段名]...)] VALUE (常量[,常量]);
            • INSERT INTO 基本表名(列表名) SELECT 查询语句;
          • 删除
            • DELETE FROM 基本表名[WHERE 条件表达式];
          • 修改
            • UPDATE 基本表名 SET 列名=值表达式[,列名=值表达式...][WHERE 条件表达式];
        • SQL的访问控制
          • 访问控制是控制用户的数据存储权利,是由DBA决定的
            • 通过GRANT和REVOKE将授权通知系统,并存入数据词典
            • 当用户提出请求时,根据授权情况检查是否执行操作请求
          • SQL标准语句包括DELETE、INDERT、SELECT和UPDATE
            • 授权

            • 回收权限

        • 嵌入式SQL
  • 关系数据库的规范化
    • 函数依赖

      • 函数依赖
        • 假设有一个关系 R(A, B, C),其中 A、B 和 C 是属性。如果对于每个 A 的值,都有一个唯一的 B 值与之对应,那么可以表示为 A → B。
      • 平凡函数依赖(Trivial Functional Dependency):
        • 形式:X → Y,其中 Y 是 X 的子集。
        • eg:在关系 R(A, B, C) 中,A, B → A 是一个平凡函数依赖,因为 A 是 A, B 的子集。
      • 非平凡函数依赖(Non-Trivial Functional Dependency):
        • 形式:X → Y,其中 Y 不是 X 的子集。
        • eg:在关系 R(A, B, C) 中,A → B 是一个非平凡函数依赖,因为 B 不是 A 的子集。
      • 完全函数依赖(Full Functional Dependency):
        • 形式:X → Y,如果 Y 依赖于 X 的整个集合,而不是 X 的任何一个真子集。
        • eg:在关系 R(A, B, C) 中,如果 A, B → C,且 A → C 和 B → C 都不成立,那么 A, B → C 是一个完全函数依赖。
      • 部分函数依赖(Partial Functional Dependency):
        • 形式:X → Y,如果 Y 依赖于 X 的某个真子集。
        • eg:在关系 R(A, B, C) 中,如果 A, B → C,而 A → C 成立,那么 A, B → C 是一个部分函数依赖。
      • 函数依赖的推导规则
        • 自反律(Reflexivity):
          • 如果 Y 是 X 的子集,那么 X → Y。
          • 例如:A, B → A。
        • 增广律(Augmentation):
          • 如果 X → Y,那么对于任何 Z,X, Z → Y, Z。
          • 例如:如果 A → B,那么 A, C → B, C。
        • 传递律(Transitivity):
          • 如果 X → Y 且 Y → Z,那么 X → Z。
          • 例如:如果 A → B 且 B → C,那么 A → C。
    • 规范化

      • 1NF

        • 表中的每个字段都必须是原子的(不可再分),即每个列都只能存储单一值。
        • 确保每个列都是不可再分的单值。
        • 消除重复的列。
      • 2NF

        • 在满足第一范式的基础上,消除部分依赖关系。只有当一个非主属性完全依赖于主属性时,才能保留。
        • 任何非主属性都不能只依赖于主键的某一部分。
      • 3NF

        • 定义:在满足第二范式的基础上,消除传递依赖。任何非主属性不能依赖于另一个非主属性。
        • 特点:
          • 确保非主属性仅依赖于主码,而不是依赖于其他非主属性。
      • BCNF

        • 定义:在满足第三范式的基础上,对于每一个非平凡函数依赖 X→YX→Y, XX 必须是超键。
        • 特点:
          • BCNF 强化了第三范式的要求,解决某些特殊的依赖情况,确保没有任何部分依赖和传递依赖。
        • eg:假设有一个表 Class(ClassID, StudentID, Instructor),其中 Instructor 依赖于 ClassID,如果一个课程只有一个特定的讲师,那么此类情况下这个表不满足 BCNF。需要将其拆分成两个表。
      • 4NF
        • 定义:在满足 BCNF 的基础上,消除多值依赖,即一列的值不应依赖于另一列与其独立的属性。
        • 特点:
          • 任何非主属性组应当独立于其他属性组。
      • 5NF
        • 定义:在满足第四范式的基础上,消除连接依赖。即表中的数据必须能够通过联合的方式分开到不同的表中。
        • 特点:
          • 5NF 处理那些多种依赖情况下的分解,确保以最少的冗余存储数据。
  • 数据库的控制功能
    • 事务管理

    • 数据库的备份与恢复
    • 并发控制
      • 并发操作带来的问题
        • 丢失修改
        • 不可重复性
        • 读脏数据
      • 并发控制技术
        • 封锁
          • 排他锁X锁
          • 共享锁S锁

        • 三级封锁协议
          • 一级封锁协议
          • 二级封锁协议
          • 三级封锁协议

      • 活锁和死锁

      • 并发调度的可串行性
      • 两段封锁协议
      • 封锁的粒度
        • 封锁对象的大小称为封锁的粒度
  • 数据仓库和数据挖掘基础
  • 大数据基本概念
  • 分布式数据库
    • 分片透明(Fragmentation Transparency):
      • 用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
    • 复制透明(Replication Transparency):
      • 为提高系统性能和实用性,有些数据并不是只存放在一个场地,用户不需要知道数据的复制情况和副本数量。
    • 位置透明(Location Transparency):
      • 用户或应用程序应适当了解分片,但不必了解片段的存储场地,用户不需要知道数据存储的具体物理位置。
    • 局部数据模型透明:用户不需要知道各个局部数据库的具体数据模型。
    • 逻辑透明:用户不需要知道数据的逻辑结构和组织方式。
### 关于中级软件设计师试的信息 #### 备资料 对于准备参加中级软件设计师试的生来说,选择合适的备资料至关重要。推荐使用官方指定教材以及历年真题作为主要复习资源[^1]。此外,在线平台如yuque提供了丰富的学习笔记和技术文档,能够帮助加深理解并掌握知识点。 #### 试大纲 该试涵盖了计算机科学基础理论、数据结构与算法分析、操作系统原理等多个方面。具体而言,试内容包括但不限于程序设计语言(C/C++/Java)的应用能力测试;数据库系统概论;网络基础知识等。详细的科目划分和要求可以在官方网站上找到最新的试大纲说明文件。 #### 报名时间 报名通常会在每年春季(3月至4月间)开放一次,秋季也可能有第二次机会(9月至10月),具体的日期会提前数周公布在中国电子信息行业联合会网站或人力资源和社会保障部官网的通知公告栏内。建议密切关注这些渠道发布的最新消息以便及时获取确切的时间安排。 ```python # 示例:查询当前年份是否有新的试通知发布 import requests from bs4 import BeautifulSoup def check_exam_announcement(): url = "http://www.miit.gov.cn/" # 假设此链接指向相关部门主页 response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') announcements = [] for item in soup.select('.news-list li'): title = item.a.string.strip() link = item.a['href'] date = item.span.string if "" in title and ("报名" or "通知") in title.lower(): announcements.append({ 'title': title, 'link': f"http://www.miit.gov.cn{link}", 'date': date }) return announcements print(check_exam_announcement()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值