动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 软件工程 ]的信息



本月文章推荐
.“零缺点”质量管理简介.
.需求调研分析中的项目干系人概念.
.软件需求的关键:分解用例场景.
.UML组件图详解(1).
.CMM中的软件质量保证实施准则.
.游戏引擎剖析(四).
.LINQ 性能分析系列之传说中的LINQ.
.2006拭目以待 SOA标准走向成熟.
.统一建模语言UML轻松入门之动态建.
.没有硝烟的战争——社会工程学.
.“框”起软件测试 ——建立软件测.
.系统分析员基本功.
.移动没有标题条的窗口.
.面向服务的体系结构SOA简介.
.Windows Vista:通信基础结构.
.Eclipse插件开发中实现刷新和重编.
.采用简化原型法进行需求分析.
.企业管理软件的需求描述方法.
.适应需求 应用服务器向SOA靠拢.
.“6 Sigma”品质管理的研究.

使用UML设计数据库应用

发表日期:2008-3-23 |


1. 介绍

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

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

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

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

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

2. 结构映射到表

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

2.1 标识(identity)

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

  • 候选键(candidate key)是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选键里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选键删除。候选键里的属性不能为空。
  • 主键(primary key)是一个特定选定的候选键,用来优先地参考记录。
  • 外键(foreign key)是一个候选键的参考。外键必须包括每个要素属性的一个值,或者它必须全部为空。外键用来实现关联和泛化。
正常地你应该为每个表定义一个主键,尽管偶然有例外。我们强烈建议所有的外键都只指向主键而不是其它的候选键。

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

  • 基于存在的标识。你应该为每个类表加一个对象标识符属性,并将它设为主键。每个关联表的主键包括一个或更多的相关类的标识符。基于存在的标识符有作为单独属性的优势,占位小且大小相同。只要你的关系型数据库治理系统(RDBMS)支持,基于存在的标识符就没有性能的劣势。(多数RDBMS提供有效的基于存在的标识符的分配顺序号码。)唯一的劣势是基于存在的标识符在维护时内没有固有的意义。
  • 基于值的标识。一些真实世界的属性的组合确定了每个对象。基于值的标识有不同的优势。主键对于用户有固有的意义,轻易进行调试和数据库维护。在另一面,基于值的主键很难改变。一个主键的改变需要传播到许多外键。而一些对象没有自然的真实世界里的标识符。
我们推荐你在超过30个类的RDBMS应用里使用基于存在的标识。基于存在和基于值的标识都是所有RDBMS应用的可行选项。

2.2 域(属性类型)

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

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

一个枚举域把一个属性限制在一系列的值里。枚举域比简单域实现起来更复杂,图1显示了四个方法。 图1 枚举的实现方法。 实现方法 优势 劣势 建议 枚举字符。定义一条SQL检查约束,把该枚举限制在答应的值里。 简单。受控的方便搜索的词汇表。 大的枚举难以使用检查。约束难以编码。 我们正常地选择。 每个枚举值一个标记。为每个枚举的值定义一个布尔型属性。 回避命名的难处。 冗长 - 每个值一个属性。 当枚举值不是互相排斥的并且多个值可能同时地应用时使用。 枚举表。把枚举定义存储到一个表里。不是每个枚举一个表,也不是所有的枚举一个表。 高效地处理大的枚举。不用改变应用的代码就可以定义新的枚举值 偶然使用时很麻烦。必须编写通用的软件来阅读枚举表和加强值。 适合大的枚举和没有结尾(open-ended)的枚举。 枚举编码。把枚举值编码作为有序的数字。 节省磁盘空间。有助于用多种语言处理。 大大地复杂化了维护和调试。 避免使用,除非你要用多种语言处理。 2.3 类

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

2.4 关联

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

2.4.1 建议的映射
  • 多对多关联。用一个单独的表(图2)来实现一个多对多关联。关联的主键是每个类的主键的合并。那些省略号(...)表示在模型里没有显示出来的属性。主键用黑体字体显示。
  • 一对多关联。把一个外键隐藏在“多”表(图3)。角色名字成为外键属性名字的一部分。
  • 零或一对一关联。把外键隐藏在“零或一”表(图4)。
  • 其它一对一关联。把外键隐藏在任一表里。
图2 建议的实现:单独的多对多关联表。

使用UML设计数据库应用(图一)

1. 介绍

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

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

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

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

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

2. 结构映射到表

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

