我们之前要求设计的E-R Model是属于数据建模的范畴,E-R Model是数据模型的一种表现形式(数据建模不只是E-R Model一种表现形式) ,E-R Model以数据为中心,关注的是对象的实体和关系,建模时并不考虑Entity的行为。在E-R概念模型的基础上可以建立“关系数据模型”进而推导出“物理数据模型”,这是一条以E-R Model为起始的数据建模的路线

Domain Model是属于对象建模的范畴,它和E-R Model的分析具有很大的相似性,最大的区别我认为对象建模需要为对象建立职责(对象的行为),而正因为行为的存在衍生出时序、多态等等对象模型比之数据模型所特有的东西。 从《DDD》的建模分析推导过程,我实在看不出在建立Domain Model之前有建立E-R Model的必要性。但是正如上面帖子里所讨论的,数据建模优先还是对象建模优先,对专家级别的人来说也是由其经验和偏好所决定的。在CMS项目里面,我觉得数据模型上的复杂度并不是很高,我想Domain Model优先可能合适一点。Domain Model到什么地步才会有数据模型或者是关系数据表能确定?我想还是在对象和其属性大致确定的时候比较合适。

最后,我们还提到了概念模型(conceptual model),容易让人混淆的是不管是数据模型还是对象模型都会有 概念的层面。在数据建模中通常将E-R Model就称之为概念数据模型(接下来的层面是关系数据模型和物理数据模型);在对象模型中,对象图通常是从粗到细具有不同的level,可以将只考虑对象实体的划分和关系的建立的层面称之为概念模型(可参考《Analysis Pattern》)

领域模型vs E-R模型的更多相关文章

  1. 数据库系统概论学习2-《关系数据库与 E/R 模型》

    -----------------------------一直更新学习内容------------------------------------ 建立一个关系数据库需要几步? 2.关系数据库与 E/ ...

  2. Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)

    不多说,直接上干货! 特征选择里,常见的有:VectorSlicer(向量选择) RFormula(R模型公式) ChiSqSelector(卡方特征选择). RFormula用于将数据中的字段通过R ...

  3. 领域模型(domain model)&贫血模型(anaemic domain model)&充血模型(rich domain model)

    领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 贫血模型是指使用的领域对象中只有s ...

  4. 领域模型(DomainModel)与视图模型(ViewModel)

    Model-View-Controller(模型-视图-控制器,MVC)模式将你的软件组织并分解成三个截然不同的角色: Model 封装了你的应用数据.应用流程和业务逻辑. View 从 Model ...

  5. 使用View Model从表现层分离领域模型

    本文来自:http://www.cnblogs.com/shanyou/archive/2010/04/03/1703501.html Model-View-Controller(模型-视图-控制器, ...

  6. [译文]Domain Driven Design Reference(二)—— 让模型起作用

    本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. 其它本系列其它文章 ...

  7. EF Core中避免贫血模型的三种行之有效的方法(翻译)

    Paul Hiles: 3 ways to avoid an anemic domain model in EF Core 1.引言 在使用ORM中(比如Entity Framework)贫血领域模型 ...

  8. R语言中文社区历史文章整理(类型篇)

    R语言中文社区历史文章整理(类型篇)   R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...

  9. [笔记-统计学习方法]感知机模型(perceptron) 原理与实现

    前几天认把感知机这一章读完了,顺带做了点笔记 现在把笔记做第三次的整理 (不得不说博客园的LaTex公式和markdown排版真的不太舒服,该考虑在服务器上建一个博客了) 零.总结 适用于具有线性可分 ...

  10. 随机服务系统模拟—R实现(三)

    M/M/c随机服务系统的模拟 M/M/1服务系统:(1)队列长度没有限制:(2)顾客到达的时间间隔和服务时间均服从指数分布:(3)服务台数量为c. 一.M/M/c随机服务系统的模拟 在M/M/c排队系 ...

随机推荐

  1. SAP的JSON没有双引号问题

    SAP,默认的JSON转化是这样的: 怎么解决呢? 先找到转换JSON的类:CL_TREX_JSON_SERIALIZER...或者其他名字. SE24里复制这个类出来到ZCL_TREX_JSON_S ...

  2. 协程本质是函数加状态机——零基础深入浅出 C++20 协程

    前言 之前写过一篇 C++20 协程入门的文章:<使用 C++ 20 协程降低异步网络编程复杂度>,谈到了协程在消除异步编程 callback hell 方面的重要贡献--使代码更清晰,易 ...

  3. DTMO 直播预告|Taier 的 Web 前端架构解析

    原文链接:DTMO 直播预告|Taier 的 Web 前端架构解析 一.直播介绍 上两期,我们为大家分享了 Taier 入门及控制台的介绍,本期我们为大家分享 Taier 的 Web 前端架构介绍. ...

  4. async与defer的区别

    `async` 和 `defer` 是两种不同的JavaScript特性,它们的主要区别在于它们的执行顺序和时间点. `async` 意味着函数或代码块会被异步执行.当浏览器遇到带有 `async` ...

  5. C# 生成一天内不重复的int 值

    public static int ConvertDateTimeToInt(System.DateTime time)        {            System.DateTime sta ...

  6. pdf工具类之添加页码

    实现思路:将原pdf复制一份到目标pdf,在目标pdf上进行操作,复制的原因是:原pdf需要获取其pdf读入流(PdfReader),如果还在原pdf上继续宁操作,就会出现一下一下异常 java.io ...

  7. patch-package:taro-ui引入报错 Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0

    前言 在使用taro ui时候报错如下 > Executing task: yarn run dev:weapp < yarn run v1.22.17 $ npm run build:w ...

  8. pat 乙级 1090 危险品装箱

    pat 乙级 1090 危险品装箱 题目 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需 ...

  9. Codigger应用商店(Store):连接开发者与用户的功能平台

    Codigger应用商店(Store)作为Codigger生态中的重要组成部分,承担着连接开发者与用户的桥梁作用.它构建了一套从开发创作到发布推广,再到价值变现的完整流程,为生态内的各方提供了协同互动 ...

  10. SciTech-BigDataAI-ImageProcessing-OpenCV-OpenCV modules

    OpenCV modules https://docs.opencv.org/3.4/ Introduction OpenCV Tutorials OpenCV-Python Tutorials Op ...