阅读 Asg_RH 文档,按用例构建领域模型。
数据库建模(E-R 模型)
脚本如下:
-- MySQL Script generated by MySQL Workbench
-- Mon Apr 30 20:40:49 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`.`Traveler`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Traveler` (
`idTraveler` INT NOT NULL,
`name` VARCHAR(30) NOT NULL,
`email` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idTraveler`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`CreditCardPayment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`CreditCardPayment` (
`card_number` VARCHAR(20) NOT NULL,
`security_code` VARCHAR(45) NOT NULL,
PRIMARY KEY (`card_number`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Reservation` (
`idReservation` INT NOT NULL,
`check_in_date` DATE NOT NULL,
`number_of_nights` INT NOT NULL,
`number_of_adults` INT NOT NULL,
`number_of_children` INT NOT NULL,
`idTraveler` INT NOT NULL,
`idCreditCardPayment` VARCHAR(20) NOT NULL,
PRIMARY KEY (`idReservation`),
INDEX `idTraveler_idx` (`idTraveler` ASC),
INDEX `idCreditCardPayment_idx` (`idCreditCardPayment` ASC),
CONSTRAINT `idTraveler`
FOREIGN KEY (`idTraveler`)
REFERENCES `mydb`.`Traveler` (`idTraveler`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idCreditCardPayment`
FOREIGN KEY (`idCreditCardPayment`)
REFERENCES `mydb`.`CreditCardPayment` (`card_number`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Locatioin`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Locatioin` (
`code` INT NOT NULL,
`name` VARCHAR(45) NOT NULL,
`hot` VARCHAR(45) NOT NULL,
PRIMARY KEY (`code`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Hotel`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Hotel` (
`idHotel` INT NOT NULL,
`name` VARCHAR(45) NOT NULL,
`star_rating` INT NOT NULL,
`idLocation` INT NOT NULL,
PRIMARY KEY (`idHotel`),
INDEX `idLocation_idx` (`idLocation` ASC),
CONSTRAINT `idLocation`
FOREIGN KEY (`idLocation`)
REFERENCES `mydb`.`Locatioin` (`code`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`RoomDescription`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`RoomDescription` (
`idRoomDescription` INT NOT NULL,
`type` VARCHAR(10) NOT NULL,
`price` INT NOT NULL,
PRIMARY KEY (`idRoomDescription`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Room`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Room` (
`room_number` INT NOT NULL,
`isAvailable` TINYINT NOT NULL,
`date` DATE NOT NULL,
`idHotel` INT NOT NULL,
`idReservation` INT NOT NULL,
`idRoomDescription` INT NOT NULL,
PRIMARY KEY (`room_number`),
INDEX `idHotel_idx` (`idHotel` ASC),
INDEX `idReservation_idx` (`idReservation` ASC),
INDEX `idRoomDescription_idx` (`idRoomDescription` ASC),
CONSTRAINT `idHotel`
FOREIGN KEY (`idHotel`)
REFERENCES `mydb`.`Hotel` (`idHotel`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idReservation`
FOREIGN KEY (`idReservation`)
REFERENCES `mydb`.`Reservation` (`idReservation`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idRoomDescription`
FOREIGN KEY (`idRoomDescription`)
REFERENCES `mydb`.`RoomDescription` (`idRoomDescription`)
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;
数据库逻辑模型 与 领域模型 的异同: