领域建模
a. 阅读 Asg_RH 文档,按用例构建领域模型
(1)用例:find location
(2)用例:find hotel
(3)用例:make reservation
(4)总的领域模型:
b. 数据库建模(E-R 模型)
(1)使用开源工具 OpenSystemArchitect建立系统的E-R模型(数据库逻辑模型)
(2) Mysql 物理数据库的脚本代码
-- +---------------------------------------------------------
-- | MODEL : Hotel
-- | AUTHOR :
-- | GENERATED BY: Open System Architect
-- +---------------------------------------------------------
-- | WARNING : Review before execution
-- +---------------------------------------------------------
-- +---------------------------------------------------------
-- | CREATE
-- +---------------------------------------------------------
CREATE TABLE `Location`
(
code INTEGER NOT NULL,
name VARCHAR(30) NOT NULL,
hot VARCHAR(20) NOT NULL,
region VARCHAR(20) NOT NULL,
city VARCHAR(20) NOT NULL,
town VARCHAR(20) NOT NULL,
PRIMARY KEY (code)
);
CREATE TABLE `Hotel`
(
hotel_id INTEGER NOT NULL,
name VARCHAR(30) NOT NULL,
star_rating INTEGER NOT NULL,
hot_index VARCHAR(10) NOT NULL,
address VARCHAR(30) NOT NULL,
code INTEGER NOT NULL,
PRIMARY KEY (hotel_id,code)
);
CREATE TABLE `Room_description`
(
room_id INTEGER NOT NULL,
type VARCHAR(10) NOT NULL,
price INTEGER NOT NULL,
PRIMARY KEY (room_id)
);
CREATE TABLE `ShoppingBasket`
(
basket_id INTEGER NOT NULL,
PRIMARY KEY (basket_id)
);
CREATE TABLE `Traveller`
(
traveller_id INTEGER NOT NULL,
PRIMARY KEY (traveller_id)
);
CREATE TABLE `Reservation`
(
reservation_id INTEGER NOT NULL,
check_in_date VARCHAR(20) NOT NULL,
check_out_date VARCHAR(20) NOT NULL,
night_num INTEGER NOT NULL,
total_price INTEGER NOT NULL,
basket_id INTEGER NOT NULL,
hotel_id INTEGER NOT NULL,
traveller_id INTEGER NOT NULL,
PRIMARY KEY (reservation_id,hotel_id)
);
CREATE INDEX idxReservation1 ON Reservation
(
basket_id
);
CREATE INDEX idxReservation2 ON Reservation
(
traveller_id
);
CREATE TABLE `Customer_info`
(
email VARCHAR(30) NOT NULL,
name VARCHAR(30) NOT NULL,
gender VARCHAR(10) NOT NULL,
isSmoke INTEGER NOT NULL,
reservation_id INTEGER NOT NULL,
PRIMARY KEY (email)
);
CREATE TABLE `orderItem`
(
order_id INTEGER NOT NULL,
child_num INTEGER NOT NULL,
adult_num INTEGER NOT NULL,
min_child_age INTEGER NOT NULL,
max_child_age INTEGER NOT NULL,
reservation_id INTEGER NOT NULL,
PRIMARY KEY (order_id,reservation_id)
);
CREATE TABLE `Room`
(
room_id INTEGER NOT NULL,
number INTEGER NOT NULL,
isAvaliable INTEGER NOT NULL,
date VARCHAR(20) NOT NULL,
hotel_id INTEGER NOT NULL,
room_id INTEGER NOT NULL,
PRIMARY KEY (room_id,hotel_id,room_id)
);
CREATE TABLE `Request`
(
reservation_id INTEGER NOT NULL,
check_in_date VARCHAR(30) NOT NULL,
check_out_date VARCHAR(30) NOT NULL,
night_num INTEGER NOT NULL,
destination_name VARCHAR(30) NOT NULL,
traveller_id INTEGER NOT NULL,
PRIMARY KEY (reservation_id,traveller_id)
);
(3)数据库逻辑模型与领域模型的异同
异: 领域模型主要面向需求分析与设计,而数据库逻辑模型更面向编程开发;数据库逻辑模型比领域模型更加明确地给出各个数据字段的具体类型,以及表与表之间的关系。
同:领域模型和数据库逻辑模型都将系统的概念类以图形化的形式表示出来,定义了各个概念类的名字、属性以及类间的关系。