跳到主要内容

理论基础

提示
  • 磐石 DB 的设计仍在逐步改进与完善中,本文将随时发生变化,感兴趣的朋友们可以时刻保持关注;
  • 在下方的版权声明中有本文作者的联系方式,有不同意见和相关建议的朋友可以与其保持联系;
  • 也可在本文底部的评论区登录 Github 后,直接发表您的观点;
版权声明

术语

  • 模型(Model):对主体结构的描述
  • 主体(Subject):
  • 属性(Attribute):
  • 关系(Relation):
  • 数据(Data):
  • 元数据(MetaData):
  • 事件(Event):

规则

  • 数据库记录的是主体、主体之间的关系,以及发生在主体上的事件
  • 主体的属性,是主体数据关系,或者,主体与主体的关系
  • 关系是主体与主体、主体与数据之间的连接情况
  • 关系是双向的,即,从关系的任意一方出发,均可以找到另一方
  • 数据是关系的终点,即,从数据出发不再有向外延伸的关联关系
  • 元数据是数据的属性,该属性不是关系,而是对数据自身的固有信息的描述, 如:长度类型(数字、字符串、二进制等)、创建时间
  • 主体具有一个全局唯一的标识identifier,该标识为创建时自动生成
  • 每个主体都有自己的结构(即,关系集合),可随时向主体增减和修改关系。 主体只有关系,没有类型
  • 主体之间的关系集合重叠越多,越可以将其视为同一类型的模型, 但可能某一特性或差异的存在,便会让主体之间产生鸿沟
  • 可通过主体的某个关系(比如,type)将不同主体归为同类型的模型,以便于分类查询和管理
  • 函数也是主体,其参数列表和函数体,都是其与数据的关系
  • 对数据的约束条件仅作用于关系,而不是作用于数据,即,限定某种关系只能连接符合条件的数据或其他主体
  • 事件必须有接受主体,即,事件一定是作用于已知的目标受体,但事件的发送主体却可能是未知的。 事件的发送主体可以有多个,即,由多个主体才能导致目标主体的状态(关系)发生变化; 事件也可以有多个受体,即,某事件可同时作用于多个主体并导致其均发生状态变化
  • 变更仅针对对主体的变更,事件、数据、元数据不存在变更
  • 对主体的变更,是对其关系的增删改,增删改可作用于关系集合,也可以是对某关系的目标端的值的修改
    • 变更版本即为主体关系的修订版本
  • 对主体的一次变更,就是对数据库的一次变更,数据库自身是一个变更体。 变更历史、变更分支均以数据库为变更实体
    • 可从某个变更开始,在新的衍生分支上做不同于源分支的变更
  • 数据库是一个标识为0的主体——元初主体,其他所有主体均通过关系subject与元初主体建立连接, 也就是元初主体是整个数据库树的
  • 不存在绝对的中心主体,可以从任何主体出发,不断丰富和完善主体间的关系, 将新的主体与已存在主体或其他新主体关联起来。 在开发应用时,从应用需管理和维护的核心主体出发,对其模型结构不断进行改进和调整即可, 不需要过早、特意地先确定核心主体与其他主体的关系