关系数据库与UML模型

关系数据库管理系统(RDMS)

概念:通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据

RDMS的数据存储在被称为表的数据库对象中的特点:

   1.数据以==表格==的形式出现
 
   2.每==行==为各种==记录名称==
 
   3.每==列==为记录名称所对应的==数据域==
 
   4.许多的==行和列==组成一张==表单==
 
   5.==若干==的表单组成==数据库==

基本结果映射

主键的生成

1.类型:

(1)候选键:是由表中某些属性构成的属性集,能够唯一标示表中的记录。组成候选键的属性集是最小的,即从中去掉任何一个属性都将破坏其唯一性。在候选键中,任何属性的值都不能为空。

(2)主键:是任选一个候选键,它用来标示数据库表中的记录。

(3)外键:是对候选键的引用。它要么是空值,要么包含每个属性的相应值。外键经常用来实现关联关系和泛化关系。

2.定义主键的两种方法

(1)将对象标识符映射为主键

    优点:主键只由表中的一个属性构成,大小相同

         开发时考虑到了对象之间关系的可维护性

     缺点:在数据库维护时,很难看出基于对象标识符的主键具有什么内在含义

(2)将对象的某些属性映射为主键

    优点:为数据库的调试和维护提供了方便

    缺点:修改可能要涉及到许多外键的修改

3.属性类型到域的映射(不是很懂)

(1)枚举字符串

(2)为每个枚举值定义标示

(3)枚举表

(4)对枚举值进行编码

4.属性到列的映射

泛化关系的映射

1.所有类的映射

将所有的类都映射为数据库中的表。

  优点:
    1.支持多态;
    2.易于修改父类和子类;
    3.针对对象可能充当每个角色,只需要在合适的表中保存相应的记录即可。

  缺点:
    1.每个类都需要映射为数据库中的表,因此导致数据库中存放着大量的表;
    2.由于数据库中存在大量的表,因此会导致数据读取和写入的时间过长;
    3.除非添加一些视图来模拟所需要的表,否则数据库的报表生成会相当困难。

2.除无属性外类的映射

将具有属性的类才映射为数据库表,无属性的类不进行映射。

 缺点同所有类的映射一样,只是表稍微减少了部分。

3.父类属性下移

指不将父类映射为数据库表,只映射子类。这时,每个子类对应的数据库中不仅包含子类特有的属性,还要包含该子类所继承的父类的属性。

 优点:
   1.减少数据库表的数量;
   2.易于生成报表(这是因为所需要的有关类的所有数据都存储在同一张表中)。

 缺点:
   1.当修改某个类时,必须修改与它对应的表和所有子类对应的表。
   2.很难在支持多个角色的同时仍维护数据完整性,这种情况可能存在,只是比原来的要复杂一点。

4.子类属性上移

将所有子类的属性都存放在父类所对应的数据库表中。

优点:
  1.减少数据库表的数量;
  2.易于生成表单。

缺点:
  1.增加类层次结构的耦合性。每次在类层次结构的任何地方添加一个属性时,都必须将一个新属性添加到表中;
  2.浪费数据库中许多空间。这对于单一角色的对象很有效,否则可能浪费数据库中的许多空间。

关联关系的映射

1.一对一关联的映射

在这种情况下,可以在两个类中任意选择一方,在其所对应的类表中添加一个外键,指向另一方所对应类表中的主键,从而实现两张类表之间的连接。

2.零或一对一关联的映射

一般会在对象个数为0或1的那一方,所对应的表中添加一个外键,指向另一方类所对应的类表中的主键,建立两表之间的连接。

3.一对多关联的映射

实现一对多关联的映射时,需要将外键放置在“多”的一方。

4.多对多关联的映射

在实现多对多关联时,通常需要引入一个关联表,映射关联对象,从而将多对多关联转化为两个一对多关联。在实现多对多关联时,需要在新建的关联表中设置一个对象标识符,即主键,同时增加两个外键,它们分别指向初始关联的两个类对应表的主键。如果不增加主键,那么只引用表的两个外键时,会将这两个外键作为联合主键。

5.聚合和组合关系的映射

1.一种是聚集关系较为紧密的情况下,可以将其映射在一张表中;
2.另一种是聚集关系较为松散的情况下,可以用一对多关联的映射方法实现,需要在子类的类表中增加一个外键,指向父类的类表的主键;
3.组合中子类与父类的实例有相同的生命周期,因此,子类所对应的子表中的外键不能为空。

6.映射时应避免的情况

1.合并

三大范式:
第一范式:确保每列的原子性;
第二范式:在第一范式的基础上,更进一层,其目标是确保表中的每列都与主键相关;
第三范式:在第二范式的基础上,更进一步,其目标是确保每列都与主键列直接相关,而不是间接相关

2.在实现一对一关联时将外键放置在两张表中

开发者在实现一对一关联时,应该避免将外键放在两张表中,使两张表中都包含外键,即外键出现两次。

3.并行属性

并行属性是指关系平等的属性。不能列出来,这不仅增加了程序的复杂性,也会阻碍数据库应用程序的扩展性。因此,不要在数据表中实现具有并行属性的关联的多个角色。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值