系统分析与设计hw_04
程序员文章站
2022-06-12 22:43:24
...
系统分析与设计hw_04
1、领域模型
2、数据库建模
E-R模型
数据库脚本
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)的特化。
- 数据库逻辑模型是采用面向对象的设计方法,有效组织各种业务数据,在具体系统实现时使用的统一的逻辑语言描述对象间的关系模型。
- 相同点:都提供了系统内对象关系的可视化,利于用于理清系统有什么对象及其之间的关系。
-
不同点:
- 领域模型会关注概念类,而数据库模型只关注具体的软件对象。
- 数据模型只存储持久性数据,因此会对需求中没有明确要求记录的相关信息进行排除,而领域模型不会,并且也不会排除没有属性的概念类。
- 领域模型的主要作用是帮助用户理解关键概念和词汇,而数据库建模中的对象是用来描述软件类的。
上一篇: 设计思想学习之六大原则
下一篇: leetcode355 设计推特