2.1 标识(identity)

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

  • 候选键(candidate key)是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选键里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选键删除。候选键里的属性不能为空。
  • 主键(primary key)是一个特定选定的候选键,用来优先地参考记录。
  • 外键(foreign key)是一个候选键的参考。外键必须包括每个要素属性的一个值,或者它必须全部为空。外键用来实现关联和泛化。
正常地你应该为每个表定义一个主键,尽管偶然有例外。我们强烈建议所有的外键都只指向主键而不是其它的候选键。

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

  • 基于存在的标识。你应该为每个类表加一个对象标识符属性,并将它设为主键。每个关联表的主键包括一个或更多的相关类的标识符。基于存在的标识符有作为单独属性的优势,占位小且大小相同。只要你的关系型数据库治理系统(RDBMS)支持,基于存在的标识符就没有性能的劣势。(多数RDBMS提供有效的基于存在的标识符的分配顺序号码。)唯一的劣势是基于存在的标识符在维护时内没有固有的意义。
  • 基于值的标识。一些真实世界的属性的组合确定了每个对象。基于值的标识有不同的优势。主键对于用户有固有的意义,轻易进行调试和数据库维护。在另一面,基于值的主键很难改变。一个主键的改变需要传播到许多外键。而一些对象没有自然的真实世界里的标识符。
我们推荐你在超过30个类的RDBMS应用里使用基于存在的标识。基于存在和基于值的标识都是所有RDBMS应用的可行选项。

2.2 域(属性类型)

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

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

一个枚举域把一个属性限制在一系列的值里。枚举域比简单域实现起来更复杂,图1显示了四个方法。 图1 枚举的实现方法。 实现方法 优势 劣势 建议 枚举字符。定义一条SQL检查约束,把该枚举限制在答应的值里。 简单。受控的方便搜索的词汇表。 大的枚举难以使用检查。约束难以编码。 我们正常地选择。 每个枚举值一个标记。为每个枚举的值定义一个布尔型属性。 回避命名的难处。 冗长 - 每个值一个属性。 当枚举值不是互相排斥的并且多个值可能同时地应用时使用。 枚举表。把枚举定义存储到一个表里。不是每个枚举一个表,也不是所有的枚举一个表。 高效地处理大的枚举。不用改变应用的代码就可以定义新的枚举值 偶然使用时很麻烦。必须编写通用的软件来阅读枚举表和加强值。 适合大的枚举和没有结尾(open-ended)的枚举。 枚举编码。把枚举值编码作为有序的数字。 节省磁盘空间。有助于用多种语言处理。 大大地复杂化了维护和调试。 避免使用,除非你要用多种语言处理。 2.3 类

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

2.4 关联

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

2.4.1 建议的映射
  • 多对多关联。用一个单独的表(图2)来实现一个多对多关联。关联的主键是每个类的主键的合并。那些省略号(...)表示在模型里没有显示出来的属性。主键用黑体字体显示。
  • 一对多关联。把一个外键隐藏在“多”表(图3)。角色名字成为外键属性名字的一部分。
  • 零或一对一关联。把外键隐藏在“零或一”表(图4)。
  • 其它一对一关联。把外键隐藏在任一表里。
图2 建议的实现:单独的多对多关联表。

使用UML设计数据库应用(图一)
1. 介绍

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

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

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

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

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

2. 结构映射到表

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

2.1 标识(identity)

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

  • 候选键(candidate key)是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选键里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选键删除。候选键里的属性不能为空。
  • 主键(primary key)是一个特定选定的候选键,用来优先地参考记录。
  • 外键(foreign key)是一个候选键的参考。外键必须包括每个要素属性的一个值,或者它必须全部为空。外键用来实现关联和泛化。
正常地你应该为每个表定义一个主键,尽管偶然有例外。我们强烈建议所有的外键都只指向主键而不是其它的候选键。

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

  • 基于存在的标识。你应该为每个类表加一个对象标识符属性,并将它设为主键。每个关联表的主键包括一个或更多的相关类的标识符。基于存在的标识符有作为单独属性的优势,占位小且大小相同。只要你的关系型数据库治理系统(RDBMS)支持,基于存在的标识符就没有性能的劣势。(多数RDBMS提供有效的基于存在的标识符的分配顺序号码。)唯一的劣势是基于存在的标识符在维护时内没有固有的意义。
  • 基于值的标识。一些真实世界的属性的组合确定了每个对象。基于值的标识有不同的优势。主键对于用户有固有的意义,轻易进行调试和数据库维护。在另一面,基于值的主键很难改变。一个主键的改变需要传播到许多外键。而一些对象没有自然的真实世界里的标识符。

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

