Database 数据库

思维导图概览

数据库设计

flowchart LR DB(数据库设计概述) ==> Concept([数据库系统概念]) DB ==> Model([数据模型]) DB ==> RelationalAlgebra([关系代数]) DB ==> SQL([SQL]) DB ==> Norm([规范化]) DB ==> Control([数据库的控制]) DB ==> Other([其他知识]) Concept --> Concept1[数据库系统概述] Concept --> Concept2[三级模型两级映射] Concept --> Design[数据库设计] Concept1 --> DBS[数据库系统 DBS] Concept1 --> DBMS[数据库管理系统 DBMS] Concept2 --> ExternalLevel[外模式] Concept2 --> Image1([外模式/概念模式映像]) Concept2 --> ConceptualLevel[概念模式] Concept2 --> Image2([概念模式/内模式映像]) Concept2 --> InternalLevel[内模式] ExternalLevel --> ExternalLevel1[面向应用程序: View] ConceptualLevel --> ConceptualLevel1[面向数据库设计人员: 逻辑结构] InternalLevel --> InternalLevel1[磁盘存储] Design --> Design1[需求分析] --> Design11[数据流图,数据字典,需求说明书] Design --> Design2[概念结构设计] --> Design21[E-R 图] Design --> Design3[逻辑结构设计] --> Design31[关系模式] Design --> Design4[物理设计] Design --> Design5[数据库实施阶段] Design --> Design6[数据库运行和维护阶段] Model --> ER[E-R 模型] Model --> Model2[关系模型] Model --> ModelElement[模型三要素] ER --> ER1[实体] ER --> ER2[属性] ER --> ER3[联系] ER1 --> ER11[强实体,弱实体] ER3 --> ER31[1对1,1对多,多对1] ModelElement --> ModelElement1[数据结构] ModelElement --> ModelElement2[数据操作] ModelElement --> ModelElement3[数据的约束条件] RelationalAlgebra --> RelationalAlgebra1[集合运算符] RelationalAlgebra --> RelationalAlgebra2[关系运算符] RelationalAlgebra --> RelationalAlgebra3[比较运算符] RelationalAlgebra --> RelationalAlgebra4[逻辑运算符] RelationalAlgebra1 --> RelationalAlgebra11[并,交∩,差,笛卡尔积] RelationalAlgebra2 --> RelationalAlgebra21[选择,投影,连接,除] RelationalAlgebra3 --> RelationalAlgebra31[大于,小于,...] RelationalAlgebra4 --> RelationalAlgebra41[与,或,非] SQL --> DDL[数据定义语言 DDL] SQL --> DML[数据操作语言 DML] SQL --> DQL[数据查询语言 DQL] SQL --> TCL[事物控制语言 TCL] SQL --> DCL[数据控制语言 DCL] Norm --> FunctionDependency[函数依赖] Norm --> KeysConstraints[键与约束] Norm --> NormalForms[范式] Norm --> ModeDecomposition[模式分解] Norm --> Denormalization[反规范化] Norm --> NonNormalizationProblems[不规范化带来的问题] FunctionDependency --> FunctionDependency1[部分函数依赖] FunctionDependency --> FunctionDependency2[传递函数依赖] FunctionDependency --> Armstrong([阿姆斯特朗公理]) NormalForms --> 1NF[第一范式 1NF] --> 1NFx[属性不可分割] NormalForms --> 2NF[第一范式 2NF] --> 2NFx[不能存在联合主键] NormalForms --> 3NF[第一范式 3NF] --> 3NFx[不能存在传递依赖] NormalForms --> BCNF[BC范式 BCNF] --> BCNFx[3NF+避免数据冗余和不一致性] ModeDecomposition --> MD1[是否保持函数依赖] ModeDecomposition --> MD2[有损无损分解] --> MD2x[无损的充要条件: R1∩R1 -> R1-R2] Denormalization --> DNx([牺牲部分规范化提高性能]) Denormalization --> DN1[增加冗余列] Denormalization --> DN2[增加派生列] Denormalization --> DN3[重新组表] Denormalization --> DN4[水平分割表] Denormalization --> DN5[垂直分割表] NonNormalizationProblems --> NNP1[数据冗余] NonNormalizationProblems --> NNP2[修改异常] NonNormalizationProblems --> NNP3[插入异常] NonNormalizationProblems --> NNP4[删除异常] Armstrong --> Armstrong1[自反律] Armstrong --> Armstrong2[增广律] Armstrong --> Armstrong3[传递律] Armstrong --> Armstrong4[合并律] Armstrong --> Armstrong5[分解律] Armstrong --> Armstrong6[合成律] KeysConstraints --> Keys[键] Keys --> Key1[超键] --> Key11[唯一标识一条记录的属性/属性集] Keys --> Key2[候选键] --> Key21[无冗余属性的超键] Keys --> Key3[主属性] --> Key31[候选键中的属性] Keys --> Key4[主键] --> Key41[候选键中的一个属性/属性集] Keys --> Key5[外键] --> Key51[建立表之间的关系] Control --> Transaction[事物] --> ACID[ACID] Control --> Concurrency[并发控制] Control --> Blockade[封锁协议] Concurrency --> ConcurrencyProblem[三种安全问题] ConcurrencyProblem --> ConcurrencyProblem1[丢失更新] ConcurrencyProblem --> ConcurrencyProblem2[不可重复读] ConcurrencyProblem --> ConcurrencyProblem3[读脏数据] Blockade --> LockX([X锁是排他锁/写锁🔓]) Blockade --> LockS([S锁是共享锁/读锁🔓]) Blockade --> 1Blockade[一级封锁协议] --> 1Bx[修改前必须加X写锁] Blockade --> 2Blockade[二级封锁协议] --> 2Bx[一级封锁协议 + 读之前必须加S读锁] Blockade --> 3Blockade[三级封锁协议] --> 3Bx[一级封锁协议 + 事物T在读前加S读锁] Other --> App[应用程序与数据库的交互] Other --> NoSQL[NoSQL 数据库] App --> App1[库函数级别访问接口] App --> App2[嵌入 SQL 访问接口] App --> App3[通用数据接口标准] App --> App4[ORM 访问接口] NoSQL --> NoSQL1[列式存储数据库] NoSQL --> NoSQL2[键值对存储数据库] NoSQL --> NoSQL3[文档型数据库] NoSQL --> NoSQL4[图数据库]

数据库设计

ACID

flowchart LR ACID(ACID) ==> Atomicity([Atomicity 操作原子性]) ACID ==> Consistency([Consistency 数据一致性]) ACID ==> Isolation([Isolation 执行隔离性]) ACID ==> Durability([Durability 改变持续性]) style ACID fill:#f9f,stroke:#333,stroke-width:2px

ACID

CAP 原则

flowchart LR CAP(CAP 原则) ==> Consistency([Consistency 一致性]) CAP ==> Availavility([Availavility 可用性]) CAP ==> Partition([Partition Tolerance 分区容错性]) style CAP fill:#f9f,stroke:#333,stroke-width:2px

CAP 原则

BASE 理论

flowchart LR BASE(BASE 理论) ==> BA([Basically Available 基本可用]) BASE ==> S([Soft state 软状态]) BASE ==> E([Eventually consistent 最终一致性]) style BASE fill:#f9f,stroke:#333,stroke-width:2px

BASE 理论