Focuspoints' Blog

A blog with My IT Life.


hey,欢迎来到我的小博客~

【软考中级】软件设计师笔记 - 数据库系统

数据库系统


自用备份,Md编译器不支持部分功能。 Typora编译器手搓

数据库模式

外模式→模式(概念模式)→内模式(存储模式)

外模式->概念模式:一层映射,下午15分
概念模式->内模式:一层映射
内模式->概念模式:实现物理级独立
外模式->概念模式:实现逻辑层独立

数据库设计

ER模型 *

E:实体 用框 、属性 用椭圆 R:实体之间的联系 菱形

  • 一对一的联系

  • 多对多的联系

  • 一个实体型转换为一个关系模式。

  • 联系转关系模式:1:1联系,可将联系放至任一端的实体关系模式中;1:n联系,将联系放至n端实体关系模式中;m:n联系,联系必须单独转换成关系模式。

  • 三个以上实体间的一个多元联系 三个实体ABC一个P(A,B,C),所以是四个。

关系代数

并、交、差

规范化理论 *

X->Y (例学号决定姓名) | 学号 | 姓名 | 年龄 | | :--- | ------ | ---- | | 01 | 王建国 | 18 | | 10 | 王建国 | 19 |

消除两个依赖集来消除数据冗余


  • 候选键:在关系模型中,候选键又称候选码(candidate key),是某个关系变量的一组属性锁组成的集合,他需要同时满足两个条件:
    • 在这个属性集合始终能够确保在关系中能唯一标识元祖。
    • 在这个属性集合中找不出合适的真子集能够满足天剑。 满足第一个条件的属性集合成为超键,因此我们也可以把候选键定义为“最小超键”,即不含有多余属性的超键。
  • 主键:主关键字(主键,primary key)是被挑选出来,主关键字有可以称为。主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。
  • 外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被成为另一个关系中的外键。

求候选键

  1. 图示法 例题:

主属性与非主属性

定义:组成候选键的属性就是主属性,其他是非主属性。


范式

第一范式(1NF):规定关系的每一个属性必须是一个不可分的数据项。

第二范式(2NF):若关系模式R∈1NF(即R符合第一范式),并且每一个非主属性都完全依赖于R的主码,则R∈2NF(即R符合第二范式)。在第一范式的基础上,消除部分函数依赖得第二范式。

第三范式(3NF):若R∈3NF,则R的每一个非主属性 既不部分函数依赖于候选码也不传递函数依赖于候选码。 在第二范式的基础上,消除传递函数依赖得第三范式。

BC范式(BCNF):对3NF关系进行投影,将消除原关系中国主属性对键的部分与传递依赖,得到一组BCNF关系。

总结: 逐步优化,解决:数据冗余、插入异常、删除异常、修改异常

    graph LR
    A[1NF] -->|消除非主属性对键的部分函数依赖| B
    B[2NF] -->|消除非主属性对键的传递函数依赖| C
    C[3NF] -->|消除主属性对键的部分依赖| 4NF

例1: 某企业的培训关系模式R(培训科目,培训师,学生,成绩,时间,教室), R的函数依赖集 F={培 训科目→→培训师,(学生,培训科目)→成绩,(时间,教室)→培训科目,(时间,培训师) →教室,(时间,学生)→教室}。关系模式R的主键为( ),其规范化程度高达到( )。 (52) ​ A.(学生,培训科目) ​ B.(时间,教室) ​ C.(时间,培训师) ​ D.(时间,学生) (53)
​ A.1NF ​ B.2NF ​ C.3NF ​ D.BCNF

    graph LR
    培训科目  --> 培训师
    学生-->成绩
    培训科目 --> 成绩
    时间 --> 培训科目
    教室 --> 培训科目
    培训师 --> 教室
    时间 --> 教室
    学生 --> 教室

试题分析 1、时间和学生为主键。 2、存在传递函数依赖,时间和教室—>培训科目; 学生、培训科目-à成绩。 试题答案 (52)D(53)B

模式分解

① 保持 ② 不保持

无损分解: 无损:数据可还原 有损:数据不可还原

判断是否无损?

  • 模式分解表格法:

