我不认为版本控制中没有特定的GoF设计模式本身,因为它存在许多实现。

版本控制的最简单的实现是对象的链表。其中列表中的每个节点都是可版本化对象的新版本。为了节省空间,您还可以实现某种diff,以显示修订版本之间的区别。这样,您可以将diff存储在数据库中,也可以存储可版本化对象的最终版本,因为版本控制系统应该能够导出两者之间的版本。

数据库模式主要看起来像这样(你可以在大多数wiki系统中看到这种模式):

+--------------------+ 1 * +-----------------------------+

| VersionableObject |---------| Diff |

+--------------------+ +-----------------------------+

| lastStateContent | | difference |

| originalAuthor | | revision |

| #dates and whatnot | | # userId, dates and whatnot |

+--------------------+ +-----------------------------+

如果你想用分支和东西去核心,你可能想考虑看看DAG这是现代分布式版本控制系统使用的。

现在,如果我们谈论你的例子,一大堆对象需要被保存在配置中。即我们必须挑选我们想要的模型的对象的修订。这意味着我们有许多关系(这是通过中介表解决的),就像这样:

+---+ 1 * +---------------+ 1 * +-----------------+ * 1 +-------+

| B |-------| Diff |-------| ModelSelection |-------| Model |

+---+ +---------------+ +-----------------+ +-------+

| revisionNo | | {PK} configId |

| {FK} configId | | {FK} modelId |

+---------------+ +-----------------+

我希望这有帮助。

mysql 设计模式_mysql – 你会推荐什么版本设计模式相关推荐

  1. C# 版本设计模式(Design Pattern)(转)

    C# 版本设计模式(Design Pattern)---------------总序 今天在写代码的时候,突然想到了一个非常有趣的问题,就是非常经典的一个问题:猫叫了,老师跑了,主人醒了. 也不知道自 ...

  2. mysql官网下载最新版升级版本多版本安装教程

    mysql官网下载最新版升级版本多版本安装教程 有好多人经常问我有没有mysql的安装包,很是无语,因为问的很多 ,所以今天就写一个教程. 1.下载安装包 点击打开下载地址:mysql官网下载地址,打 ...

  3. MySQL学习笔记(B站网课:MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷)已完结

    目录 一.为什么要学习数据库 二.数据库的相关概念 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍和安装 MySQL服务的启动和停止 MySQL服务的登录和退出 MySQL的常见命 ...

  4. mysql 和 =_MySQL 基本语法

    Mysql 基础 SQL分类: DDL-数据定义语言(create,alter,drop) DML-数据操纵语言(select,delete,update,insert) DCL-数据控制语言(gra ...

  5. Mysql整体介绍(适用于5.X版本)(上)(标贝科技)

    标贝科技 https://ai.data-baker.com/#/?source=qwer12 填写邀请码fwwqgs,每日免费调用量还可以翻倍 Mysql整体介绍(适用于5.X版本)(标贝科技) M ...

  6. centos mysql安装_mysql yum源安装

    部署服务器环境的时候经常要安装mysql,以下是常见的安装方式 源码安装 rpm包安装 yum源安装 这篇主要介绍yum源安装. yum源下载 进入 https://dev.mysql.com/dow ...

  7. mysql半连接_mysql表的半连接,反连接导致的mysql性能优化剖析

    [导读] 关于Oracle的半连接,反连接,我一直认为这是一个能讲很长时间的话题,所以在我的新书<Oracle DBA工作笔记>中讲性能优化的时候,我花... 关于Oracle的半连接,反 ...

  8. mysql开创_MySQL创始人打造MariaDB 全面兼容MySQL 5.1

    尽管MySQL前途未卜,但是其联合创始人最近也在全力忙于MariaDB方面的开发.相信这一MySQL分支的完善,会给数据库管理人员带来福音. MySQL联合创始人Monty Widenius提供了My ...

  9. C# 版本设计模式(Design Pattern)---------------总序

    今天在写代码的时候,突然想到了一个非常有趣的问题,就是非常经典的一个问题:猫叫了,老师跑了,主人醒了. 也不知道自己脑子里面在想些什么,怎么突然蹦出来了这个想法,后来想想,是时候该谢谢关于设计模式的博 ...

最新文章

  1. 阿联酋gitex_航空公司网站不在乎您的隐私后续行动:阿联酋航空以以下方式回应我的文章:...
  2. 持续推进预估时间问题研究,滴滴盖亚计划开放ETA数据集
  3. 飞思卡尔烧写工具mfgtools的使用
  4. SAP FI模块与SD、MM的接口配置
  5. php 按钮的属性值,HTML button标签的属性有哪些
  6. java 字符串索引从0开始_无限字符串中的字符串的第一个索引-Java
  7. img的属性alt 与 title的区别
  8. 【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】
  9. Java程序员必备!java商城项目难点
  10. android 图标删除不了,手机程序卸载之后桌面上残留的图标删除不掉
  11. VBS 按键 SendKeys:启动应用,执行热键
  12. layui之layer根据分辨率调整全屏(js判断分辨率)
  13. FinalCutPro快捷键
  14. 安卓手机怎么连苹果电脑?
  15. windows重装系统步骤及相关知识①
  16. Lucky!终于能够入职江苏‘’三新‘’供服公司了,快收下这份入职攻略吧!
  17. Mac程序坞中软件删除出现残留“?”图标无法删除解决方法:
  18. 普通人如何通过网络实现在家赚钱?
  19. 大范围延时摄影 稳定_摄影中的动态范围是什么?
  20. linux程序设计,linux程序设计

热门文章

  1. pycharm运行模型时怎么设置权重?_使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型...
  2. aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?
  3. redis java 遍历key_java遍历读取整个redis数据库实例
  4. opencv 绘制坐标曲线_OpenCV手工实现灰度及RGB直方图
  5. Python timedelta total_seconds()方法与示例
  6. 如何设置单词第一个字母大写_大写一行中每个单词的第一个和最后一个字母
  7. linux sublime nodejs,Ubuntu环境下sublime3 nodejs安装与插件配置
  8. java上传csv文件上传_java处理csv文件上传示例详解
  9. html 轮播图的鼠标事件,这是图片轮播的代码 html+css,怎么加上鼠标悬停移出继续功能?...
  10. 绝了,66道并发多线程面试题汇总