2.2 域(属性类型)

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

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

一个枚举域把一个属性限制在一系列的值里。枚举域比简单域实现起来更复杂,图1显示了四个方法。 图1 枚举的实现方法。 实现方法 优势 劣势 建议 枚举字符。定义一条SQL检查约束,把该枚举限制在答应的值里。 简单。受控的方便搜索的词汇表。 大的枚举难以使用检查。约束难以编码。 我们正常地选择。 每个枚举值一个标记。为每个枚举的值定义一个布尔型属性。 回避命名的难处。 冗长 - 每个值一个属性。 当枚举值不是互相排斥的并且多个值可能同时地应用时使用。 枚举表。把枚举定义存储到一个表里。不是每个枚举一个表,也不是所有的枚举一个表。 高效地处理大的枚举。不用改变应用的代码就可以定义新的枚举值 偶然使用时很麻烦。必须编写通用的软件来阅读枚举表和加强值。 适合大的枚举和没有结尾(open-ended)的枚举。 枚举编码。把枚举值编码作为有序的数字。 节省磁盘空间。有助于用多种语言处理。 大大地复杂化了维护和调试。 避免使用,除非你要用多种语言处理。 2.3 类

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

2.4 关联

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

2.4.1 建议的映射
  • 多对多关联。用一个单独的表(图2)来实现一个多对多关联。关联的主键是每个类的主键的合并。那些省略号(...)表示在模型里没有显示出来的属性。主键用黑体字体显示。
  • 一对多关联。把一个外键隐藏在“多”表(图3)。角色名字成为外键属性名字的一部分。
  • 零或一对一关联。把外键隐藏在“零或一”表(图4)。
  • 其它一对一关联。把外键隐藏在任一表里。
图2 建议的实现:单独的多对多关联表。

使用UML设计数据库应用(图一)
更多的请看:http://www.QQread.com/windows/2003/index.Html1. 介绍

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

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

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

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

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

2. 结构映射到表

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

2.1 标识(identity)

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

  • 候选键(candidate key)是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选键里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选键删除。候选键里的属性不能为空。
  • 主键(primary key)是一个特定选定的候选键,用来优先地参考记录。
  • 外键(foreign key)是一个候选键的参考。外键必须包括每个要素属性的一个值,或者它必须全部为空。外键用来实现关联和泛化。
正常地你应该为每个表定义一个主键,尽管偶然有例外。我们强烈建议所有的外键都只指向主键而不是其它的候选键。

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

  • 基于存在的标识。你应该为每个类表加一个对象标识符属性,并将它设为主键。每个关联表的主键包括一个或更多的相关类的标识符。基于存在的标识符有作为单独属性的优势,占位小且大小相同。只要你的关系型数据库治理系统(RDBMS)支持,基于存在的标识符就没有性能的劣势。(多数RDBMS提供有效的基于存在的标识符的分配顺序号码。)唯一的劣势是基于存在的标识符在维护时内没有固有的意义。
  • 基于值的标识。一些真实世界的属性的组合确定了每个对象。基于值的标识有不同的优势。主键对于用户有固有的意义,轻易进行调试和数据库维护。在另一面,基于值的主键很难改变。一个主键的改变需要传播到许多外键。而一些对象没有自然的真实世界里的标识符。

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

2.2 域(属性类型)

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

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

一个枚举域把一个属性限制在一系列的值里。枚举域比简单域实现起来更复杂,图1显示了四个方法。 图1 枚举的实现方法。 实现方法 优势 劣势 建议 枚举字符。定义一条SQL检查约束,把该枚举限制在答应的值里。 简单。受控的方便搜索的词汇表。 大的枚举难以使用检查。约束难以编码。 我们正常地选择。 每个枚举值一个标记。为每个枚举的值定义一个布尔型属性。 回避命名的难处。 冗长 - 每个值一个属性。 当枚举值不是互相排斥的并且多个值可能同时地应用时使用。 枚举表。把枚举定义存储到一个表里。不是每个枚举一个表,也不是所有的枚举一个表。 高效地处理大的枚举。不用改变应用的代码就可以定义新的枚举值 偶然使用时很麻烦。必须编写通用的软件来阅读枚举表和加强值。 适合大的枚举和没有结尾(open-ended)的枚举。 枚举编码。把枚举值编码作为有序的数字。 节省磁盘空间。有助于用多种语言处理。 大大地复杂化了维护和调试。 避免使用,除非你要用多种语言处理。 2.3 类

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

