天天看點

系統分析與設計作業4

1.領域模組化

  • a.閱讀Asg_RH文檔,按用例建構領域模型。
    • 按Task2要求,請使用工具UMLet,截圖格式務必是png并控制尺寸
    • 說明:請不要受 PCMEF 層次結構影響。你需要識别實體(E)和 中介實體(M,也稱狀态實體)
      • 在單頁面應用(如 vue)中,E 一般與資料庫建構有關, M 一般與 store 模式 有關
      • 在 java web 應用中,E 一般與資料庫建構有關, M 一般與 session 有關

建構的領域模型如下:

系統分析與設計作業4
  • b.資料庫模組化(E-R模型)
    • 按 Task 3 要求,給出系統的 E-R 模型(資料邏輯模型)
    • 模組化工具 PowerDesigner(簡稱PD) 或開源工具 OpenSystemArchitect
    • 不負責的連結 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html
    • 導出 Mysql 實體資料庫的腳本
    • 簡單叙說 資料庫邏輯模型 與 領域模型 的異同

用MySQL Workbench建構的系統的 E-R 模型(資料邏輯模型)如下:

系統分析與設計作業4

導出的腳本:

-- MySQL Script generated by MySQL Workbench
-- Mon Apr  01:08:21 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`.`Hotel`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Hotel` (
  `idHotel` INT NOT NULL,
  `name` INT NOT NULL,
  `address` VARCHAR(45) NOT NULL,
  `star level` INT NOT NULL,
  PRIMARY KEY (`idHotel`),
  UNIQUE INDEX `name_UNIQUE` (`name` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Customer` (
  `identity number` INT NOT NULL,
  `name` VARCHAR(45) GENERATED ALWAYS AS () VIRTUAL,
  PRIMARY KEY (`identity number`),
  UNIQUE INDEX `name_UNIQUE` (`name` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Reservation` (
  `idReservation` INT NOT NULL,
  `hotel name` VARCHAR(45) NOT NULL,
  `room type` VARCHAR(45) NOT NULL,
  `check in date` DATE NOT NULL,
  `check out date` DATE NOT NULL,
  `total price` VARCHAR(45) GENERATED ALWAYS AS () VIRTUAL,
  `Customer_idCustomer` INT NOT NULL,
  `Hotel_idHotel` INT NOT NULL,
  PRIMARY KEY (`idReservation`),
  UNIQUE INDEX `hotel name_UNIQUE` (`hotel name` ASC),
  INDEX `_idx` (`Customer_idCustomer` ASC),
  INDEX `Hotel_idHotel_idx` (`Hotel_idHotel` ASC),
  CONSTRAINT `idCustomer`
    FOREIGN KEY (`Customer_idCustomer`)
    REFERENCES `mydb`.`Customer` (`identity number`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `idHotel`
    FOREIGN KEY (`Hotel_idHotel`)
    REFERENCES `mydb`.`Hotel` (`idHotel`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Room`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Room` (
  `idRoom` INT NOT NULL,
  `type` VARCHAR(45) NOT NULL,
  `price` INT NOT NULL,
  `Hotel_idHotel` INT NOT NULL,
  PRIMARY KEY (`idRoom`),
  INDEX `idHotel_idx` (`Hotel_idHotel` ASC),
  CONSTRAINT `idHotel`
    FOREIGN KEY (`Hotel_idHotel`)
    REFERENCES `mydb`.`Hotel` (`idHotel`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`CreditCard`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`CreditCard` (
  `idCreditCard` INT NOT NULL,
  `type` VARCHAR(45) NOT NULL,
  `idCustomer` INT NOT NULL,
  PRIMARY KEY (`idCreditCard`),
  INDEX `idCustomer_idx` (`idCustomer` ASC),
  CONSTRAINT `idCustomer`
    FOREIGN KEY (`idCustomer`)
    REFERENCES `mydb`.`Customer` (`name`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Payment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Payment` (
  `idPayment` INT NOT NULL,
  `total price` INT NOT NULL,
  `CreditCard_id` INT NOT NULL,
  `Revervation_idReservation` INT NOT NULL,
  PRIMARY KEY (`idPayment`),
  INDEX `idReservation_idx` (`Revervation_idReservation` ASC),
  INDEX `idCreditCard_idx` (`CreditCard_id` ASC),
  CONSTRAINT `idReservation`
    FOREIGN KEY (`Revervation_idReservation`)
    REFERENCES `mydb`.`Reservation` (`hotel name`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `idCreditCard`
    FOREIGN KEY (`CreditCard_id`)
    REFERENCES `mydb`.`CreditCard` (`idCreditCard`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET [email protected]_SQL_MODE;
SET FOREIGN_KEY_CHECKS[email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
           

資料庫邏輯模型和領域模型的異同:

領域模型:領域模型是對領域内的概念類或現實世界中對象的可視化表示。又稱概念模型、領域對象模型、分析對象模型。它專注于分析問題領域本身,發掘重要的業務領域概念,并建立業務領域概念之間的關系。

資料庫邏輯模型:對資料庫結構的表示,是對概念模型的具體化,是系統設計與開發的一部分。

相同點:領域模組化和資料庫模組化都是通過類或實體、屬性、關聯建構的,表示形式很相似。

不同點:領域模型是在了解使用者需求後提出的一些概念性的東西,而資料庫邏輯模型将其具體到資料存儲類型。