系统分析与设计作业4

1.领域建模

  • a.阅读Asg_RH文档,按用例构建领域模型。

    • 按Task2要求,请使用工具UMLet,截图格式务必是png并控制尺寸

    • 说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和 中介实体(M,也称状态实体)

      • 在单页面应用(如 vue)中,E 一般与数据库构建有关, M 一般与 store 模式 有关

      • 在 java web 应用中,E 一般与数据库构建有关, M 一般与 session 有关

构建的领域模型如下:

 

用MySQL Workbench构建的系统的 E-R 模型(数据逻辑模型)如下:

  

导出的脚本:

-- 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 SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

数据库逻辑模型和领域模型的异同:

领域模型:领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。
数据库逻辑模型:对数据库结构的表示,是对概念模型的具体化,是系统设计与开发的一部分。
相同点:领域建模和数据库建模都是通过类或实体、属性、关联构建的,表示形式很相似。
不同点:领域模型是在了解用户需求后提出的一些概念性的东西,而数据库逻辑模型将其具体到数据存储类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值