系统设计之概念与关系

简介: 系统设计之概念与关系

在之前的若干博客中,都提出了一个观点:数据是由 IDContent 构成的。然而数据从来都不是单独存在的,数据与数据之间存在者复杂的关系。每一种数据都有一个 概念(也可称之为:名称、实体、对象)。数据与数据之间存在着 关系。本文要梳理的点就是系统设计中的概念与关系。

概念

RESTful API 设计中有一句话 资源在网络中以某种表现形式进行状态转移。数据在不同的的业务之间不停的流动,在用户端,数据可以是网页,也可以是原生界面;在业务系统中,使用对象来承载数据,使用函数操作数据;在存储系统中,数据被持久化为三种形态:

  • 键值对(K-V)
  • 集合/表格(Table)
  • 关系型数据(介于K-V与Table之间)

数据命名的好坏,代表了开发人员对于数据理解的深度。概念不清,概念之间的关系自然无从谈起。

关系

对象之间的关系,有且只有两种:

  • 并列关系(Sibling)
  • 父子关系(Parent-Child)

一组对象形成一棵树(Tree),若干颗关系密切的树形成整个森林(Forest),一个森林就是一个系统。在持久化的过程中,通过对象映射关系(ORM),数据从业务系统的对象中转移到存储系统中。

数据之间的有关系,有且仅有三种:

  • 一对一(One-to-One)
  • 一对多(One-to-Many)
  • 多对多(Many-to-Many)

自上而下,在系统中的表达的难度依次增加,系统的复杂度也就越高。自下而上,下面的关系总能用来表示上面的关系,因此更具表达能力。

设计

业务系统设计的重点在于赋予 概念,梳理 关系,以及在满足业务需求的前提下,尽量简化 关系。关系越简单,系统越简单;系统越简单,开发和维护的难度也就越低。当然,表达能力也就越低。如果说设计有三个层次,那么这三个层次是:

  • 梳理清楚概念与关系
  • 简化关系的能力
  • 复杂化关系以表达业务需求

从产品角度考虑,拥抱关系复杂化,是开发人员设计成熟的标识。

本文作者 : cyningsun

本文地址https://www.cyningsun.com/12-15-2020/system-design-concept-and-relation.html

版权声明 :本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 CN 许可协议。转载请注明出处!

# System Design

  1. 系统为何如此脆弱
  2. 译|Design patterns for container-based distributed systems
目录
相关文章
|
6月前
|
存储 安全 区块链
元宇宙与区块链技术的关系可以从多个角度进行阐述。以下是对这两者之间关系的详细分析
**元宇宙:虚拟世界融合现实元素,强调交互与沉浸;区块链:去中心化、安全的分布式账本。两者结合,区块链确保元宇宙中虚拟资产安全、支付高效、身份验证私密、治理透明,支撑其经济体系与用户信任,驱动未来发展。**
|
7月前
|
数据库
7.4关系数据库设计基础知识
7.4关系数据库设计基础知识
|
设计模式 Java uml
UML的六种关系-系统学习四
众所周知设计模式是程序界的内功心法,那么这内功心法中包含UML图(宏观部分)、场景(场段)、代码(实操),UML图中最重要的元素当属六大关系了至此有了小编的这边总结文章。
|
数据库
关系数据规范化理论
关系数据规范化理论
|
数据可视化
【设计篇】36 # 如何理解可视化设计原则?
【设计篇】36 # 如何理解可视化设计原则?
247 0
【设计篇】36 # 如何理解可视化设计原则?
|
存储 程序员 虚拟化
|
存储 数据库
关系数据库设计核心
关系数据库设计核心
364 0
关系数据库设计核心
|
iOS开发
[译] 伟大设计与好设计之间区别是什么?这里告诉你真相
能否举一些伟大设计的例子?发表评论与我们一起分享吧。
1141 0
|
XML 数据格式
改善代码设计 —— 处理概括关系(Dealing with Generalization)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
981 0