Lesson 7 Domain Modelling

2018, Apr 27    

a. 领域建模

  • a. 阅读 Asg_RH 文档,按用例构建领域模型。
    • 按 Task2 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸
    • 说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和 中介实体(M,也称状态实体)
      • 在单页面应用(如 vue)中,E 一般与数据库构建有关, M 一般与 store 模式 有关
      • 在 java web 应用中,E 一般与数据库构建有关, M 一般与 session 有关

Task a

b. 数据库建模(E-R 模型)

  • 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)
  • 建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect
  • 不负责的链接 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html
  • 导出 Mysql 物理数据库的脚本
  • 简单叙说 数据库逻辑模型 与 领域模型 的异同

Task b

导出SQL语句

Selected: 6 table(s)
-- ****************** SqlDBM: Microsoft SQL Server ******************
-- ******************************************************************

--************************************** [City]

CREATE TABLE [City]
(
 [id]    NOT NULL ,
 [name] TEXT NOT NULL ,

 CONSTRAINT [PK_City] PRIMARY KEY CLUSTERED ([id] ASC)
);


--************************************** [Customer]

CREATE TABLE [Customer]
(
 [id]   INT NOT NULL ,
 [name] TEXT NOT NULL ,

 CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED ([id] ASC)
);


--************************************** [Hotel]

CREATE TABLE [Hotel]
(
 [id]           INT NOT NULL ,
 [name]         TEXT NOT NULL ,
 [introduction] TEXT NOT NULL ,
 [city]          NOT NULL ,

 CONSTRAINT [PK_hotel] PRIMARY KEY CLUSTERED ([id] ASC),
 CONSTRAINT [FK_145] FOREIGN KEY ([city])
  REFERENCES [City]([id])
);


--************************************** [Reservation]

CREATE TABLE [Reservation]
(
 [id]           INT NOT NULL ,
 [hotel]        INT NOT NULL ,
 [checkInDate]  DATETIME NOT NULL ,
 [checkOutDate] DATETIME NOT NULL ,
 [cost]         FLOAT NOT NULL ,
 [user]         INT NOT NULL ,

 CONSTRAINT [PK_reservation] PRIMARY KEY CLUSTERED ([id] ASC, [hotel] ASC),
 CONSTRAINT [FK_149] FOREIGN KEY ([user])
  REFERENCES [Customer]([id]),
 CONSTRAINT [FK_153] FOREIGN KEY ([hotel])
  REFERENCES [Hotel]([id])
);


--************************************** [AvailableRoom]

CREATE TABLE [AvailableRoom]
(
 [id]            NOT NULL ,
 [hotel]        INT NOT NULL ,
 [roomType]     INT NOT NULL ,
 [dateInterval] DATETIME NOT NULL ,

 CONSTRAINT [PK_available room] PRIMARY KEY CLUSTERED ([id] ASC, [hotel] ASC),
 CONSTRAINT [FK_158] FOREIGN KEY ([hotel])
  REFERENCES [Hotel]([id])
);


--************************************** [BillingInfo]

CREATE TABLE [BillingInfo]
(
 [id]          INT NOT NULL ,
 [Reservation] INT NOT NULL ,
 [hotel]       INT NOT NULL ,
 [date]        DATETIME NOT NULL ,
 [amount]      FLOAT NOT NULL ,

 CONSTRAINT [PK_BillingInfo] PRIMARY KEY CLUSTERED ([id] ASC, [Reservation] ASC, [hotel] ASC),
 CONSTRAINT [FK_168] FOREIGN KEY ([Reservation], [hotel])
  REFERENCES [Reservation]([id], [hotel])
);

数据库逻辑模型与领域模型的异同

  • 领域模型着重表示的是系统的静态结构和实际上的关系,其中的类并不与最终程序设计阶段的类相对应;而数据库逻辑模型则需要完整细致地表达实际程序设计阶段所有数据的组织形式;
  • 领域模型中一些表达中间关系的类在数据库逻辑模型中可以省去;相对的,数据库逻辑模型在设计的时候需要加上领域模型中为了便于理解而省去的一些必要的键/关系。