数据库系统模式与开发方法
1.数据库系统模式
1.1三级模式的概念与服务对象
-
模式:模式又称逻辑模式,是数据库当中全体数据的逻辑结构和特征的描述,为 DBA 服务。它是数据的组织方式,体现了在 DBA 眼中数据是如何组织起来的,包括数据库对象及对象之间的关系。一个数据库只有一个模式,它综合了所有用户的需求,是所有外模式的数据来源。
-
外模式:外模式又称子模式或用户模式,为最终用户或程序员服务,是数据库的一部分,是模式的子集。它是数据库用户使用的局部数据的逻辑结构和功能描述,可设置单独的权限,起到安全机制的作用,类似于一层纱帘,用户只能看到允许看到的数据。一个数据库可以有多个外模式,反映了不同用户的需求。
-
内模式:内模式是 DBMS 在存储设备上组织数据的方式,为 DBMS 服务。它包含数据在计算机中的表示、存储和取出方式等要素,如字符集决定了数据在硬盘上的二进制串表示,存储方式有堆存储、聚簇存储等。一个数据库只有一个内模式。
1.2三级模式的数据特征
-
模式:包含以人的角度观察的所有数据,是数据的全局逻辑结构。
-
外模式:包含以人的角度感兴趣的那一小部分数据点,重在数据使用,可根据用户需求进行数据组合和权限设置。
-
内模式:以机器的角度感知的所有数据,重在数据存储,负责将数据高速存到硬盘上并高速取出。
1.3三级模式的顺序与关系
-
顺序:由上至下为外模式、模式、内模式,模式位于中间。先定义模式,再定义外模式,因为没有模式就没有外模式。
-
关系:模式与外模式是一对多的关系,一个模式可以对应多个外模式;模式与内模式是一对一的关系。外模式依赖于模式,内模式依赖于模式所定义的数据及其联系。
1.4两级映像的作用
-
外模式到模式的映像:从模式中抽取数据进入外模式,起到滤镜的作用,让用户只看到感兴趣的部分。其抽取规则和变换规则通常保存在外模式描述中,保证了数据的逻辑独立性,即当模式改变时,通过修改映像可保持外模式不变,从而不影响程序员的工作。
-
模式到内模式的映像:定义了数据的全局结构与存储结构之间的关系,保障了数据的物理独立性。当物理存储位置等发生变化时,通过该映像可保持模式和外模式不变,不影响程序。
2.数据库开发方法
2.1关系数据模型的发展
-
奠基人物与理论:E.F.Codd 奠定了关系数据库理论,提出了 OLSPP、123 范式和 BC 范式等。他使用关系代数、集合理论和一阶谓词逻辑进行探讨。
-
分支与 SQL 语言:关系数据库理论发展出关系代数和关系演算两个分支。关系代数是一种数学运算,符合 Codd 的基本思想;关系演算是在关系代数基础上简化而来,使用命令动词。SQL 语言同时支持关系代数和关系演算。
2.1结构化生命周期法
-
阶段划分:包括规划、分析、设计、实施、运维五个阶段,目的是弄清楚开发对象的业务逻辑。
-
模型演进:从管理方向到技术方向,依次有组织机构图、结构功能图、业务流动图、数据流程图等模型。数据流程图将功能和数据合在一张图里,之后向功能方向演进为仔细划分未来系统的子系统,向数据方向演进为 ER 图。
-
原型法的作用:在需求分析阶段使用原型法,其作用是诱导用户充分表达需求,分为丢弃式原型和进化式原型。丢弃式原型用于嵌入其他开发方法中,用完即丢弃;进化式原型用于真正的系统开发,不断迭代优化。
2.3系统设计
-
设计内容:用技术手段把业务逻辑表达出来,分为应用系统和基础支撑环境。应用系统包括输入、处理、输出(IPO),其中输入输出合为界面,处理部分分为概要设计和详细设计。
-
模块设计:概要设计描述模块间关系,详细设计描述模块内的处理过程。功能模块图考虑难度和工作量对子系统进行合并与拆分,与功能结构图有所不同。
-
模块内设计:包括处理工具和程序说明书。处理工具用于设计人员之间交流思想,程序说明书是与程序员对接的严谨文档。
2.4系统测试与切换
-
测试步骤:包括单元测试、集成测试、系统测试和验收测试。单元测试针对每个模块进行,集成测试将所有模块连接起来测试,系统测试将软件与技术支撑环境结合测试,验收测试通过后交付用户。
-
切换方式:有直接切换、并行切换和逐步切换三种方式。直接切换简单但风险大;并行切换安全但成本高;逐步切换适用于各子系统相对独立的情况。
3.项目管理
3.1迭代方法
-
迭代的定义与特点:迭代是重复再重复,但不是机械重复,具有有限次和每次更接近目标两个特点。迭代有两种方式,量的发展和质的深化,通常量的发展更易把控和考核。
-
迭代次数:迭代通常为 3 - 5 次,个别情况下可以是 2 次或超过 5 次,但超过 5 次要非常慎重。
-
MOSCO 模型:包括必须有、应该有、可以有三个类别,第一次迭代先做必须有的部分,第二次迭代做应该有的部分,第三次迭代做可以有的部分。
3.2模块优先级选择
-
重要性判断:模块工作量大的更重要,基础模块(如录入模块)因其他子系统或模块依赖其提供的数据而重要,前端模块(与客户对接的模块)应优先处理,可让客户先感受到成果。
-
风险与成本考虑:小项目先做风险高的部分,若做不出来可果断放弃,避免沉默成本;大项目先做简单的部分,先获取收益,随着项目进行可能解决风险高的问题。
3.3不同规模项目的处理方式
-
大项目:适合使用 up 方法,需要非常规范,分步骤进行,所有人都要做到位。大项目通常采用模型驱动的方法,以面向对象技术为中心。
-
小项目:相对灵活,可以直接实施,无需进行规划、分析、设计等步骤。小项目可采用产品驱动的方法,以迭代思想为主。
4.开发方法与工具
4.1开发方法的分类
-
模型驱动与产品驱动:模型驱动注重过程,适用于大项目;产品驱动注重结果,适用于小项目。
-
具体方法:包括结构化思想、面向对象思想和 CASE 方法等。结构化生命周期法强调过程性,以功能为中心;CASE 方法以数据为中心,有中心化的数据库。
-
敏捷方法:结合了面向对象思想和原型化思想,既正式又灵活,大行其道。它有多种变种,如以原型化为主的 SP、以面向对象为主的 up 和两者各占一半的敏捷建模。
4.2模型与工具
-
模型类型:包括 3D 模型、图形模型和数学模型。在数据库开发中,常用的模型有结构生命周期的模型和面向对象开发的模型,如用例图、类图、顺序图、活动图和状态图等。
-
工具:有小工具和大工具,最大的工具是 CASE,它是一套完整的环境。还有计算机辅助系统工程等工具,用于提高工作效率。反向工程又称逆向工程,但目前不成熟,部分情况下不如借助人工智能。
5.知识与技术
-
知识的内化与外化:显性知识读懂并理解的过程称为内化,将道理编码写出来的过程叫显性化。书架上的书不代表知识,头脑中的才是知识。
-
不同技术领域:包括项目管理技术、供应链技术、结构化思想的技术、数据库技术等。面向对象思想在开发、编程和数据库三个领域应用,但面向对象数据库发展不佳。
6.系统开发方法的区别
-
传统方法:结构化系统开发方法重功能、轻数据,分分析、设计、实施三个阶段;信息工程重数据、轻功能。
-
需求分析:需求来源包括业务需求、用户需求、文档和老系统。系统需求分功能需求和非功能需求,非功能需求包括性能、安全性、完整性、界面友好等。
-
数据流程图与数据字典:数据流程图包括外部实体、处理、数据流和数据存储四个要素,与数据字典共同描述数据处理和流动过程。数据字典比数据流程图多数据项和数据结构两个要素,一图一文,一动一静。
-
实体关系图:用于表达逻辑模型,通过界定问题领域、分析实体及其联系来绘制。但该方法工作量大、难度高,实际应用中较少使用。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)