文档教程知识库【免费下载链接】CS-Xmind-Note计算机专业课408思维导图和笔记计算机组成原理第五版 王爱英数据结构王道计算机网络第七版 谢希仁操作系统第四版 汤小丹项目地址https://gitcode.com/gh_mirrors/cs/CS-Xmind-Note点击查看免费下载数据库设计是构造最优数据库模式、建立数据库及应用系统以满足用户信息要求和处理要求的核心工作也是计算机专业课 408 中数据库章节承上启下的关键一环。本文以 CS-Xmind-Note 仓库中 数据库设计.md 的思维导图笔记为主体骨架结合仓库内数据库绪论、关系模型、关系数据库设计理论、数据库语言SQL 等配套笔记系统讲解数据库设计的需求分析、概念结构设计、逻辑结构设计、物理设计、实施与运行维护六个阶段并深入剖析数据字典、E-R 图、概念结构设计四类方法、E-R 图向关系模式的转换规则、数据模型优化与用户子模式设计等核心考点读完即可掌握一套从零开始设计关系数据库的完整实战方法论。数据库设计概述在进入具体步骤之前先明确数据库设计的学科定位。数据库技术是信息资源管理最有效的手段。所谓数据库设计是指对于一个给定的应用环境构造最优的数据库模式建立数据库及其应用系统有效存储数据满足用户信息要求和处理要求。这段定义包含三个关键要素构造最优的数据库模式即在逻辑层面设计出合理的表结构关系模式集合使其既能完整表达业务语义又具备较好的冗余控制与性能基础建立数据库及其应用系统设计工作不止于建表还包括配套的应用系统、数据入库、试运行等环节满足用户信息要求和处理要求这是设计的最终验收标准一切设计决策都应回溯到用户对存什么数据和怎么处理数据的实际需求上。从数据库体系结构可参见 数据库绪论 中的三层模式外模式、模式、内模式来看数据库设计工作横跨这三个层次概念结构与逻辑结构设计对应模式全局逻辑结构与外模式用户视图的设计物理设计对应内模式存储结构的选择。理解这条对应关系有助于把握每个设计阶段在整个体系中的位置。数据库设计的六个阶段数据库设计是一个分阶段、可迭代的工程过程共分为六个阶段需求分析阶段概念结构设计阶段逻辑结构设计阶段数据库物理设计阶段数据库实施阶段数据库运行和维护阶段前四个阶段是设计阶段后两个阶段是实现与运营阶段。下面逐阶段展开。⒈ 需求分析阶段需求分析是数据库设计的起点目标是收集和分析用户需求结果得到用数据字典描述的数据需求。这一步做不扎实后续所有设计都会失去依据。常用的调查方法包括1跟班作业深入业务一线观察用户的真实工作流程2开调查会召集相关业务人员集中讨论3请专人介绍由熟悉业务的人员做系统性介绍4询问针对调查中的具体问题找专人单独询问5设计调查表请用户填写用结构化问卷批量收集信息6查阅记录查阅现有的业务单据、报表、档案等存量资料。需求分析的产出物是数据字典详见下文数据字典一节它把分散的业务信息整理为统一的数据描述集合为概念结构设计提供输入。⒉ 概念结构设计阶段概念结构设计是对用户需求进行综合、归纳与抽象形成一个独立于具体 DBMS 的概念模型通常用 E-R 图表示。这是数据库设计的关键阶段。概念模型的独立于具体 DBMS意味着这一阶段只关注现实世界的语义抽象不涉及任何具体数据库产品的表、索引、SQL 等实现细节。从数据库绪论的两级模型抽象看概念模型属于信息世界建模强调语义表达能力是用户和数据库设计人员之间交流的语言而数据模型层次、网状、关系模型属于机器世界建模是 DBMS 实现的基础。概念结构设计正是完成从信息世界到机器世界的第一次抽象。⒊ 逻辑结构设计阶段逻辑结构设计是将概念结构转换为某个 DBMS 所支持的数据模型例如关系模型并对其进行优化例如使用范式理论。在关系数据库中这一步的核心工作是把 E-R 图中的实体、属性和联系转换为关系模式即表并按照范式理论消除不良的数据依赖。E-R 图向关系模式的转换规则是 408 的高频考点将在下文逻辑结构设计E-R 图向关系模式的转换规则一节详细展开。⒋ 数据库物理设计阶段物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构包括存储结构和存取方法。这一阶段主要考虑索引、聚集、文件组织方式等存储层细节具体权衡因素详见下文数据库物理设计一节。⒌ 数据库实施阶段实施阶段是运用 DBMS 提供的数据语言例如 SQL及其宿主语言例如 C根据逻辑设计和物理设计的结果建立数据库编制与调试应用程序组织数据入库并进行试运行。这一阶段的典型工作包括用 DDL如CREATE TABLE建立表结构、定义完整性约束用 DMLINSERT/UPDATE/DELETE/SELECT组织数据入库编写并调试应用层程序最后进行系统试运行以验证设计是否满足需求。SQL 的具体语句形式可参见仓库中的 数据库语言SQL.md建表CREATE TABLE、删除表DROP、修改表ALTER、数据插入INSERT、删除DELETE、更新UPDATE、查询SELECT等均有覆盖。⒍ 数据库运行和维护阶段数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。运行维护阶段是数据库生命周期最长的阶段包括性能监控与调优、结构修改如通过ALTER TABLE调整表结构、数据备份与恢复相关内容可参见 数据库恢复技术.md、并发控制策略的持续优化参见 并发控制.md等。数据库设计并非一次成型而是随业务变化持续演进的迭代过程。数据字典数据字典是需求分析阶段的主要成果。对数据库设计来讲数据字典是进行数据收集和数据分析所获得的主要成果是各类数据描述的集合。数据字典通常包括五个部分组成部分含义说明数据项不可再分的数据单位相当于关系中的列/属性级别的最小描述单元数据结构反映数据之间的组合关系可以由若干数据项组成也可以由若干数据结构组成或由数据项和数据结构混合组成相当于表/关系级别数据流数据结构在系统内传输的路径描述数据从来源到去向的流动过程数据存储数据结构停留或保存的地方是数据流的来源和去向之一处理过程对数据处理逻辑的描述用特定格式描述处理的输入、输出与简要处理过程其中处理过程的描述格式为处理过程描述 {处理过程名说明输入: {数据流}输出: {数据流}处理: {简要说明}}数据字典五个部分的关系可以这样理解数据项是最小的数据单位数据结构由数据项或更小的数据结构组合而成数据流与数据存储描述结构数据的流动与驻留处理过程则刻画数据如何被加工。这五个部分共同构成了对系统数据全貌的完整描述是后续概念结构设计E-R 建模的直接素材来源。设计概念结构的四类方法概念结构设计通常有四类方法自顶向下首先定义全局概念结构的框架然后逐步细化。先有全局视图再层层分解到局部。自底向上首先定义各局部应用的概念结构然后将它们集成起来得到全局概念结构。这是最经常采用的策略。典型流程是自顶向下地进行需求分析然后再自底向上地设计概念结构——即分析阶段自上而下梳理需求全局设计阶段自下而上从局部应用开始建模再集成。逐步扩张首先定义最重要的核心概念结构然后向外扩充以滚雪球的方式逐步生成其他概念结构直至总体概念结构。适合核心业务突出、外围功能逐步扩展的场景。混合策略将自顶向下和自底向上相结合用自顶向下策略设计一个全局概念结构的框架以它为骨架集成由自底向上策略中设计的各局部概念结构。既有全局骨架的约束又保留局部设计的灵活性。四类方法各有适用场景小系统可用自顶向下或逐步扩张大型复杂系统通常采用自底向上或混合策略。E-R 图概念模型的表示工具E-R 方法是抽象和描述现实世界的有力工具其图形化产物 E-R 图是概念结构设计阶段的核心交付物。E-R 图绘图要点E-R 图使用三类基本图形元素长方形表示实体型框内写上实体名椭圆表示实体的属性用无向边把实体和属性连接起来菱形表示实体间的联系菱形框内写上联系名用无向边把菱形分别与有关实体相连接并在无向边旁标上联系的类型若实体之间联系本身也具有属性则把该属性和菱形也用无向边连接上。关于联系的类型可结合 数据库绪论 中的定义理解1:1一对一实体集 A 中每个实体实体集 B 中至多有一个实体与之联系反之亦然1:n一对多实体集 A 中每个实体实体集 B 中有 n 个实体n≥0与之联系反之B 中每个实体至多与 A 中一个实体联系m:n多对多A 中每个实体与 B 中 n 个实体联系B 中每个实体与 A 中 m 个实体联系。联系本身的属性如学生与课程之间选课联系上的成绩属性必须挂在菱形上而不能挂在实体上这是画图时的常见易错点。E-R 图之间的三类冲突当多个局部 E-R 图需要集成为全局 E-R 图时不同局部视图之间往往存在冲突。E-R 图之间的冲突主要有三类1. 属性冲突1属性域冲突属性值的类型、取值范围或取值集合不同。例如同一编号在一个局部应用中定义为字符串在另一个局部应用中定义为整数。2属性取值单位冲突同一属性在不同应用中采用不同单位例如温度一个用摄氏度、一个用华氏度。2. 命名冲突1同名异义不同概念使用了相同的名字。2异名同义一义多名同一概念在不同应用中使用了不同的名字需要统一。3. 结构冲突1同一对象在不同应用中具有不同的抽象例如教材在某一局部应用中被当作实体而在另一局部应用中被当作属性需要统一抽象层次。2同一实体在不同局部视图中所包含的属性不完全相同或者属性的排列次序不完全相同需要取并集或统一属性集合。3实体之间的联系在不同局部视图中呈现不同的类型例如实体 E1 与 E2 在局部应用 A 中是多对多联系而在局部应用 B 中是一对多联系又如在局部应用 X 中 E1 与 E2 发生联系而在局部应用 Y 中 E1、E2、E3 三者之间有联系。消除这三类冲突是 E-R 图集成的核心工作也是考试中常以判断冲突类型形式出现的知识点。逻辑结构设计E-R 图向关系模式的转换规则逻辑结构设计阶段需要把 E-R 图转换为关系模式转换遵循以下六条规则规则 1一个实体型转换为一个关系模式。实体的属性就是关系的属性实体的码就是关系的码。例如学生实体可转换为关系模式学生学号姓名性别系名其中学号为码。规则 2一个 m:n 联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性而关系的码为各实体码的组合。典型例子是学生与课程之间的选课联系选课学号课程号成绩码为学号课程号的组合。m:n 联系必须转换为独立的关系模式不能合并到任一端。规则 3一个 1:n 联系可以转换为一个独立的关系模式也可以与 n 端对应的关系模式合并。如果转换为独立的关系模式则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性而关系的码为 n 端实体的码如果与 n 端合并则把 1 端的码成为外码和联系本身的属性并入 n 端关系。例如系与学生之间的 1:n 联系实践中通常选择与 n 端学生合并学生学号姓名系号 -- 把 1 端的系号并入 n 端规则 4一个 1:1 联系可以转换为一个独立的关系模式也可以与任意一端对应的关系模式合并。如果转换为独立的关系模式则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性每个实体的码均是该关系的候选码如果与某一端对应的关系模式合并则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。规则 5三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性而关系的码为各实体码的组合。规则 6具有相同码的关系模式可合并。这六条规则可以概括为一句口诀实体 1:1 模式m:n 与多元联系必须独立成表1:n 和 1:1 可合并可独立同码可合并。转换完成后还需要为各关系模式确定主码、外码外码正是实现参照完整性的关键详见 关系模型 中对外码 Foreign Key 的说明。在实施阶段这些转换结果通过 数据库语言SQL.md 中的CREATE TABLE语句落实为真实表结构并通过PRIMARY KEY、FOREIGN KEY等约束该文档约束一节有主键、唯一性、检查、缺省、外部键等约束的完整介绍固化完整性规则。数据模型的优化逻辑结构设计得到初步关系模式后还需要依据规范化理论进行优化。数据模型的优化步骤如下确定数据依赖明确各关系模式中属性之间的函数依赖关系。函数依赖是指属性间的逻辑依赖关系例如 关系数据库设计理论 中的定义设 R(U) 是一个关系模式U 是 R 的属性集合X 和 Y 是 U 的子集若对 R(U) 的任何可能关系 r都不存在两个元组在 X 上属性值相同而在 Y 上属性值不同则称 X 函数决定 Y 或 Y 函数依赖于 X记作 X→YX 称为决定因素。对各个关系模式之间的数据依赖进行极小化处理消除冗余的联系。按照数据依赖的理论对关系模式逐一进行分析考查是否存在部分函数依赖、传递函数依赖、多值依赖等确定各关系模式分别属于第几范式。按照需求分析阶段得到的各种应用对数据处理的要求分析对于这样的应用环境这些模式是否合适确定是否要对它们进行合并或分解。对关系模式进行必要的分解。规范化的核心目标是消除不好的数据库设计。以 关系数据库设计理论 中的经典案例为例关系模式UN(Sno, Cno, G, Sdept, MN)学号、课程号、成绩、系名、系主任存在三类问题数据冗余系主任名随每个选课记录重复存储浪费存储空间且维护困难产生更新异常插入异常一个系刚成立但尚无学生选课时主码Sno, Cno为空记录无法插入删除异常一个系的学生全部毕业被删除后该系信息随之丢失。消除这些弊病的方法是把 UN 分解为三个关系模式S(Sno, Sdept) SG(Sno, Cno, G) Dept(Sdept, MN)范式层次是判断优化程度的标尺详见 关系数据库设计理论1NF每个属性值都是不可再分的最小数据单位2NF在 1NF 基础上消除非主属性对候选码的部分函数依赖从 1NF 消除部分函数依赖获得3NF在 2NF 基础上消除非主属性对码的传递函数依赖BCNF关系模式中每个决定因素都是候选码消除任何属性对候选码的部分依赖与传递依赖。其中部分函数依赖与传递函数依赖的判断、UN 模式属于哪一级范式、如何分解是 408 关系数据库设计理论部分最常考查的题型建议结合仓库 关系数据库设计理论.md 完整阅读并动手练习分解过程。设计用户子模式设计用户子模式外模式是在全局逻辑结构确定后为不同用户群体定制数据视图通常通过定义视图VIEW来实现。设计用户子模式有三个要点使用更符合用户习惯的别名通过视图中的列改名使呈现给用户的字段名贴合业务语言针对不同级别的用户定义不同的视图以满足系统对安全性的要求不同角色只能看到其权限范围内的数据从数据层面实现访问控制简化用户对系统的使用把复杂的多表连接查询封装为简单视图用户只需对视图做简单查询。视图的本质是从一个或多个表或视图中导出的虚拟表其结构与数据建立在对表的查询基础上本身并不实际存储数据详见 数据库语言SQL.md 的视图 (VIEW)一节。这一设计思想与数据库体系结构中的外模式/模式映象相呼应当全局模式改变时只需调整外模式/模式映象即可保持用户视图不变从而保证数据的逻辑独立性参见 数据库绪论。数据库物理设计物理设计为逻辑数据模型选取最合适的物理存储结构存储结构和存取方法。确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素且这三个方面常常是相互矛盾的追求快速存取如建立更多索引往往占用更多存储空间、提高维护代价追求空间利用率如压缩存储可能牺牲存取速度追求低维护代价则可能无法满足性能要求。因此物理设计是一个多目标权衡的过程需要根据应用负载特点做出取舍。为了提高系统性能数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。这种分离存放策略的意义在于经常存取的数据放在高访问性能的存储区域如高速磁盘低频数据与历史数据可置于成本更低的存储介质易变数据与稳定数据分离可减少更新操作对稳定数据的干扰并降低维护成本。物理设计中的存取方法选择与索引密切相关。索引使数据库程序无须对整个表进行扫描即可快速定位数据可大大加快检索速度、加速表间连接并在ORDER BY和GROUP BY时显著减少排序与分组时间详见 数据库语言SQL.md 的索引一节其中还区分了聚集索引与非聚集索引聚集索引与数据混为一体、叶节点存储实际数据非聚集索引独立于数据行、叶节点存储关键字值和行定位器。需要注意的是索引在加速读操作的同时会增加写操作与维护开销这正是存取时间与维护代价矛盾的一个具体体现。与仓库其他笔记的衔接本篇笔记是 CS-Xmind-Note 数据库知识体系的中枢节点。建议按以下顺序串联学习先读 数据库绪论.md掌握实体、属性、码、域、联系1:1/1:n/m:n等概念模型基础术语以及 E-R 图的基本画法再读 关系模型.md理解关系模式的六大性质与实体完整性、参照完整性、用户定义的完整性三类约束然后进入本文的六阶段设计流程重点掌握 E-R 图、转换规则与物理设计权衡设计得到的模式是否最优用 关系数据库设计理论.md 的函数依赖与范式理论来检验与优化最后通过 数据库语言SQL.md 把设计结果落地为真实的建表、约束、视图与索引语句。此外仓库根目录的 数据库.md 汇总了全部十章笔记的索引可作为通读路线图原笔记对应的 数据库设计.xmind 思维导图文件可用于快速复习与知识结构回顾。需要特别提醒的是本文所有结论均基于仓库内文档的原文整理与扩展具体细节如处理过程描述格式、转换规则、冲突分类等以原笔记为准。赞分享文档教程知识库【免费下载链接】CS-Xmind-Note计算机专业课408思维导图和笔记计算机组成原理第五版 王爱英数据结构王道计算机网络第七版 谢希仁操作系统第四版 汤小丹项目地址https://gitcode.com/gh_mirrors/cs/CS-Xmind-Note点击查看免费下载相关推荐数据库触发器设计CS-Xmind-Note笔记应用实例数据库触发器设计CS Xmind Note笔记应用实例 触发器基础概念 触发器Trigger是数据库中的特殊存储过程它会在指定的数据库事件发生时自动执行文档教程知识库GeneratedHydrator实战案例处理复杂对象的高效方案GeneratedHydrator实战案例处理复杂对象的高效方案 GeneratedHydrator是一个专为PHP开发人员设计的高性能对象水合器库能够快速开发工具DataV数据可视化设计模式从需求到实现的方法论DataV数据可视化设计模式从需求到实现的方法论 你是否还在为数据大屏设计效率低下而烦恼是否面临组件复用性差、需求变更难以响应的问题本文将系统拆解Data前端数据可视化UI组件上一篇WeChatMsg 微信聊天记录导出与年度聊天报告完整上手指南与现状提醒下一篇如何为VLC播放器打造专业级现代化界面VeLoCity皮肤终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?