1、 领域建模
a. 阅读 Asg_RH 文档,按用例构建领域模型。
b. 数据库建模(E-R 模型)
- 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)
- 导出 Mysql 物理数据库的脚本
-- Created by Vertabelo (http://vertabelo.com)
-- Last modification date: 2018-04-29 15:04:34.418
-- tables
-- Table: city
CREATE TABLE city (
id int NOT NULL AUTO_INCREMENT,
city_name varchar(128) NOT NULL,
isCapital bool NOT NULL,
country_id int NOT NULL,
hot int NOT NULL,
CONSTRAINT city_pk PRIMARY KEY (id)
);
-- Table: country
CREATE TABLE country (
id int NOT NULL AUTO_INCREMENT,
country_name varchar(128) NOT NULL,
CONSTRAINT country_pk PRIMARY KEY (id)
);
-- Table: hotel
CREATE TABLE hotel (
id int NOT NULL AUTO_INCREMENT,
name varchar(128) NOT NULL,
totalRoomNum int NOT NULL,
city_id int NOT NULL,
address varchar(128) NOT NULL,
star int NOT NULL,
hot_index int NOT NULL,
CONSTRAINT hotel_pk PRIMARY KEY (id)
);
-- Table: reservation
CREATE TABLE reservation (
id int NOT NULL,
check_in_date date NOT NULL,
night int NOT NULL,
booking_details text NOT NULL,
customerName varchar(64) NOT NULL,
customerEmail varchar(64) NOT NULL,
room_id int NOT NULL,
pay_status bool NOT NULL,
CONSTRAINT reservation_pk PRIMARY KEY (id)
);
-- Table: room
CREATE TABLE room (
id int NOT NULL,
hotel_id int NOT NULL AUTO_INCREMENT,
type_id int NOT NULL,
isAvalible bool NOT NULL,
date date NOT NULL,
num int NOT NULL,
avalibleNum int NOT NULL,
CONSTRAINT room_pk PRIMARY KEY (id)
);
-- Table: room_desc
CREATE TABLE room_desc (
id int NOT NULL AUTO_INCREMENT,
MaxAdultNum int NOT NULL,
MaxChildNum int NOT NULL,
type varchar(64) NOT NULL,
price int NOT NULL,
CONSTRAINT room_desc_pk PRIMARY KEY (id)
);
-- foreign keys
-- Reference: city_country (table: city)
ALTER TABLE city ADD CONSTRAINT city_country FOREIGN KEY city_country (country_id)
REFERENCES country (id);
-- Reference: client_city (table: hotel)
ALTER TABLE hotel ADD CONSTRAINT client_city FOREIGN KEY client_city (city_id)
REFERENCES city (id);
-- Reference: room_reservation (table: reservation)
ALTER TABLE reservation ADD CONSTRAINT room_reservation FOREIGN KEY room_reservation (room_id)
REFERENCES room (id);
-- Reference: shipment_client (table: room)
ALTER TABLE room ADD CONSTRAINT shipment_client FOREIGN KEY shipment_client (hotel_id)
REFERENCES hotel (id);
-- Reference: shipment_status_shipment (table: room)
ALTER TABLE room ADD CONSTRAINT shipment_status_shipment FOREIGN KEY shipment_status_shipment (type_id)
REFERENCES room_desc (id);
-- End of file.
简单叙说 数据库逻辑模型 与 领域模型 的异同
数据库逻辑模型是将概念模型转化为具体的数据模型的过程,即按照概念结构设计阶段建立的基本E-R图,按选定的管理系统软件支持的数据模型(层次、网状、关系、面向对象),转换成相应的逻辑模型。这种转换要符合关系数据模型的原则。目前最流行就是关系模型(也就是对应的关系数据库)
领域模型是对领域内的概念类或现实世界的对象的一种抽象的可视化表示。又称为概念模型,分析模型,它主要关注问题域本身,挖掘问题域中核心的领域概念,并建立领域概念之间的关系。
数据库的逻辑模型是系统设计,以及实现的一部分,描述的是对用户需求在技术上的实现方法。用户不需要关心系统的数据模型,但是必须关注领域模型,因为领域模型反映的是问题域的相关业务概念以及其关系。
领域模型不是数据模型,在领域模型中并不会排除需求中没有明确要求记录其相关信息的类(这是对关系数据库建模常见的标准),也不会排除没有属性的概念类。在领域模型中,没有属性的概念类是合法的,或者在领域内充当纯行为角色而不是信息的概念类也是合法的。