`
xiaoer_1982
  • 浏览: 1819977 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

UML在关系型数据库设计中的应用

阅读更多
 

介绍

许多人认为面向对象概念和关系型数据库相互不一致,并且不能结合。事实上完全相反!经过灵活的使用,一个关系型数据库能够为面向对象(OO)模型提供一套优秀的实现。同样的模型能够用来开发编程代码和关系型数据库结构。

关系型数据库技术是意义深远的、强大的,但它比许多开发商使你相信的要难得多。单个表是简单易懂的、直观的。但由数以百计的表组成(这是常见的)的应用要彻底了解是相当困难的。这正是OO模型有用之处。 OO模型使你深入地、连贯地思考问题。

OO模型提供一种问题的超结构(superstructure)的思考方式,然后该方式能够用关系型数据库的更低层的组成块来实现。

本文章综合地讨论了关系型数据库技术,而不是集中于特定的产品上。我们将不讨论物理设计细节(例如存储分配和物理聚集),因为它们是依赖于产品的。

用关系型数据库实现UML模型有两个方面:映射结构(第2节)和映射功能(第3节)。第4节注解了面向对象到关系型数据库的扩展。第5节总结本文章。

2. 结构映射到表

UML对象模型在本质上只是一个扩展的实体-关系(ER)模型 。使用设计数菘獾腅R模型的方式受到普遍接受,而我们以一种近似的但更强大的方式-使用UML对象模型。OO模型的主要优势在于编程和数据库的相同的模型工作。而且,作为考虑功能性的一种方式(第3节),我们强调OO模型的导航。这一节显示如何实现UML对象模型的主要构造。

2.1 标识(identity)

实现对象模型的第一步是处理标识。我们从定义几个术语开始。

1)候选键(candidate key)是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选键里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选键删除。候选键里的属性不能为空。

2)主键(primary key)是一个特定地选定的候选键,用来优先地参考记录。

3)外键(foreign key)是一个候选键的参考。外键必须包括每个要素属性的一个值,或者它必须全部为空。外键用来实现关联和一般化。

正常地你应该为每个表定义一个主键,尽管偶尔有例外。我们强烈建议所有的外键都只指向主键而不是其它的候选键。

定义主键有两种基本的方法:

1)基于存在的标识。你应该为每个类表加一个对象标识符属性,并将它设为主键。每个关联表的主键包括一个或更多的相关类的标识符。基于存在的标识符有作为单独属性的优势,占位小且大小相同。只要你的关系型数据库管理系统(RDBMS)受支持,基于存在的标识符就没有性能的劣势。(多数RDBMS提供有效的基于存在的标识符的分配顺序号码。)唯一的劣势是基于存在的标识符在维护时内没有固有的意义。

2)基于值的标识。一些真实世界的属性的组合确定了每个对象。基于值的标识有不同的优势。主键对于用户有固有的意义,容易进行调试和数据库维护。在另一面,基于值的主键很难改变。一个主键的改变需要传播到许多外键。一些对象没有自然的真实世界里的标识符。

我们推荐你在超过30个类的RDBMS应用里使用基于存在的标识。基于存在和基于值的标识都是所有RDBMS应用的可行选项。

2.2 域(属性类型)

属性类型是UML术语,对应于数据库著作里的域的术语。比起直接用数据类型,域提升到更一致的设计,并便利了应用的定位。

简单域很容易实现。你仅仅要定义相应的数据类型和大小。并且每个用了域的属性,你都必须为每个域约束加入一条SQL查询子句。简单域的一些例子是:名字(name),长字符(longString)和电话号码(phone-Number)。

一个枚举域把一个属性限制在一系列的值里。枚举域比简单域实现起来更复杂,图表1显示了四个方法。

图表1:枚举的实现方法
2.3类

正常情况下,我们把每个类映射为一个表,每个属性映射为一个列。你可能因一个已产生的标识符(基于存在的标识符)、隐藏的关联(第2.4节)和通用鉴别器(第2.5节)需要一些另外的列。

2.4关联

现在我们讨论关联的实现。我们已经把我们的陈述分为建议的映射(我们正常使用的映射),可选的映射(我们偶尔使用的映射)和不鼓励的映射(我们遇到的应该避免的错误)。我们所有的例子都采用基于存在的标识。

分享到:
评论

相关推荐

    UML在数据库设计中的应用

    许多人认为面向对象概念和关系型数据库相互不一致,并且不能结合。事实上完全相反!经过灵活的使用,一个关系型数据库能够为面向对象(OO)模型提供一套优秀的实现。同样的模型能够用来开发编程代码和关系型数据库...

    从UML类图到关系数据库表的代码生成方法

    计算机工程的论文 在介绍代码自动生成技术产生的背景及其应用的基础上,研究从 UML 类图到关系型数据库表之间的映射规范和映射实现方式

    uml在数据库建模中的应用

    文章以煤层自然发火管理信息系统数据库建模为例,讨论将 类图映射成关系型数据库中的表的方法,并对煤层自然发火管理信息系统数据库的关系模式进行了规范化。

    从uml 类图到关系数据库表的代码生成方法

    在介绍代码自动生成技术产生的背景及其应用的基础上,研究从 UML 类图到关系型数据库表的代码生成方法,其中包括 UML类图到关系数据库表之间的映射规范和映射实现方式。最后分析了研究过程中存在的一些问题。

    使用UML设计数据库应用

    这篇文章陈述如何用关系型数据库实现UML模型。假设我们熟悉UML对象建模表示法和关系型数据库。1.介绍许多人认为面向对象概念和关系型数据库相互不一致,并且不能结合。事实上完全相反!经过灵活的使用,一个关系型...

    商店进销存管理系统数据库设计.doc

    引言 1.1编写目的 随着计算机技术的高速发展,人们对计算机的依赖性越来越强,特别是用计算机开发 的数据库以及数据管理系统在生活应用中表现得更为突出。随着超市规模的发展不断扩 大,商品数量急剧增加,有关商品...

    数据库系统应用开发方法.pdf

    逻辑设计 数据库逻辑结构设计: 在ER图基础上设计数据库关系模式。 应⽤程序概要设计: 将应⽤软件模块划分为⼦模块。 数据库事务概要设计: 将操作抽象,使与具体DBMS平台⽆关。 3.物理设计 物理结构设计: 数据⽂...

    空间数据库管理系统概论.docx

    7.UML类图 1)类:是应用中具有相同特征的对象的描述,等价于ER图中的实体。 2)属性:用于描述类的对象,与ER图中的属性类似。 公有 私有 受保护 3)方法:是一些函数,它们是类定义的一部分,用来修改类的行为或...

    SP投诉管理系统的设计与实现 毕业论文

    在数据库设计中,分别进行了逻辑设计和物理设计,编 写了相应的存储过程和视图;在系统客户端设计中,设计了界面的框架,开 发了客户端的应用程序;并在论文最后给出系统的具体实现。 测试结果表明,系统运行平稳...

    asp.net知识库

    在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...

    基于RFID的企业一卡通门禁联网系统的设计与实现

    对于上位机软件体系的设计,主要采用统一建模语言(Unified Modeling Language,UML)对RFID联网门禁系统上位机进行研究分析,并且通过给出该系统数据库模型映射关系的方式给出了数据库的详细设计流程与实现方案;...

    大型MIS系统开发实施方法及工程化管理研究

    件工程、数据库设计、应用业务、项目控制、人员管理和计算机技术等多种 知识和经验,因此任何一项大型MIS系统建设成功都是一件极不容易的事。 虽然当今的软件工程理论、数据库设计理论和先进的计算机技术及工具等为 ...

    毕业设计--基于微博用户信息数据的分布式爬虫.zip

    常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-...

    二十三种设计模式【PDF版】

    实际上,GoF 的设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用 和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是...

    《程序设计大学教程试读》PDF版

    EditPad 26610.5 本章小结 27110.6 本章习题 272第11章 设计数据库应用程序 27511.1 数据库和数据库系统 27511.1.1 数据库管理系统 27511.1.2 数据库应用程序 27711.1.3 数据库安全 27711.2 Delphi数据库体系结构 ...

Global site tag (gtag.js) - Google Analytics