系统设计之概念与关系


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

概念

data-flow

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

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

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

关系

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

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

A-Forest-is-composed-of-multiple-trees-Forest-Nodes-span-multiple-trees-to-include-a-set
一组对象形成一棵树(Tree),若干颗关系密切的树形成整个森林(Forest),一个森林就是一个系统。在持久化的过程中,通过对象映射关系(ORM),数据从业务系统的对象中转移到存储系统中。

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

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

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

database-diagram

设计

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

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

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

本文作者:cyningsun
本文地址https://www.cyningsun.com/12-15-2020/system-design-concept-and-relation.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 CN 许可协议。转载请注明出处!

# System Design