系统分析与设计hw_04

系统分析与设计hw_04


1、领域模型

系统分析与设计hw_04_第1张图片

系统分析与设计hw_04_第2张图片

2、数据库建模

系统分析与设计hw_04_第3张图片

E-R模型

系统分析与设计hw_04_第4张图片

数据库脚本

CREATE TABLE IF NOT EXISTS `sakila`.`customerAccount` (
  `accountId` INT UNSIGNED NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `username` VARCHAR(45) NOT NULL,
  `request_requestId` INT NOT NULL,
  PRIMARY KEY (`accountId`),
  INDEX `fk_customerAccount_request1_idx` (`request_requestId` ASC),
  CONSTRAINT `fk_customerAccount_request1`
    FOREIGN KEY (`request_requestId`)
    REFERENCES `sakila`.`request` (`requestId`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `sakila`.`request` (
  `requestId` INT NOT NULL,
  `accountId` INT NOT NULL,
  `checkInDate` VARCHAR(45) NULL,
  `checkOutDate` VARCHAR(45) NULL,
  `city_city_id` SMALLINT UNSIGNED NOT NULL,
  PRIMARY KEY (`requestId`),
  INDEX `fk_request_city1_idx` (`city_city_id` ASC),
  CONSTRAINT `fk_request_city1`
    FOREIGN KEY (`city_city_id`)
    REFERENCES `sakila`.`city` (`city_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `sakila`.`hotel` (
  `hotelId` INT NOT NULL,
  `hotelName` VARCHAR(45) NULL,
  `starRating` INT NULL,
  `hotelCost` INT NULL,
  PRIMARY KEY (`hotelId`))
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `sakila`.`payment` (
  `transactionId` INT NOT NULL,
  `securityInfo` VARCHAR(45) NULL,
  `discountInfo` VARCHAR(45) NULL,
  `sum` INT NULL,
  `creditCard_creditCardId` INT NOT NULL,
  PRIMARY KEY (`transactionId`),
  INDEX `fk_payment_creditCard1_idx` (`creditCard_creditCardId` ASC),
  CONSTRAINT `fk_payment_creditCard1`
    FOREIGN KEY (`creditCard_creditCardId`)
    REFERENCES `sakila`.`creditCard` (`creditCardId`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `sakila`.`reservation` (
  `reservationId` INT NOT NULL,
  `accountid` INT NOT NULL,
  `room_roomid` INT NOT NULL,
  `hotel_hotelId` INT NOT NULL,
  `payment_transactionId` INT NOT NULL,
  PRIMARY KEY (`reservationId`),
  INDEX `fk_reservation_room1_idx` (`room_roomid` ASC),
  INDEX `fk_reservation_hotel1_idx` (`hotel_hotelId` ASC),
  INDEX `fk_reservation_payment1_idx` (`payment_transactionId` ASC),
  CONSTRAINT `fk_reservation_room1`
    FOREIGN KEY (`room_roomid`)
    REFERENCES `sakila`.`room` (`roomid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_reservation_hotel1`
    FOREIGN KEY (`hotel_hotelId`)
    REFERENCES `sakila`.`hotel` (`hotelId`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_reservation_payment1`
    FOREIGN KEY (`payment_transactionId`)
    REFERENCES `sakila`.`payment` (`transactionId`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `sakila`.`room` (
  `roomid` INT NOT NULL,
  `roomNumber` INT NULL,
  `roomtype` VARCHAR(45) NULL,
  `availability` TINYINT(1) NULL,
  `capacity` INT NULL,
  PRIMARY KEY (`roomid`))
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `sakila`.`creditCard` (
  `creditCardId` INT NOT NULL,
  `identityId` INT NULL,
  `password` VARCHAR(45) NULL,
  `balance` INT NULL,
  PRIMARY KEY (`creditCardId`))
ENGINE = InnoDB

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

  • 领域模型是对领域内的概念类或现实世界中对象的可视化表示。领域模型也称概念模型、领域对象模型和分析对象模型。在UP中,术语“领域模型”指的是对现实世界概念类的表示,而非软件对象的表示。该术语并不是指用来描述软件类、软件架构领域层或有职责软件对象的一组图。UP对领域模型的定义是,可以在业务建模科目中创建的制品之一。更准确地讲,UP领域模型是UP业务对象模型(BOM)的特化。
  • 数据库逻辑模型是采用面向对象的设计方法,有效组织各种业务数据,在具体系统实现时使用的统一的逻辑语言描述对象间的关系模型。
  • 相同点:都提供了系统内对象关系的可视化,利于用于理清系统有什么对象及其之间的关系。
  • 不同点
    • 领域模型会关注概念类,而数据库模型只关注具体的软件对象。
    • 数据模型只存储持久性数据,因此会对需求中没有明确要求记录的相关信息进行排除,而领域模型不会,并且也不会排除没有属性的概念类。
    • 领域模型的主要作用是帮助用户理解关键概念和词汇,而数据库建模中的对象是用来描述软件类的。

你可能感兴趣的:(系统分析与设计)