当同一表内属性都可依赖还原,那么则可还原,即为无损。 例: 设关系模式R(U,F),其中:U= {A,B,C,D,E } ,F={A→B,DE→B,CB→E,E→A, B→D}。( )为关系模式R的候选关键字。分解( )是无损连接,并保持函数依赖的。

A.AB B.DE C.DB D.CE

A.ρ={ R1(AC),R2(ED),R3(B) } B.ρ={ R1(AC),R2(E),R3(DB) } C.ρ={ R1(AC),R2(ED),R3(AB) } D.ρ={ R1(ABC),R2(ED),R3(ACE) }

    graph LR
    A --> B
    D --> B
    E --> B
    C --> E
    B --> E
    E --> A
    B --> D
\ABCDE
R1111
R211
R3111

试题分析 1、肯定需要C,因为C是独立的,CE可以遍历全图。 2、使用表格法还原。 试题答案 (54)D(55)D

  • 无损分解公式法:

SQL语言*

建表

SQL CREATE TABLE 语句 CREATE TABLE 表名称 ( ​ 列名称1 数据类型, ​ 列名称2 数据类型, ​ 列名称3 数据类型, .... )

插入

INSERT INTO table_name VALUES(值1,值2,...) 指定插入 INSERT INTO table_name(列1,列2,...)VALUES(值1,值2,...)

删除

DELETE FROM table_name WHERE 列名 = 值

查找

SELECT *(列名) FROM table_name

修改

UPDATE table_name SET 列名 = 新值 WHERE 列名 = 某值

并发控制

  • 数据库的事务:
    事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是不可分割的一个序列。 事务的特征:(ACID) 1、原子性:事务的操作要么全做要么全不做。 2、一致性:事务操作的结果是一个一致状态转换到另一个一致状态。 3、隔离性:一个事务的执行过程不能受到其他事务的干扰。 4、持久性:事务一旦提交,对数据库做出的更新将是永久的。

  • 并发操作带来的问题: 1、丢失修改:修改的数据被覆盖 2、不可重复读:数据被修改或者插入删除,结果不能复现 3、读脏数据: 脏数据是未提交的数据。 并发控制的技术: 1、时间戳: 给每个事务分配一个全局的唯一的时间戳,唯一性且单调增长性。时间戳可以为系统时钟值,也可以为逻辑计数器,同一事务中的数据操作有相同的时间戳。此方法需要大量的系统资源。 2、乐观控制法: 假设不会发生冲突。读阶段——确认阶段——写阶段。 3、锁: 排它锁(X锁):写锁,一个事务获取了写锁,则其他事务都不能再加任何类型的锁,直到锁释放。 共享锁(S锁):读锁,一个事务获取了读锁,其他事务能加读锁,不能加写锁。 ( (1)锁协议:

    1、一级封锁协议:事务在修改数据前先加写锁,直到事务结束。(防止丢失修改)

    2、二级封锁协议:在一级的基础上,事务读数据先加读锁,读完释放读锁。(防止读脏)

    3、三级封锁协议:在一级的基础上,事务读数据先加读锁,直到事务结束释放。(防止不可重复读 ) (2)两端封锁协议:事务执行过程中,不允许加锁释放锁交叉执行。 1、申请封锁期 2、释放封锁期 (3)InnoDB行锁算法: 行记录锁: 间隙锁:锁定一个范围。 ​ 锁的粒度越大,能够封锁的单元就越少,其并发度越低,系统开销越小。

数据库完整性约束

数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。 数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。 分为以下四类:

  1. 实体完整性:规定表的每一行在表中是惟一的实体。
  2. 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。
  3. 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
  4. 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
最近的文章

【软考中级】软件设计师笔记 - 计算机网络与信息安全

计算机网络5分、信息安全3分开放系统互连参考模型^2ISO/OSI七层模型ISO/OSI模型,即开放…

软件设计师  软考中级  继续阅读
更早的文章

Pandas实战——NBA篮球队员成绩分析【修订版】

在前一篇实战中,小编漏掉一个参数,以及没有按照实际情况考虑(同一个人多个赛季但还是这个人),导致结果…

python  numpy  pandas  数据分析  继续阅读
0评论