面向对象的关系数据库设计
- 格式:doc
- 大小:31.50 KB
- 文档页数:4
关系型数据库与面向对象数据库的异同点分析在当今数字化的时代,数据库技术作为信息存储和管理的核心手段,对于企业和组织的运营起着至关重要的作用。
关系型数据库和面向对象数据库是两种常见的数据库类型,它们在数据存储、处理和应用方面存在着显著的差异,同时也有一些相似之处。
一、关系型数据库关系型数据库是基于关系模型建立的,它将数据以表格的形式进行组织。
这些表格被称为关系,通过行和列来存储数据。
1、数据结构关系型数据库中的数据被规范化为一系列具有明确定义的表,每个表包含特定的列(属性)和行(记录)。
列具有固定的数据类型,并且表之间通过主键和外键建立关联,以确保数据的一致性和完整性。
2、数据操作关系型数据库主要使用结构化查询语言(SQL)进行数据操作。
SQL 提供了丰富的操作命令,如插入(INSERT)、更新(UPDATE)、删除(DELETE)和查询(SELECT)等,使得对数据的操作具有高度的标准化和可读性。
3、优点数据一致性和完整性:通过严格的约束和规范化规则,保证了数据的准确性和可靠性。
成熟稳定:经过多年的发展和广泛应用,技术成熟,有大量的工具和资源支持。
易于理解和使用:其表格结构和 SQL 语言相对简单直观,对于初学者和非技术人员较容易上手。
4、局限性处理复杂数据类型:对于诸如嵌套结构、层次结构或多态性等复杂数据类型的支持不够灵活。
性能问题:在处理大规模数据和复杂关系时,可能会出现性能瓶颈。
二、面向对象数据库面向对象数据库则是基于面向对象编程的概念构建的,它将数据和操作封装在对象中。
1、数据结构面向对象数据库以对象为基本单元存储数据,对象可以包含属性和方法。
对象之间通过引用和继承关系相互关联,形成复杂的对象网络。
2、数据操作面向对象数据库通常使用面向对象的编程语言(如C++、Java 等)进行数据操作,直接对对象进行操作和处理。
3、优点对复杂数据的支持:能够很好地处理具有复杂结构和关系的数据,如对象嵌套、继承等。
UML面向对象分析与设计大作业前言“UML面向对象分析与设计”是计算机专业和软件工程等相关专业的一门重要课程,也是其他理工科专业的热门选修课程。
“程序设计语言”、“计算机网络”、“数据库原理”和“数据机构”等是它的前导课程,学好本课程对学生毕业后从事软件开发有着极为重要的作用。
要学好这门课,仅仅通过课堂教学或自学掌握理论知识是远远不够的,还必须加强实践。
特在学期末引入uml的综合分析与设计,从实际项目出发,使学生学会运用软件工程基本理论知识,UML建模语言和rose建模环境,去解决软件开发中的实际问题,达到学以致用的目的。
面向对象软件开发技术项目的引入及需求简易教学管理系统的分析、设计与实现一、设计的目的1.初步了解UML语言的概念、结构、语义与表示方法;2.掌握UML建模工具Rational Rose的使用方法;3.给出某个简单系统的模型,能够熟练地使用Rose工具表达;二、设计理论基础1. 面向对象的程序设计C++或JAVA程序设计课程;2.数据结构或算法课程2.SQLServer或mysql数据库系统;3. 熟悉传统软件工程以及软件测试技术。
三、设计内容与步骤需求陈述:简易教学管理系统主要提供两个方面的服务:选课管理,负责新学期的课程选课注册。
成绩管理,负责学生成绩管理。
(1)简易教学管理系统---选课管理应提供的服务如下:1.录入与生成新学期课程表教学管理人员在新学期开学前录入新学期的课程,打印将开设的课程目录表,供师生参考选择。
如果某门课实际选课的学生少于10人,则停开该课程,把该课程从课程表中删除;如某课程选课学生多于60人,则停止选课。
2.学生选课注册新学期开始前一周为学生选课注册时间,在此期间学生可以选课注册,并且允许改变或取消注册申请。
每个学生选课可不允许超过4门,每门课最多允许60名学生选课注册。
3.查询可以查询课程信息、学生选课信息和学生、教师信息。
学生、教师、教学管理人员可以查询课程表,获得课程信息。
第9章面向对象设计9.1 面向对象设计与结构化设计与结构化的设计相比,面向对象的设计更符合复杂的、随机性较强和考虑并发性的系统软件设计,而不适合逻辑性很强的系统软件设计。
结构化软件设计一般从系统功能入手,按照需求将系统功能分为若干个子功能模块。
但是,用户的需求是在不断变化的。
需求的改变往往会对功能模块产生影响,从而对整个系统产生影响,而面向对象的设计基于类、对象、封装、继承等概念,相比之下,需求的变化对系统的局部影响并不容易扩展到全局。
因此,面向对象设计方法比结构化设计方法更具有优势,使用范围更广。
由于在类中封装了属性和方法,因此在面向对象的类设计中已经包含了面向过程中的过程设计。
此外,与面向过程中的数据设计所不同的是,面向对象设计中的数据设计并不是独立进行的,面向对象设计中的9.2 面向对象设计与面向对象分析的关系设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的系统实现方案。
与传统的软件工程方法不同的是,面向对象的方法不强调需求分析和软件设计的严格区分。
实际上,面向对象的需求分析和面向对象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐扩充、细化和完善分析阶段所得到的各种模型的过程。
严格的意义上来讲,从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在不同范围的运用。
面向对象设计也不仅仅是对面向对象分析模型进行细化。
面向对象分析到面向对象设计是一个平滑的过渡,即没有间断没有明确的分界线。
面向对象分析建立系统的问题域对象模型,而面向对象设计是建立求解域的对象模型。
•9.3.1 面向对象设计的过程面向对象的设计过程一般进行以下几个步骤。
(1)建立软件体系结构环境图在软件体系结构设计开始的时候,设计应该定义与软件进行交互的外部实体(其他系统、设备和人员等)以及交互的特性。
一般在分析建模阶段可以获得这些信息,并使用软件体系结构环境图对环境进行建模,描述系统的出人信息流、用户界面和相关的支持处理。
数据库管理中的数据模型设计与分析数据模型是数据库中的核心概念,它用于描述数据库中的数据结构、数据属性以及数据之间的联系。
在数据库管理中,数据模型设计与分析是一个关键步骤,它对于业务流程的正确性、数据的一致性以及系统的性能都起着重要的作用。
本文将深入探讨数据库管理中的数据模型设计和分析,并提供一些有效的方法和技巧。
一、数据模型概述数据模型是一种用于表达和组织数据库中信息的方式,常用的数据模型包括层次模型、网络模型、关系模型以及面向对象模型等。
在数据库管理中,关系模型是被广泛应用的,因为它简单、易于理解和使用。
关系模型使用表格、行和列来表示数据,将数据划分为多个实体,实体之间的关系通过关联键来建立。
二、数据模型设计数据模型设计是将现实世界的业务需求转化为关系模型的过程。
在数据模型设计阶段,需要考虑以下几个方面:1. 数据需求分析:在进行数据模型设计之前,首先需要明确业务需求和数据需求。
这包括对数据的基本属性、数据之间的关系以及数据的约束条件进行全面的分析和理解,用于建立关系模型的基础。
2. 概念模型设计:在明确了数据需求之后,可以利用实体关系图(ER图)来表示数据的概念模型。
实体关系图是一种图形化的方法,用于视觉化数据库中的实体、属性和关系。
通过ER图,可以更清晰地了解业务实体之间的关系,包括一对一、一对多和多对多等。
3. 范式设计:范式是关系模型中的规则,用于确保数据库的数据一致性和正规化。
在设计关系模型时,需根据不同的范式进行数据设计。
常用的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
范式设计可以提高数据库的性能和效率,减少数据冗余和更新异常。
4. 物理模型设计:物理模型是关系模型转化为数据库系统中的数据结构、索引、存储空间以及其他细节等。
在物理模型设计中,需要选择适当的数据类型、优化查询性能、设置合适的索引以及分配存储空间等。
三、数据模型分析数据模型分析是评估和优化数据模型的过程,旨在提高数据库系统的性能和效率。
i g一●基于U M L的关系数据库设计与实现程晓广李会刚姜清超(河北软件职业技术学院河北保定071000)【籀要】介绍使用u札进行数据库设计的方法。
通过应用实例,构造u虬模型,根据淀的方法使I加模型转化为所需的关系型数据库。
[关键词]U M L关系型数据库实例中圈分类号:T P3文献标识码:A文章编号:1671—7597(2008)0620045一掣u扎和统一建模方法是在综合3种具有代表性的面向对象方法B ooch,O M T和O O SE的基础上提出的。
日前已在软件工程领域得到广泛使用.统一建模方法是面向系统全局的,一方面可以完成软件系统的分析设计,另一方面又可以利用各种类型的U W L图捕获用户需求、描述需求配置以完成数据库设计,把这两个过程统一在整个软件分析设计的全过程中,通过可视化设计模型,实现软件开发周期中的业务分析、软件开发、数据库开发组之间的需求统一。
基于u札系统分析的关系数据库设计是一个用例驱动的开发过程,其工作流程由业务建模、数据库系统分析与设计、数据库转换等几个步骤组成,每一步骤均为上一步骤基础的深化,呈增量递进式发展。
本文通过在线考试系统为例讨论基于UM L系统分析的关系数据库设计流程并转化为SQLser ver数据库的方法。
一、薹于U M L的在媛考试系铳■求分析(一)系统总体功能的需求分析在线考试系统的基本功能是利用计算机和网络来组织考试。
考试前,教师建立相关考试题型的题库;考试时。
计算机按照教师的要求从题库中随机抽题自动生成试卷,学生在线答题;考试后,学牛可以通过网络查询成绩,系统能对考试情况进行统计与分析,对试卷的难度和信度进行评估。
为了实现这一目标,使本系统能够充分实现考试功能,顺利地完成每一次考试的流程,本系统至少应该具有以下功能:1.系统能够对学生、教师、管理员的基本信息进行管理,以便在登录在线考试系统时,验证用户的身份和为考生形成完整的考试信息档案。
2.试题库中应包含多种类型的题型,考试时系统能够实现在试题库中随机抽取试题组成试卷。
数据库模型是数据库设计中的核心要素之一,它定义了数据库中数据的组织和结构。
不同的数据库模型适用于不同的应用场景,并具有各自的特点和设计原则。
在本文中,我将介绍数据库模型的种类、特点和设计方法,帮助读者更好地理解和应用数据库模型。
介绍什么是数据库模型数据库模型是对数据库中数据组织和结构的一种抽象表示。
它描述了数据库中的实体、关系、属性之间的对应关系,以及对数据进行存储、检索、修改和删除等操作的规则和约束。
数据库模型是数据库实际设计的基础,决定了数据的可靠性、稳定性和高效性。
数据库模型的重要性数据库模型对数据库的性能、扩展性和易用性有着重要影响。
一个好的数据库模型能够更好地满足应用的需求,提高数据的存储效率和操作效率,同时降低数据冗余和数据不一致性的风险。
因此,选择合适的数据库模型对于数据库设计来说非常重要。
数据库模型的分类数据库模型可以分为以下几种主要类型:层次模型、网状模型、关系模型、面向对象模型、文档模型和键值模型。
接下来,我们分别对这些模型进行详细介绍。
层次模型层次模型是数据库模型的一种最早的形式,它将数据组织成一个树状结构。
层次模型中的数据以父子关系进行组织,每个节点可以有多个子节点,但只能有一个父节点。
这种模型适用于嵌套关系比较简单的数据,例如组织机构、家族关系等。
层次模型的特点是简单直观,易于理解和操作,但对数据的表示能力有一定的限制。
网状模型网状模型是数据库模型的另一种较早期的形式,它将数据组织成一个图状结构。
网状模型中的数据以节点和边的形式表示,节点表示实体,边表示实体之间的关系。
不同于层次模型中只能有一个父节点的限制,网状模型中的节点可以有多个父节点和多个子节点。
这种模型适用于表示复杂的数据关系,例如供应链管理、电力系统等。
网状模型的特点是较好地解决了层次模型的限制,但对于数据操作的复杂性增加了一定的挑战。
关系模型关系模型是当前应用最广泛的数据库模型,它将数据以二维表的形式进行组织。
软件设计知识点总结一、面向对象设计面向对象设计是面向对象编程的基础,是软件设计中的重要知识点。
面向对象设计包括以下内容:1. 类和对象:类是对象的抽象,对象是类的实例。
在面向对象设计中,需要对系统中的各种实体进行抽象,形成不同的类,然后通过类来创建对象。
2. 封装和继承:封装是指将数据和行为打包在一个对象中,通过接口来访问对象的数据和行为。
继承是指一个类可以派生出另一个类,继承了父类的属性和行为。
3. 多态:多态是指同样的消息可以发送给不同的对象,对象可以根据消息的不同做出不同的响应。
4. 设计原则:如单一责任原则、开闭原则、依赖倒置原则等。
二、设计模式设计模式是软件设计中常用的解决问题的方法和经验总结。
设计模式包括以下内容:1. 创建型模式:包括单例模式、工厂模式、抽象工厂模式等。
2. 结构型模式:包括适配器模式、装饰器模式、代理模式等。
3. 行为型模式:包括观察者模式、模板方法模式、策略模式等。
设计模式能够帮助软件设计人员解决常见的设计问题,提高软件的设计质量和重用性。
三、架构设计架构设计是指对软件系统整体结构的设计。
架构设计包括以下内容:1. 分层架构:将软件系统划分为不同的层次,如表示层、业务逻辑层、数据访问层等。
2. 微服务架构:将软件系统划分为多个小型的、相互独立的服务,每个服务都有自己的数据库。
3. 领域驱动设计:将软件系统划分为多个领域,每个领域都有自己的模型、服务和数据。
4. 架构风格:包括RESTful架构、消息驱动架构、事件驱动架构等。
架构设计可以帮助软件设计人员对软件系统整体结构有一个清晰的认识,从而能够更好地进行详细设计和开发。
四、数据库设计数据库设计是指对软件系统的数据库进行详细的设计。
数据库设计包括以下内容:1. 实体-关系模型:对系统中的实体和实体之间的关系进行建模。
2. 范式:包括第一范式、第二范式、第三范式等。
3. 性能设计:包括索引设计、分区设计、缓存设计等。
面向对象数据库面向谁? 它的市场在哪里?陶伟编译当今冠以面向对象的东西很多,什么面向对象分析,面向对象设计,面向对象语言,面向对象操作系统,面向对象软件工程,等等,诸如此类,不胜枚举。
似乎凡是和面对象挂上了边,就要好卖得多。
其实面向对象也不是包治百病的灵丹妙药,数据库加上了面向对象同样不可能解决所有的问题,它不是大街上的冰棍,人人都可以买,它有自己独特的应用领域和特有的用户群。
向不懂C++或Smalltalk的人兜售面向对象数据库,无异于对牛弹琴。
面向对象数据库的用户主要是从事系统软件和高级应用软件开发的程序员和系统设计人员,它不是大众数据库,在这方面它有别于关系数据库面。
面向对象数据库好比是医生用的手术刀,干的是"细活儿",和家庭主妇用的菜刀(关系数据库)不一样,那是用来干"粗活儿"的。
面向对象数据库是什么? 面向对象数据库=数据库系统+面向对象系统面向对象数据库必须满足两条准则:首先,它是一个数据库管理系统,其次它是一个面向对象系统。
第一条准则可以翻译成六条特征:持久性、缓冲管理、数据共享、数据可靠性(事务管理和恢复)、即席查询以及模式修改。
第二条准则可以翻译成:封装性、继承性、多态、对象标识、计算完整性、复杂对象和可扩展性。
除了基本定义之外,为了满足所谓的非常规应用领域,还要引入一些扩展的特征:如版本管理、长事务、协同工作、触发和约束等。
其中最重要的是封装性、继承性、多态,它们充分体现了面向对象的特征。
面向对象数据库的应用领域面向对象数据库的应用面比较窄,主要集中于系统级的软件开发,以及数据密集的、复杂的应用软件开发,包括: ▲计算机辅助设计CAD ▲计算机辅助制造CAM ▲计算机集成制造系统CIMS ▲计算机辅助软件工程CASE ▲超大规模集成电路设计VLSI Design ▲地理信息系统GIS ▲决策支持系统DSS 这些应用领域和传统的商业应用领域有着显著不同,它们表现为复杂的数据类型,而不是简单的二维表,复杂的数据结构上定义着复杂的操作语义,需要不同层次的数据抽象能力,这些均是传统数据库系统所无法满足的。
《面向对象系统的分析与设计》学习报告面向对象系统的分析与设计课程是本专业的一门重要的专业课。
通过本课程的学习,使我在已有的计算机软硬件基础知识、程序设计知识、数据库和网络通信知识的基础上系统掌握了面向对象系统的分析与设计方法和技术,并初步具备了针对特定环境下的应用问题进行信息系统开发(包括系统分析、设计与实现)的能力。
现将学习情况作以下汇报。
一、面向对象概述在20世纪60年代以前,软件开发者构造的软件系统大多都是较小的,且相对简单。
编程语言与编程环境也相对简单,随着软件复杂性的增长,为了更好地维护代码,软件开发也需要方法来进行约束。
传统的方法中,结构化方法和基于建模方法是典型的软件开发方法。
结构化方法是结构化分析、结构化设计和结构化编程的总称。
结构化方法的思想萌发于20世纪60年代,是在70年代由和等人被系统地进出来。
其目的在于,提供一个有序的机制,通过抽象来理解待开发的系统,试图产生结构良好的软件系统。
但对于较复杂的系统而言,容易导致模块的低内聚和模块间的高耦合,从面使得系统缺乏灵活性和可维护性。
基于建模方法在20世纪70年代末提出,即的实体——关系法与的关系数据库理论相结合提出的一种新的软件开发方法。
其强调对信息实体建模,而不是对象建模。
结构化方法和基于建模方法都没有较强地描述系统的动态行为的能力。
随着计算机技术的飞速发展,计算机管理系统应用的普与,企业信息化势在必行。
传统开发方法结构化开发的软件存在很多问题,其有稳定性、可修改性和可重用性都比较差,生产效率低等缺陷,这是因为传统的软件开发是面向过程的。
然而,用户需求的变化大部分是针对功能的,采用面向对象方法开发可以满足用户的需求,因为面向对象有以下优点:能够比较自然地反映现实事物,可重用性、可维护性和可扩展性比较强。
什么是面向对象呢?“面向对象”本身没有任何意义。
“对象”大概是英语中最普通的一个单词。
它在字典中的定义是这样的。
对象:能感觉到或能够被感觉到的东西。
面向对象的关系数据库设计
2007-11-23 21:29
一、 概念的区分
有些人把面向对象的数据库设计(即数据库模式)思想与面向对象数据
库管理系统(OODBMS) 理论混为一谈。其实前者是数据库用户定义数据库模式的
思路,后者是数据库管理程序的思路。用户使用面向对象方法学可以定义任何一
种DBMS数据库,即网络型、层次型、关系型、面向对象型均可,甚至文件系统设
计也照样可以遵循面向对象的思路。
面向对象的思路或称规范可以用于系统分析、系统设计、程序设计,也可以
用于数据结构设计、数据库设计。OOSE自上至下、自始至终地贯彻面向对象思
路,是一个一气呵成的统一体。面向对象的数据库设计只是 OOSE 的一个环节。
二、数据库设计的重要性
一般数据库设计方法有两种,即属性主导型和实体主导型。属性主导型从归纳
数据库应用的属性出发,在归并属性集合(实体)时维持属性间的函数依赖关系。
实体主导型则先从寻找对数据库应用有意义的实体入手,然后通过定义属性来定
义实体。一般现实世界的实体数在属性数 1/10 以下时,宜使用实体主导型设计
方法。面向对象的数据库设计是从对象模型出发的,属于实体主导型设计。
一般数据库应用系统都遵循以下相关开发步骤:
1 、设计应用系统结构;
2 、选择便于将应用程序与 DBMS 结合的DBMS体系结构,如RDBMS;
3 、根据应用程序使用的环境平台,选择适宜的DBMS(如Oracle)和开发工具
(如PB);
4 、设计数据库,编写定义数据库模式的SQL程序;
5 、编写确保数据正确录入数据库的用户接口应用程序;
6 、录入数据库数据;
7 运行各种与数据库相关的应用程序,以确认和修正数据库的内容。
对以上各步骤,有几点需要 说明:
(1) 这不是瀑布模型,每一步都可以有反馈。以上各步不仅有反馈、有反复,
还有并行处理。
比如一些库表在数据录入时,另一些库表设计还在修改。
这与我们的递增式开发方法有关,也与面向对象的特征有关。
(2) 上述顺序不是绝对的,大多数场合是从第三步开始的。
(3) 对大多数数据库应用系统来说,上述各步中最重要、最困难的不是应用
系统设计而是数据库设
三、DBMS的支持和数据库设计
很多数据库应用系统开发者不重视数据库设计的原因是:他们太迷信
DBMS,认为购入一个功能强大的 DBMS后数据库设计就不困难、不重要了。一些
国内外的数据库教材常常是在为DBMS的开发厂商做宣传,而很少站在数据库用
户角度,从数据库应用系统出发介绍数据库设计方法。结果往往使读者搞不清书
中介绍的是数据库管理程序的设计思想,还是应用这种 DBMS 进行数据库设计的
思想。
其实,DBMS只是给用户为已采用的数据库提供一个舞台,而是否使用这个舞台上
的道具以及唱什么戏,则完全取决于用户的戏剧脚本和导演(开发者)的安排。例
如,公路局系统所使用的数据库管理系统,是以二维表为基本管理单元、支持所有
关系代数操作、支持实体完整性与实体间参照完整性的全关系型 RDBMS,而我们
要在这个舞台上利用上述"道具"设计一个面向对象的关系数据库。
四、应用对象模型与RDBMS模型的映射
数据库设计(模式)是否支持应用系统的对象模型,这是判断是否是面向
对象数据库系统的基本出发点。由于应用系统设计在前,数据库设计随后,所以应
用系统对象模型向数据库模式的映射是面向对象数据库设计的关键。
1、三层数据库模式面向对象模型的扩展
一般数据库设计多参照ANSL/SPARC关于数据库模式的3层标准结构提
案。最接近物理数据库的内部模式由 DBMS 提供的SQL来描述。概念模式可以由
若干个内部模式聚集而成,它是由数据库用户规范的一些表的集合。一般的概念
模式是数据库物理模式作用域的边界,它能实现数据库的物理意义、特定DBMS
的特殊操作对外部应用程序的信息隐蔽。外部模式是从特定用户应用角度看待的
数据库模式,从不同的应用出发对同一概念模式可以给出多种不同的外部模式。
当外部应用系统以对象模型进行抽象时,从各个应用出发抽象出的对象模型可以
映射到外部模型上,对此我们不妨称之为外部对象模型。但是,外部模型只是概念
模型的子集,所以面向对象的数据库设计核心在于系统对象模型(不妨称之为概
念对象模型) 向数据库概念模型的映射 。
2、对象模型向数据库表的映射规则
由于 RDBMS 是以二维表为基本管理单元的,所以对象模型最终是由二维表及表
间关系来描述的。换言之,对象模型向数据库概念模型的映射就是向数据库表的
变换过程。有关的变换规则简单归纳如下:
(1) 一个对象类可以映射为一个以上的库表,当类间有一对多的关系时,一
个表也可以对应多个类。
(2) 关系(一对一、一对多、多对多以及三项关系)的映射可能有多种情况,
但一般映射为一个表,也可以在对象类表间定义相应的外键。对于条件关系的映
射,一个表至少应有3个属性。
(3) 单一继承的泛化关系可以对超类、子类分别映射表,也可以不定义父类
表而让子类表拥有父类属性;反之,也可以不定义子类表而让父类表拥有全部子
类属性。
(4) 对多重继承的超类和子类分别映射表,对多次多重继承的泛化关系也
映射一个表。
(5) 对映射后的库表进行冗余控制调整,使其达到合理的关系范式。
3、数据库模式要面向应用系统
我们选择面向对象的系统设计也好,面向对象的数据库设计也好,根本目
的是服务于应用系统的需要。
五、面向对象关系数据库设计效果
从某种意义上讲,是数据库设计的面向对象特征最终奠定了整个系统的面向对
象性,才使面向对象方法在程序开发阶段全面开花。其效果归纳如下:
1、数据库结构清晰,便于实现 OOP
由于实现了应用模块对象对数据库对象的完全映射,数据库逻辑模型
可以自然且直接地模拟现实世界的实体关系。用户所处的当前物理世界、系统开
发者所抽象的系统外部功能,与支持系统功能的内部数据库 (数据结构)一一对
应,所以用户、开发者和数据库维护人员可以用一致的语言进行沟通。特别是对
多数不了解业务的程序开发人员来说,这种将应用对象与相应的数据对象封装在
对象统一体中的设计方法,大大减轻了程序实现的难度,使他们只要知道加工的
数据及所需的操作即可,而且应用程序大多雷同,可以多处继承由设计人员抽象
出来的、预先开发好的各种物理级超类。
2、数据库对象具有独立性,便于维护
除了数据库表对象与应用模块对象一一对应外,在逻辑对象模型中我们
没有设计多重继承的泛化关系,所以这样得到的数据库结构基本上是由父表类和
子表类构成的树型层次结构,表类间很少有继承以外的复杂关系,是一个符合局
部化原则的结构,从而使数据库表数据破坏的影响控制在局部范围且便于修复,
给系统开通后的数据库日常维护工作带来便利。
3、需求变更时程序与数据库重用率高,修改少
在映射应用对象时,除关系映射规范化后可能出现一对多的表映射外,
大多数应用对象与表对象是一一对应的。我们可以把规范化处理后的、由一个应
用对象映射出来的多个表看成一个数据库对象。因此当部分应用需求变更时,首
先,系统修改可以不涉及需求不变更的部分。其次,变更部分的修改可以基本上只
限于追加或删除程序模块或追加新库表,而基本上不必修改原有程序代码或原有
库表定义,从而大大减少了工作量,降低了工作难度。
六、最简单的就是最好的
客观世界是错综复杂的,计算机科学理论的发展也越来越高深、复杂。然而,
人类探索理论和技术的最终目的是:让客观世界的复杂变简单,最简单的就是最
好的。为此我们遵循以下原则:
1、慎用外键
RDBMS 支持复杂关系的能力很强,无论用户怎么在逻辑上设定外键,它基
本上都能从物理上帮用户实现。但是外键把许多独立的实体牵连在一起,不仅使
RDBMS 维持数据一致性负担沉重,也使数据库应用复杂化,加重了程序开发负担。
这样的数据库很难理解,很难实现信息隐蔽性设计,往往把简单问题复杂化。
2、适当冗余
减少数据库冗余的设计思路产生于70年代,它是促使 DBMS 进步的重要
动力之一。然而,犹如为了节省2个字节的存储空间而酿成了如今全球为之头痛
的2000年问题一样,它是计算机硬件主导时代的产物。以今天国内计算机市场价
格为例,6G服务器硬盘的价格不过2000元,而上海物价局 1996 年颁发的一个人
月软件开发的指导价约8000元,即一个人月的软件价格就可以购买20G左右的硬
盘。即使有5万行数据的库表,每个记录压缩40字符的冗余,单纯计算合计也不
足2M,即节省0.6元钱的磁盘空间。
今天的世界已进入软件主导的计算机时代。因此,最容易理解、应用开发工作量
最少、维护最简单的数据库结构才是最好的。只要数据完整性、一致性不受威胁,
有些冗余,不足为虑。换言之,最节省软件成本 (而不是硬件成本) 的是最好的。
3、信息隐蔽
这是软件工程最重要的基本原则之一。简言之即信息的作用域越小越好,
数据库的透明度越大越好,因为应用程序需要知道得越多就越复杂。使数据库黑
盒化 (透明度高) 的方法很多,除了设计上的局部化处理外,还可以利用 DBMS
的触发器、存储过程、函数等,把数据库中无法简化的复杂表关系封装到黑盒子
里,隐藏起来,特别是放到服务器端,其优越性更是多方面的。