系統分析與設計(五)

a.閱讀 Asg_RH 文檔,按用例構建領域模型。

  • 按 Task2 要求,請使用工具 UMLet,截圖格式務必是 png 並控制尺寸。
  • 說明:請不要受 PCMEF 層次結構影響。你需要識別實體(E)和 中介實體(M,也稱狀態實體)
    – 在單頁面應用(如 vue)中,E 一般與數據庫構建有關, M 一般與 store 模式 有關
    – 在 java web 應用中,E 一般與數據庫構建有關, M 一般與 session 有關
    這裏寫圖片描述

b. 數據庫建模(E-R 模型)

給出系統的 E-R 模型(數據邏輯模型):(使用的建模工具:MySQL Workbench)
這裏寫圖片描述
導出 Mysql 物理數據庫的腳本:

-- MySQL Script generated by MySQL Workbench
-- Sun Apr 29 14:56:38 2018
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @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`.`location`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`location` (
  `code` INT NOT NULL,
  `name` VARCHAR(45) GENERATED ALWAYS AS () VIRTUAL,
  `hot` TINYINT NULL,
  PRIMARY KEY (`code`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`hotel`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`hotel` (
  `id` INT NOT NULL,
  `name` VARCHAR(45) NULL,
  `location_code` INT NOT NULL,
  PRIMARY KEY (`id`, `location_code`),
  INDEX `fk_hotel_location1_idx` (`location_code` ASC),
  CONSTRAINT `fk_hotel_location1`
    FOREIGN KEY (`location_code`)
    REFERENCES `mydb`.`location` (`code`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`traveler`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`traveler` (
  `id` INT NOT NULL,
  `name` VARCHAR(45) NULL,
  `address` VARCHAR(45) NULL,
  `phone_number` INT(11) NULL,
  `postcode` INT(6) NULL,
  `country` VARCHAR(45) NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`reservation` (
  `id` INT NOT NULL,
  `price` FLOAT NULL,
  `date` DATE NULL,
  `traveler_id` INT NOT NULL,
  PRIMARY KEY (`id`, `traveler_id`),
  INDEX `fk_reservation_traveler1_idx` (`traveler_id` ASC),
  CONSTRAINT `fk_reservation_traveler1`
    FOREIGN KEY (`traveler_id`)
    REFERENCES `mydb`.`traveler` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`room`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`room` (
  `id` INT NOT NULL,
  `price` FLOAT NULL,
  `isVal` TINYINT NULL,
  `date` DATE NULL,
  `reservation_id` INT NOT NULL,
  `hotel_id` INT NOT NULL,
  PRIMARY KEY (`id`, `reservation_id`, `hotel_id`),
  INDEX `fk_room_reservation1_idx` (`reservation_id` ASC),
  INDEX `fk_room_hotel1_idx` (`hotel_id` ASC),
  CONSTRAINT `fk_room_reservation1`
    FOREIGN KEY (`reservation_id`)
    REFERENCES `mydb`.`reservation` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_room_hotel1`
    FOREIGN KEY (`hotel_id`)
    REFERENCES `mydb`.`hotel` (`id`)
    ON DELETE NO ACTION
    ON 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;

簡單敘說數據庫邏輯模型與領域模型的異同:
異: 領域模型主要面向需求,而數據庫模型更多面向實際代碼開發。數據庫邏輯模型比領域模型更明確給出各個字段的類型,便於程序設計。
同:都是將軟件的概念類給圖形化表示出來,都展現了各個概念類的名字、屬性以及彼此之間的關係。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章