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