• 弥合对象/关系之间的鸿沟(五)—— 映射(二)关系的映射


     弥合对象/关系之间的鸿沟(五)

    映射(二)

      在一个规范化后的关系模式中,如果有一个表的许多行关联另一个表的许多行的关系(也就是多对多),通常由连接表表示,连接表中的每一行都包含这两个相关联的表的外键。如果EMPLOYEE表的多行与PROJECT表的多行相关联,第三个表(即连接表)需要维持一个规范化后的架构(图7)。EMPLOYEE_PROJECT表包含两列:EMPLOYEE表的外键列与PROJECT表的外键列。因此,使用两个外键连接两个表映射到领域类的关系时,这两个领域类双方都会包含多值字段指向对方。

      嵌入。如需改善封装性,为字段的集合建模可能会有帮助,将此模型作为领域类中一个单独的类。此映射的概念被称为嵌入,因为与嵌入类对应的列,与映射到的领域类一样嵌入在同一个表。 

    图8a所示,一个Employee类可能包含多个字段来表示一个家庭地址。这些字段都被映射到了EMPLOYEE表的列。图8B显示了相同的数据库模式使用不同的映射的方式,即使用一个嵌入的Address类映射到同一表中同样的所有列。

      依赖。在领域对象模型中有组合(composition)模式(pattern)很常见,在此模式中,一个实例集合的生命周期依赖于另一个实例。在数据库中,存储依赖实例的表无法从其他表中区分出来。但是,领域模型的行为要求,如果拥有集合的实例中的关系被删除,然后依赖实例对应的行也应被删除。 

    在图9中,技能关系被标记为依赖,如果从拥有技能集合的Employee类实例中删除一个Skill实例,持久性提供程序会从数据库中的SKILL表中删除相应的行。

    前面的介绍,涵盖了很多映射领域类和规范化的数据库模式时的常见情况。更复杂的领域类也可以映射到更复杂的数据库模式(schema)。

    下一篇 持久性API

  • 相关阅读:
    2014复习提纲
    string库与char[]
    扩展欧几里得算法及其应用
    1002 [FJOI2007]轮状病毒
    node源码详解(三)—— js代码在node中的位置,process、require、module、exports的由来
    node源码详解(二 )—— 运行机制 、整体流程
    node源码详解 (一)
    html 第一天随记(个人不常用的标签)
    Siebel电信业务流程
    Siebel层次架构
  • 原文地址:https://www.cnblogs.com/scottgu/p/2442955.html
Copyright © 2020-2023  润新知