领域建模
a.阅读Asg_RH文档,按用例构建领域模型。
- 按Task2要求,请使用工具UMLet,截图格式务必是png并控制尺寸
- 说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和 中介实体(M,也称状态实体)
- 在单页面应用(如 vue)中,E 一般与数据库构建有关, M 一般与 store 模式 有关
- 在 java web 应用中,E 一般与数据库构建有关, M 一般与 session 有关
b.数据库建模(E-R模型)
- 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)
- 建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect
- 不负责的链接 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html
- 导出 Mysql 物理数据库的脚本
- 简单叙说 数据库逻辑模型 与 领域模型 的异同
用MySQL Workbench构建的系统的 E-R 模型(数据逻辑模型)如下:
导出脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134-- MySQL Script generated by MySQL Workbench
-- Mon Apr 01:08:21 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`.`Hotel`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Hotel` (
`idHotel` INT NOT NULL,
`name` INT NOT NULL,
`address` VARCHAR(45) NOT NULL,
`star level` INT NOT NULL,
PRIMARY KEY (`idHotel`),
UNIQUE INDEX `name_UNIQUE` (`name` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Customer` (
`identity number` INT NOT NULL,
`name` VARCHAR(45) GENERATED ALWAYS AS () VIRTUAL,
PRIMARY KEY (`identity number`),
UNIQUE INDEX `name_UNIQUE` (`name` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Reservation` (
`idReservation` INT NOT NULL,
`hotel name` VARCHAR(45) NOT NULL,
`room type` VARCHAR(45) NOT NULL,
`check in date` DATE NOT NULL,
`check out date` DATE NOT NULL,
`total price` VARCHAR(45) GENERATED ALWAYS AS () VIRTUAL,
`Customer_idCustomer` INT NOT NULL,
`Hotel_idHotel` INT NOT NULL,
PRIMARY KEY (`idReservation`),
UNIQUE INDEX `hotel name_UNIQUE` (`hotel name` ASC),
INDEX `_idx` (`Customer_idCustomer` ASC),
INDEX `Hotel_idHotel_idx` (`Hotel_idHotel` ASC),
CONSTRAINT `idCustomer`
FOREIGN KEY (`Customer_idCustomer`)
REFERENCES `mydb`.`Customer` (`identity number`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idHotel`
FOREIGN KEY (`Hotel_idHotel`)
REFERENCES `mydb`.`Hotel` (`idHotel`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Room`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Room` (
`idRoom` INT NOT NULL,
`type` VARCHAR(45) NOT NULL,
`price` INT NOT NULL,
`Hotel_idHotel` INT NOT NULL,
PRIMARY KEY (`idRoom`),
INDEX `idHotel_idx` (`Hotel_idHotel` ASC),
CONSTRAINT `idHotel`
FOREIGN KEY (`Hotel_idHotel`)
REFERENCES `mydb`.`Hotel` (`idHotel`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`CreditCard`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`CreditCard` (
`idCreditCard` INT NOT NULL,
`type` VARCHAR(45) NOT NULL,
`idCustomer` INT NOT NULL,
PRIMARY KEY (`idCreditCard`),
INDEX `idCustomer_idx` (`idCustomer` ASC),
CONSTRAINT `idCustomer`
FOREIGN KEY (`idCustomer`)
REFERENCES `mydb`.`Customer` (`name`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Payment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Payment` (
`idPayment` INT NOT NULL,
`total price` INT NOT NULL,
`CreditCard_id` INT NOT NULL,
`Revervation_idReservation` INT NOT NULL,
PRIMARY KEY (`idPayment`),
INDEX `idReservation_idx` (`Revervation_idReservation` ASC),
INDEX `idCreditCard_idx` (`CreditCard_id` ASC),
CONSTRAINT `idReservation`
FOREIGN KEY (`Revervation_idReservation`)
REFERENCES `mydb`.`Reservation` (`hotel name`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idCreditCard`
FOREIGN KEY (`CreditCard_id`)
REFERENCES `mydb`.`CreditCard` (`idCreditCard`)
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;数据库逻辑模型和领域模型的异同:
- 领域模型:领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。
- 数据库逻辑模型:对数据库结构的表示,是对概念模型的具体化,是系统设计与开发的一部分。
- 相同点:领域建模和数据库建模都是通过类或实体、属性、关联构建的,表示形式很相似。
- 不同点:领域模型是在了解用户需求后提出的一些概念性的东西,而数据库逻辑模型将其具体到数据存储类型。