1 领域建模
a. 阅读Asg_RH文档,按用例构建领域模型。
- 按 Task2 要求,请使用工具 UMLet,截图格式务必是png并控制尺寸。
- 说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和中介实体(M,也称状态实体)。
在单页面应用(如 vue)中,E一般与数据库构建有关,M一般与store模式有关。
在java web应用中,E一般与数据库构建有关,M一般与session有关。
b. 数据库建模(E-R 模型)
- 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)。
- 建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect。
- 导出 Mysql 物理数据库的脚本。
- 简单叙说数据库逻辑模型与领域模型的异同。
- Mysql 物理数据库的脚本如下:
-- MySQL Script generated by MySQL Workbench
-- 04/29/18 18:40:50
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward EngineeringSET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';-- -----------------------------------------------------
-- Schema mydb
-- ------------------------------------------------------- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;-- -----------------------------------------------------
-- Table `mydb`.`Customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Customer` (`ID` INT NOT NULL,`name` VARCHAR(45) NOT NULL,`phone` VARCHAR(45) NULL,PRIMARY KEY (`ID`)) ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Hotel`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Hotel` (`name` VARCHAR(45) NOT NULL,`location` VARCHAR(45) NOT NULL,`level` INT NULL,`price` DOUBLE NULL,PRIMARY KEY (`name`),CONSTRAINT `name`FOREIGN KEY ()REFERENCES `mydb`.`Customer` ()ON DELETE NO ACTIONON UPDATE NO ACTION) ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Reservation` (`ID` INT NOT NULL,`hotel info` VARCHAR(45) NULL,`customer info` VARCHAR(45) NULL,`room type` VARCHAR(45) NULL,`number of rooms` INT NULL,`number of guests` INT NULL,`checkInDate` DATETIME NOT NULL,`checkOutDate` DATETIME NULL,PRIMARY KEY (`ID`),CONSTRAINT `ID`FOREIGN KEY ()REFERENCES `mydb`.`Customer` ()ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `ID`FOREIGN KEY ()REFERENCES `mydb`.`Hotel` ()ON DELETE NO ACTIONON UPDATE NO ACTION) ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Room`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Room` (`type` VARCHAR(45) NOT NULL,`number` INT NULL,`price` DOUBLE NOT NULL,CONSTRAINT `type`FOREIGN KEY ()REFERENCES `mydb`.`Hotel` ()ON DELETE NO ACTIONON UPDATE NO ACTION) ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Payment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Payment` (`type` VARCHAR(45) NOT NULL,`account` VARCHAR(45) NOT NULL,`password` VARCHAR(45) NOT NULL,`amount of money` DOUBLE NOT NULL,PRIMARY KEY (`account`),CONSTRAINT `account`FOREIGN KEY ()REFERENCES `mydb`.`Reservation` ()ON DELETE NO ACTIONON UPDATE NO ACTION) ENGINE = InnoDB;SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
- 数据库逻辑模型与领域模型的异同:
数据库逻辑模型借助相对抽象、逻辑统一且结构稳健的结构,实现数据仓库系统所要求的数据存储目标,支持大量的分析应用,是实现业务智能的重要基础,同时也是数据管理分析的工具和交流的有效手段。
而领域模型是对领域内的概念类或者像是世界中对象的可视化表示。它阐述了领域中的重要概念,可以作为设计某些软件对象的灵感来源,它的范围限定于当前迭代所开发的用例场景。
从以上的描述,可总结出:
相同点:它们都将需求抽象为可视化的概念关系。
异同点:数据库逻辑模型能够细致地描述表内部的数据结构和逻辑约束。而领域模型从总体上更能反映出各个实体之间的关系,但是不能很好反映出实体内部的数据结构和约束。