Hw7_20180429

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 物理数据库的脚本
      • 简单叙说 数据库逻辑模型 与 领域模型 的异同

这里写图片描述

sql语句:

-- MySQL Script generated by MySQL Workbench
-- Sun Apr 29 22:32:58 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` (
  `loc_id` INT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `hot` INT NULL,
  PRIMARY KEY (`loc_id`));


-- -----------------------------------------------------
-- Table `mydb`.`hotel`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`hotel` (
  `hotel_id` INT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `address` VARCHAR(255) NULL,
  `location_loc_id` INT NOT NULL,
  PRIMARY KEY (`hotel_id`),
  UNIQUE INDEX `id_UNIQUE` (`hotel_id` ASC),
  INDEX `fk_hotel_location1_idx` (`location_loc_id` ASC),
  CONSTRAINT `fk_hotel_location1`
    FOREIGN KEY (`location_loc_id`)
    REFERENCES `mydb`.`location` (`loc_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


-- -----------------------------------------------------
-- Table `mydb`.`room_type`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`room_type` (
  `type_id` INT NOT NULL,
  `description` VARCHAR(255) NOT NULL,
  `price` INT NULL,
  PRIMARY KEY (`type_id`));


-- -----------------------------------------------------
-- Table `mydb`.`room`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`room` (
  `room_id` INT NOT NULL,
  `hotel_id` INT NOT NULL,
  `price` INT NULL,
  `hotel_hotel_id` INT NOT NULL,
  `room_type_type_id` INT NOT NULL,
  PRIMARY KEY (`room_id`),
  INDEX `fk_room_hotel1_idx` (`hotel_hotel_id` ASC),
  INDEX `fk_room_room_type1_idx` (`room_type_type_id` ASC),
  CONSTRAINT `fk_room_hotel1`
    FOREIGN KEY (`hotel_hotel_id`)
    REFERENCES `mydb`.`hotel` (`hotel_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_room_room_type1`
    FOREIGN KEY (`room_type_type_id`)
    REFERENCES `mydb`.`room_type` (`type_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


-- -----------------------------------------------------
-- Table `mydb`.`customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`customer` (
  `customer_id` INT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `email` VARCHAR(255) NULL,
  PRIMARY KEY (`customer_id`));


-- -----------------------------------------------------
-- Table `mydb`.`payment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`payment` (
  `payment_id` INT NOT NULL,
  `reservation_id` INT NOT NULL,
  `amount` FLOAT NOT NULL,
  `customer_customer_id` INT NOT NULL,
  PRIMARY KEY (`payment_id`, `customer_customer_id`));


-- -----------------------------------------------------
-- Table `mydb`.`reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`reservation` (
  `reservation_id` INT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `children_num` INT NULL,
  `adults_num` INT NULL,
  `arrival_date` DATETIME NULL,
  `departure_date` DATETIME NULL,
  `customer_customer_id` INT NOT NULL,
  `payment_payment_id` INT NULL,
  `payment_customer_customer_id` INT NOT NULL,
  `room_room_id` INT NOT NULL,
  PRIMARY KEY (`reservation_id`),
  INDEX `fk_reservation_customer1_idx` (`customer_customer_id` ASC),
  INDEX `fk_reservation_payment1_idx` (`payment_payment_id` ASC, `payment_customer_customer_id` ASC),
  INDEX `fk_reservation_room1_idx` (`room_room_id` ASC),
  CONSTRAINT `fk_reservation_customer1`
    FOREIGN KEY (`customer_customer_id`)
    REFERENCES `mydb`.`customer` (`customer_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_reservation_payment1`
    FOREIGN KEY (`payment_payment_id` , `payment_customer_customer_id`)
    REFERENCES `mydb`.`payment` (`payment_id` , `customer_customer_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_reservation_room1`
    FOREIGN KEY (`room_room_id`)
    REFERENCES `mydb`.`room` (`room_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


-- -----------------------------------------------------
-- Table `mydb`.`room_state`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`room_state` (
  `room_state_id` INT NOT NULL,
  `availability` INT NULL,
  `date` DATETIME NULL,
  `room_room_id` INT NOT NULL,
  `reservation_reservation_id` INT NOT NULL,
  PRIMARY KEY (`room_state_id`, `reservation_reservation_id`),
  INDEX `fk_room_state_room_idx` (`room_room_id` ASC),
  INDEX `fk_room_state_reservation1_idx` (`reservation_reservation_id` ASC),
  CONSTRAINT `fk_room_state_room`
    FOREIGN KEY (`room_room_id`)
    REFERENCES `mydb`.`room` (`room_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_room_state_reservation1`
    FOREIGN KEY (`reservation_reservation_id`)
    REFERENCES `mydb`.`reservation` (`reservation_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


-- -----------------------------------------------------
-- Table `mydb`.`credit_card`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`credit_card` (
  `credit_card_id` INT NOT NULL,
  `type` VARCHAR(255) NULL,
  `number` VARCHAR(45) NOT NULL,
  `customer_customer_id` INT NOT NULL,
  PRIMARY KEY (`credit_card_id`),
  INDEX `fk_credit_card_customer1_idx` (`customer_customer_id` ASC),
  CONSTRAINT `fk_credit_card_customer1`
    FOREIGN KEY (`customer_customer_id`)
    REFERENCES `mydb`.`customer` (`customer_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

领域模型是一个商业建模范畴的概念,是在了解了用户的需求,经过分析和总结,提炼出来的用以描述用户业务需求的一些概念的东西。
数据库逻辑模型则要将领域模型具体化。要实现其所描述的东西,需要哪些具体的功能和处理哪些具体的信息。
领域模型可以辅助数据库逻辑模型的设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值