系统分析与设计的第五次作业.
领域建模
阅读Asg_RH文档,按用例构建领域模型
usecase: find hotel
对于find hotel这个用例来说,模型如下
usecase: make reservation
对于make reservation这个用例来说,模型如下
usecase: reserve hotel
对于reserve hotel这个总用例来说,模型如下
数据库建模(E-R 模型)
E-R图
使用开源工具OpenSystemArchitect建立系统的E-R模型(数据库逻辑模型)如下:
导出Mysql脚本
导出Mysql物理数据库的脚本如下:
-- +---------------------------------------------------------
-- | MODEL : Reserve Hotel
-- | AUTHOR :
-- | GENERATED BY: Open System Architect
-- +---------------------------------------------------------
-- | WARNING : Review before execution
-- +---------------------------------------------------------
-- +---------------------------------------------------------
-- | CREATE
-- +---------------------------------------------------------
CREATE TABLE `RoomDestription`
(
roomType INTEGER NOT NULL,
roomPrice FLOAT,
PRIMARY KEY (roomType)
);
CREATE TABLE `Location`
(
code VARCHAR(10) NOT NULL,
name VARCHAR(20),
PRIMARY KEY (code)
);
CREATE TABLE `Hotel`
(
hotelId INTEGER NOT NULL,
hotelName VARCHAR(20) NOT NULL,
stars INTEGER,
code VARCHAR(10) NOT NULL,
PRIMARY KEY (hotelId,code)
);
CREATE TABLE `Traveler`
(
taId INTEGER NOT NULL,
taName VARCHAR(20) NOT NULL,
taAge INTEGER,
taEmail VARCHAR(20) NOT NULL,
PRIMARY KEY (taId)
);
CREATE TABLE `Basket`
(
baId INTEGER NOT NULL,
totalPrice FLOAT,
taId INTEGER NOT NULL,
PRIMARY KEY (baId)
);
CREATE TABLE `Reservation`
(
reId INTEGER NOT NULL,
reState INTEGER,
checkInDate DATE,
numOfNight INTEGER,
baId INTEGER NOT NULL,
PRIMARY KEY (reId,baId)
);
CREATE TABLE `Room`
(
roomId INTEGER NOT NULL,
roomState SMALLINT,
hotelId INTEGER NOT NULL,
roomType INTEGER NOT NULL,
PRIMARY KEY (roomId,hotelId)
);
CREATE TABLE `CustomerInfo`
(
userName VARCHAR(20) NOT NULL,
isSmoking BIT,
specialReq VARCHAR(256),
userEmail VARCHAR(20) NOT NULL,
PRIMARY KEY (userName)
);
异同
异:
- 领域模型主要面向需求分析与设计
- 数据库逻辑模型更面向编程开发,所以比领域模型更多地给出了各个数据字段的数据类型以及大小限制,还给出了表与表之间的关系
同:
- 两者都将系统的概念类以图的方式展示出来,在图中,两者都定义了类名、属性以及类间的关系