软件工程之系统建模篇【设计数据模型】

  数据模型描述系统持久性数据库层的逻辑内容与结构,数据模型用UML的类图描述。首先简要介绍数据模型的设计方法及关系数据库的几个术语,然后依次介绍如何将类映射到表、将关联映射到关系数据库及将泛化映射到数据库。

  数据库模型从层次上可以分为3类:概念数据模型、逻辑数据模型和物理数据模型。

  概念数据模型是面向用户、面向现实世界的数据模型,与数据库管理系统无关,逻辑数据模型反映了DBMS的存储结构,是用户从数据库看到的数据模型,物理数据模型是特定的DBMS,定义实际中的数据如何存储在持久存储设备上。本章要设计的数据模型是逻辑数据模型,用面向对象方法设计数据模型于用传统方法设计数据模型差别不大。

  设计步骤为:

  1、设计UML中的实体与ER图中的实体

  2、设计UML实体类图与E-R图

  3、建模依据

  4、选择数据库系统   

  持久性数据库层可以是关系型的数据库,也可以是对象关系型的数据库或者对象数据库。从关系型数据库技术到对象数据库技术是一个演化过程,对象数据库技术是这个演化过程的中间阶段,尽管未来将属于对象数据库,但关系型数据库在目前的数据库软件市场中仍占主流,本章为系统实例选择关系型数据库作为持久性数据库层的数据库管理系统。对于关系数据库来说,可以用类图描述数据库模式,用类描述数据表,用类的操作描述触发器和存储过程。

  1、将类映射到表

  将实体类映射为关系数据表,必须遵循表的第一范式,列必须是不可再分的数据项,从类到表的映射可以是一对一,即一个类映射为一个表,但是,一对一映射可能会导致一些问题,如表太多,表丢失,以及对泛化关系处理不合理等,在设计中要灵活调整。

  2、将关系映射到关系数据库

  类之间的多重性可以分为一对一,一对多和多对多3种情况,对3种多重性的处理已经有一些一般的转换规则,数据模型的设计用UML符号构造型和其他扩展机制类模拟,关系表的UML符号用构造型为《relational table》的类符号表示,关系表的列用类中的属性表示,带有构造型《pk》的属性代表主键,带有构造型《fk》的属性代表外键,不能接受空值的列用约束“{not null}”类表示。

  3、将泛化映射到数据库

  将泛化映射到数据库有3种方法:1.将每个类映射到一个表,为每个父类/子类对创建一个SQL视图;2.将整个类层次映射到一个父类表,表包括所有类的属性集;3.将每个子类映射到一个表,父类的所有属性包含在每个表的列集中。

  注:面向对象设计模型中的依赖关系和实现关系都是非结构化的关系,因而不会映射到关系数据库中。

你可能感兴趣的:(软件工程)