2.4 关联

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

2.4.1 建议的映射
  • 多对多关联。用一个单独的表(图2)来实现一个多对多关联。关联的主键是每个类的主键的合并。那些省略号(...)表示在模型里没有显示出来的属性。主键用黑体字体显示。
  • 一对多关联。把一个外键隐藏在“多”表(图3)。角色名字成为外键属性名字的一部分。
  • 零或一对一关联。把外键隐藏在“零或一”表(图4)。
  • 其它一对一关联。把外键隐藏在任一表里。
图2 建议的实现:单独的多对多关联表。

使用UML设计数据库应用(图一)
更多的请看:http://www.qqread.com/windows/2003/index.html1. 介绍

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

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

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

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

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

2. 结构映射到表

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

2.1 标识(identity)

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

  • 候选键(candidate key)是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选键里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选键删除。候选键里的属性不能为空。
  • 主键(primary key)是一个特定选定的候选键,用来优先地参考记录。
  • 外键(foreign key)是一个候选键的参考。外键必须包括每个要素属性的一个值,或者它必须全部为空。外键用来实现关联和泛化。
正常地你应该为每个表定义一个主键,尽管偶然有例外。我们强烈建议所有的外键都只指向主键而不是其它的候选键。

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

  • 基于存在的标识。你应该为每个类表加一个对象标识符属性,并将它设为主键。每个关联表的主键包括一个或更多的相关类的标识符。基于存在的标识符有作为单独属性的优势,占位小且大小相同。只要你的关系型数据库治理系统(RDBMS)支持,基于存在的标识符就没有性能的劣势。(多数RDBMS提供有效的基于存在的标识符的分配顺序号码。)唯一的劣势是基于存在的标识符在维护时内没有固有的意义。
  • 基于值的标识。一些真实世界的属性的组合确定了每个对象。基于值的标识有不同的优势。主键对于用户有固有的意义,轻易进行调试和数据库维护。在另一面,基于值的主键很难改变。一个主键的改变需要传播到许多外键。而一些对象没有自然的真实世界里的标识符。
我们推荐你在超过30个类的RDBMS应用里使用基于存在的标识。基于存在和基于值的标识都是所有RDBMS应用的可行选项。

2.2 域(属性类型)

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

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

一个枚举域把一个属性限制在一系列的值里。枚举域比简单域实现起来更复杂,图1显示了四个方法。 图1 枚举的实现方法。 实现方法 优势 劣势 建议 枚举字符。定义一条SQL检查约束,把该枚举限制在答应的值里。 简单。受控的方便搜索的词汇表。 大的枚举难以使用检查。约束难以编码。 我们正常地选择。 每个枚举值一个标记。为每个枚举的值定义一个布尔型属性。 回避命名的难处。 冗长 - 每个值一个属性。 当枚举值不是互相排斥的并且多个值可能同时地应用时使用。 枚举表。把枚举定义存储到一个表里。不是每个枚举一个表,也不是所有的枚举一个表。 高效地处理大的枚举。不用改变应用的代码就可以定义新的枚举值 偶然使用时很麻烦。必须编写通用的软件来阅读枚举表和加强值。 适合大的枚举和没有结尾(open-ended)的枚举。 枚举编码。把枚举值编码作为有序的数字。 节省磁盘空间。有助于用多种语言处理。 大大地复杂化了维护和调试。 避免使用,除非你要用多种语言处理。
2.3 类

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

2.4 关联

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

2.4.1 建议的映射
  • 多对多关联。用一个单独的表(图2)来实现一个多对多关联。关联的主键是每个类的主键的合并。那些省略号(...)表示在模型里没有显示出来的属性。主键用黑体字体显示。
  • 一对多关联。把一个外键隐藏在“多”表(图3)。角色名字成为外键属性名字的一部分。
  • 零或一对一关联。把外键隐藏在“零或一”表(图4)。
  • 其它一对一关联。把外键隐藏在任一表里。
图2 建议的实现:单独的多对多关联表。

使用UML设计数据库应用(图一)

上一篇:细说ADO.NET命令 人气:236
下一篇:解析本土化软件配置管理 人气:350
浏览全部软件工程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号