6

系统设计之概念与关系

 3 years ago
source link: https://www.cyningsun.com/12-15-2020/system-design-concept-and-relation.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

系统设计之概念与关系

在之前的若干博客中,都提出了一个观点:数据是由 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 许可协议。转载请注明出处!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK