你的浏览器不支持canvas

我们笑着说再见,却深知再见遥遥无期。

系统分析作业-领域建模 - 基础

Date: Author: JX

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载请注明来自JX的博客

领域建模 类图

1. 领域建模

  • 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 物理数据库的脚本
  • 答: 到导出的模型如下
/*==============================================================*/
/* DBMS name:      Sybase SQL Anywhere 12                       */
/* Created on:     2018/4/29 16:18:13                           */
/*==============================================================*/


if exists(select 1 from sys.sysforeignkey where role='FK_旅客_REFERENCE_银行卡') then
    alter table 旅客
       delete foreign key FK_旅客_REFERENCE_银行卡
end if;

if exists(select 1 from sys.sysforeignkey where role='FK_旅客_REFERENCE_购物车') then
    alter table 旅客
       delete foreign key FK_旅客_REFERENCE_购物车
end if;

if exists(select 1 from sys.sysforeignkey where role='FK_订单_REFERENCE_房间') then
    alter table 订单
       delete foreign key FK_订单_REFERENCE_房间
end if;

if exists(select 1 from sys.sysforeignkey where role='FK_购物车_REFERENCE_订单') then
    alter table 购物车
       delete foreign key FK_购物车_REFERENCE_订单
end if;

if exists(select 1 from sys.sysforeignkey where role='FK_酒店_REFERENCE_房间') then
    alter table 酒店
       delete foreign key FK_酒店_REFERENCE_房间
end if;

drop table if exists 房间;

drop table if exists 旅客;

drop table if exists 订单;

drop table if exists 购物车;

drop table if exists 酒店;

drop table if exists 银行卡;

/*==============================================================*/
/* Table: 房间                                                    */
/*==============================================================*/
create table 房间 
(
   房间id                 integer                        not null,
   订单id                 integer                        null,
   酒店id                 integer                        null,
   大小                   smallint                       null,
   类型                   varchar                        null,
   开始时间                 timestamp                      null,
   结束时间                 timestamp                      null,
   constraint PK_房间 primary key clustered (房间id)
);

/*==============================================================*/
/* Table: 旅客                                                    */
/*==============================================================*/
create table 旅客 
(
   id                   integer                        not null,
   订单id                 varchar(8)                     null,
   name                 long varchar                   null,
   email                long varchar                   null,
   constraint PK_旅客 primary key clustered (id)
);

/*==============================================================*/
/* Table: 订单                                                    */
/*==============================================================*/
create table 订单 
(
   id                   varchar(8)                     not null,
   房间id                 integer                        null,
   price                integer                        null,
   constraint PK_订单 primary key clustered (id)
);

/*==============================================================*/
/* Table: 购物车                                                   */
/*==============================================================*/
create table 购物车 
(
   订单id                 varchar(8)                     not null,
   id                   varchar(8)                     null,
   客户id                 varchar(6)                     null,
   总价格                  integer                        null,
   总订单数量                integer                        null,
   constraint PK_购物车 primary key clustered (订单id)
);

/*==============================================================*/
/* Table: 酒店                                                    */
/*==============================================================*/
create table 酒店 
(
   酒店id                 integer                        not null,
   房间id                 integer                        null,
   房间数量                 integer                        null,
   位置                   long varchar                   null,
   级别                   smallint                       null,
   constraint PK_酒店 primary key clustered (酒店id)
);

/*==============================================================*/
/* Table: 银行卡                                                   */
/*==============================================================*/
create table 银行卡 
(
   id                   integer                        not null,
   passwd               varchar(6)                     not null,
   type                 char(10)                       null,
   constraint PK_银行卡 primary key clustered (id)
);

alter table 旅客
   add constraint FK_旅客_REFERENCE_银行卡 foreign key (id)
      references 银行卡 (id)
      on update restrict
      on delete restrict;

alter table 旅客
   add constraint FK_旅客_REFERENCE_购物车 foreign key (订单id)
      references 购物车 (订单id)
      on update restrict
      on delete restrict;

alter table 订单
   add constraint FK_订单_REFERENCE_房间 foreign key (房间id)
      references 房间 (房间id)
      on update restrict
      on delete restrict;

alter table 购物车
   add constraint FK_购物车_REFERENCE_订单 foreign key (id)
      references 订单 (id)
      on update restrict
      on delete restrict;

alter table 酒店
   add constraint FK_酒店_REFERENCE_房间 foreign key (房间id)
      references 房间 (房间id)
      on update restrict
      on delete restrict;
    • 简单叙说 数据库逻辑模型 与 领域模型 的异同

      答 : 同: 2个都体现实际中的实体之间的关系。 异: 领域建模看重关系和重要的属性重点是快及简洁明了,E-R图要考虑比较细节的属性和约束。原来的“实体-关系”转换成“表-外键”,实体的属性转换为表的列,同时每个列的数据类型转换为对应的DBMS中支持的数据类型。


对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。