a. 阅读 Asg_RH 文档,按用例构建领域模型。
按 Task2 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸
说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和 中介实体(M,也称状态实体)
在单页面应用(如 vue)中,E 一般与数据库构建有关, M 一般与 store 模式 有关
在 java web 应用中,E 一般与数据库构建有关, M 一般与 session 有关
Answer:
b. 数据库建模(E-R 模型)- 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)- 建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect- 不负责的链接 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html- 导出 Mysql 物理数据库的脚本- 简单叙说 数据库逻辑模型 与 领域模型 的异同
Answer:
// 数据库脚本 -- MySQL Script generated by MySQL Workbench -- Sat Apr 28 21:44:02 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`.`Search Option` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Search Option` ( `city` VARCHAR(256) NOT NULL, `Checkin` DATE NOT NULL, `Checkout` DATE NOT NULL, `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`ShopList` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`ShopList` ( `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Customer` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Customer` ( `Eamil` VARCHAR(256) NOT NULL, `Search Option_city` VARCHAR(256) NOT NULL, `ShopList_id` INT NOT NULL, PRIMARY KEY (`Search Option_city`, `ShopList_id`), INDEX `fk_Customer_ShopList1_idx` (`ShopList_id` ASC), CONSTRAINT `fk_Customer_Search Option` FOREIGN KEY (`Search Option_city`) REFERENCES `mydb`.`Search Option` (`city`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_Customer_ShopList1` FOREIGN KEY (`ShopList_id`) REFERENCES `mydb`.`ShopList` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION); -- ----------------------------------------------------- -- Table `mydb`.`Hotel` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Hotel` ( `Name` VARCHAR(256) NOT NULL, `LocatedCity` VARCHAR(45) NOT NULL, `Search Option_id` INT NOT NULL, `Customer_Search Option_city` VARCHAR(256) NOT NULL, PRIMARY KEY (`Name`, `Search Option_id`, `Customer_Search Option_city`), INDEX `fk_Hotel_Search Option1_idx` (`Search Option_id` ASC), INDEX `fk_Hotel_Customer1_idx` (`Customer_Search Option_city` ASC), CONSTRAINT `fk_Hotel_Search Option1` FOREIGN KEY (`Search Option_id`) REFERENCES `mydb`.`Search Option` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_Hotel_Customer1` FOREIGN KEY (`Customer_Search Option_city`) REFERENCES `mydb`.`Customer` (`Search Option_city`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Room` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Room` ( `Type` INT NOT NULL, `Price` DOUBLE NOT NULL, `Hotel_Name` VARCHAR(256) NOT NULL, `Hotel_Search Option_id` INT NOT NULL, `Hotel_Customer_Search Option_city` VARCHAR(256) NOT NULL, PRIMARY KEY (`Type`, `Hotel_Name`, `Hotel_Search Option_id`, `Hotel_Customer_Search Option_city`), INDEX `fk_Room_Hotel1_idx` (`Hotel_Name` ASC, `Hotel_Search Option_id` ASC, `Hotel_Customer_Search Option_city` ASC), CONSTRAINT `fk_Room_Hotel1` FOREIGN KEY (`Hotel_Name` , `Hotel_Search Option_id` , `Hotel_Customer_Search Option_city`) REFERENCES `mydb`.`Hotel` (`Name` , `Search Option_id` , `Customer_Search Option_city`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Payment` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Payment` ( `totalCost` DOUBLE NOT NULL, `id` INT NOT NULL, PRIMARY KEY (`id`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Reservation` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Reservation` ( `details` VARCHAR(256) NOT NULL, `total` INT NOT NULL, `id` INT NOT NULL AUTO_INCREMENT, `Payment_id` INT NOT NULL, `ShopList_id` INT NOT NULL, PRIMARY KEY (`id`), INDEX `fk_Reservation_Payment1_idx` (`Payment_id` ASC), INDEX `fk_Reservation_ShopList1_idx` (`ShopList_id` ASC), CONSTRAINT `fk_Reservation_Payment1` FOREIGN KEY (`Payment_id`) REFERENCES `mydb`.`Payment` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_Reservation_ShopList1` FOREIGN KEY (`ShopList_id`) REFERENCES `mydb`.`ShopList` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`CreditCard` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`CreditCard` ( `CardNumber` VARCHAR(256) NOT NULL, `CardHolderAddress` VARCHAR(256) NOT NULL, `Payment_id` INT NOT NULL, PRIMARY KEY (`CardNumber`), INDEX `fk_CreditCard_Payment1_idx` (`Payment_id` ASC), CONSTRAINT `fk_CreditCard_Payment1` FOREIGN KEY (`Payment_id`) REFERENCES `mydb`.`Payment` (`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;
领域模型(domain model),也称为概念模型、领域对象模型、分析对象模型,我们在对项目进行分析的时候,往往会创建相应的领域模型。 是一个商业建模范畴的概念,他和软件开发并无一丝一毫的关系,即使一个企业他不开发软件,他也具备他的业务模型,所有的同行业的企业他们的业务模型必定有非常大的共性和内在的规律性,由这个行业内的各个企业的业务模型再向上抽象出来整个行业的业务模型,这个东西即“领域模型”。
逻辑模型就是要将概念模型具体化。要实现概念模型所描述的东西,需要那些具体的功能和处理那些具体的信息。这就到了需求分析的细化阶段