领域建模与数据库建模

本文探讨了领域建模与数据库建模的差异。领域模型关注业务功能,强调操作流程清晰,但可能导致代码冗余和维护成本增加。数据库建模侧重于数据库表操作,具有高重用性和较低的维护成本,但在处理复杂业务流程时可能引起功能紊乱。通过实例解释了两种建模方式在会员管理场景中的应用。
摘要由CSDN通过智能技术生成
a.阅读 Asg_RH 文档,按用例构建领域模型。
  • 按 Task2 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸。
  • 说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和 中介实体(M,也称状态实体) 
    – 在单页面应用(如 vue)中,E 一般与数据库构建有关, M 一般与 store 模式 有关 

  • – 在 java web 应用中,E 一般与数据库构建有关, M 一般与 session 有关 


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

给出系统的 E-R 模型(数据逻辑模型):(使用的建模工具:MySQL Workbench) 

- 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)
- 建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect
- 不负责的链接 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html

- 导出 Mysql 物理数据库的脚本

创建了下列这些表:

 customer


reservation


payment


hotel


room


shopping basket


它们之间的联系如下:



导出脚本

CREATE TABLE `reservation` (
`reservationID` int(11) NOT NULL,
`city` varchar(255) NULL,
`check_in_date` datetime NULL,
`check_out_date` datetime NULL,
`number_of_nights` int NULL DEFAULT 1,
`number_of_persons` int NULL,
`customerID` int(11) NULL,
`hotelID` int(11) NULL,
`roomID` int(11) NULL,
`paymentID` int(11) NULL,
PRIMARY KEY (`reservationID`) 
);

CREATE TABLE `customer` (
`customerID` int(11) NOT NULL,
`userName` varchar(255) NULL,
`password` varchar(255) NULL,
PRIMARY KEY (`customerID`) 
);

CREATE TABLE `payment` (
`paymentID` int(11) NOT NULL,
`amount` double(255,0) NULL,
`credit card type` varchar(255) NULL,
`card numbers` int NULL,
`card security code` varchar(255) NULL,
`customerID` int(11) NULL,
PRIMARY KEY (`paymentID`) 
);

CREATE TABLE `shopping basket` (
`baeketID` int(11) NOT NULL,
`itemID` int(11) NULL,
`itemNum` int NULL,
`ownerID` int(11) NULL,
PRIMARY KEY (`baeketID`) 
);

CREATE TABLE `hotel` (
`hotel_id` int(11) NOT NULL,
`city` varchar(255) NULL,
`location` varchar(255) NULL,
`name` varchar(255) NULL,
`star rating` integer(255) NULL,
`romNum` int NULL,
PRIMARY KEY (`hotel_id`) 
);

CREATE TABLE `room` (
`roomID` int(11) NOT NULL,
`type` varchar(255) NULL,
`price` decimal(10,2) NULL,
`availability` varchar(255) NULL,
`hotel_id` int(11) NULL,
PRIMARY KEY (`roomID`) 
);


ALTER TABLE `payment` ADD CONSTRAINT `fk_payment` FOREIGN KEY (`customerID`) REFERENCES `customer` (`customerID`);
ALTER TABLE `reservation` ADD CONSTRAINT `fk_reservation` FOREIGN KEY (`customerID`) REFERENCES `customer` (`customerID`);
ALTER TABLE `shopping basket` ADD CONSTRAINT `fk_shopping basket` FOREIGN KEY (`itemID`) REFERENCES `reservation` (`reservationID`);
ALTER TABLE `room` ADD CONSTRAINT `fk_room` FOREIGN KEY (`hotel_id`) REFERENCES `hotel` (`hotel_id`);
ALTER TABLE `reservation` ADD CONSTRAINT `fk_reservation_1` FOREIGN KEY (`hotelID`) REFERENCES `hotel` (`hotel_id`);
ALTER TABLE `shopping basket` ADD CONSTRAINT `fk_shopping basket_1` FOREIGN KEY (`ownerID`) REFERENCES `customer` (`customerID`);
ALTER TABLE `reservation` ADD CONSTRAINT `fk_reservation_2` FOREIGN KEY (`roomID`) REFERENCES `room` (`roomID`);
ALTER TABLE `reservation` ADD CONSTRAINT `fk_reservation_3` FOREIGN KEY (`paymentID`) REFERENCES `payment` (`paymentID`);

简单叙说数据库逻辑模型与领域模型的异同: 

领域建模:专注于某一个功能模块、或者说是围绕业务功能进行。

主要作用:围绕功能业务进行操作

优势:操作流程代码清晰,不紊乱其他业务的操作

劣势:代码冗余大,重用性低,维护成本高

如:会员消费余额、会员充值余额!这是两个业务功能,互不牵扯,所以需要对会员表多次操作

数据建模:专注于某一个数据库表(javaBean)操作

主要作用:围绕数据库表(javaBean)
优势:重用性高,代码冗余小,维护成本低

劣势:业务需求流程复杂,功能紊乱
    
如:会员消费余额、会员充值余额!这是两个业务功能,互不牵扯,只需要操作一个会员业务,其他的牵扯到的会员业务都会随之改变!感觉牵一发而动全身!



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值