相关疑难解决方法(0)

如何版本控制数据库中的记录

假设我在数据库中有一条记录,管理员和普通用户都可以进行更新.

任何人都可以建议一个好的方法/架构如何版本控制此表中的每个更改,以便可以将记录回滚到以前的版本.

architecture database-design

158
推荐指数
8
解决办法
6万
查看次数

数据库设计修订?

我们在项目中要求存储数据库中实体的所有修订(更改历史记录).目前我们有2个设计方案:

例如,对于"员工"实体

设计1:

-- Holds Employee Entity
"Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)"

-- Holds the Employee Revisions in Xml. The RevisionXML will contain
-- all data of that particular EmployeeId
"EmployeeHistories (EmployeeId, DateModified, RevisionXML)"
Run Code Online (Sandbox Code Playgroud)

设计2:

-- Holds Employee Entity
"Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)"

-- In this approach we have basically duplicated all the fields on Employees 
-- in the EmployeeHistories and storing the revision data.
"EmployeeHistories (EmployeeId, RevisionId, DateModified, FirstName, 
      LastName, DepartmentId, .., ..)"
Run Code Online (Sandbox Code Playgroud)

有没有其他办法做这件事? …

sql database versioning database-design

123
推荐指数
8
解决办法
3万
查看次数

Neo4j如何建模时间版图

我的部分图表具有以下架构:

在此输入图像描述

图的主要部分是域,其中有一些人链接到它.Person对电子邮件属性有一个独特的约束,因为我也有来自其他来源的数据,这非常适合.

在我的情况下,一个人可以是管理员,他有一些链接到他的设备/日历.我从一个SQL数据库中获取这些数据,我导入了几个表来组合整个图片.我从一个表开始,它有两列,管理员的电子邮件和他的用户ID.此用户标识仅适用于生产数据库,并且不会全局用于其他源.这就是为什么我使用电子邮件作为人的全球ID.我目前正在使用以下查询来导入所有生产表都链接到的用户ID.我总是得到用户设置和信息的当前快照.此查询每天运行4次:

CALL apoc.load.jdbc(url, import_query) yield row
MERGE (p:Person{email:row.email})
SET p.user_id = row.id
Run Code Online (Sandbox Code Playgroud)

然后我从其他表导入链接到此用户ID的所有数据.

现在问题出现了,因为来自生产数据库的用户可以更改他的电子邮件.所以我现在导入这个的方式我将最终得到两个具有相同user_id的人,随后所有设备/日历将链接到两个人,因为他们都共享相同的user_id.所以这不是对现实的准确表述.我们还需要捕获设备连接/断开连接到特定user_id的时间,因为可以连接/断开设备并将其借给具有不同管理员(user_id)的朋友.

如何更改我的图形模型(导入查询),以便:

  1. 查询当前是谁的管理员不需要复杂的查询
  2. 查询当前已连接设备的人不需要复杂查询
  3. 查询历史可能会更复杂一些.

graph neo4j cypher

11
推荐指数
1
解决办法
1881
查看次数

时间旅行功能在postgresql中

任何人都可以推荐/反对postgresql的contrib/spi模块中的时间旅行函数吗?在任何地方都有可用的例子吗?

TNX

postgresql time-travel

10
推荐指数
1
解决办法
2844
查看次数

对象版本控制模式

我正在尝试在我们的域中建模我们的一些对象,并遇到了一些问题,其中一些对象可以被版本化.即,用户可以在一段时间内创建新的对象版本.所以,我需要在程序中对它们进行建模.我认为这是SW设计中的常见问题.

最初,我跳到了模仿源代码控制版本控制概念的想法,并提出了一个版本化的对象概念和方法,如签入,签出等.但是,我觉得它不是那么'系统',因为我没有'探索模式(即,我觉得像犯罪一样犯罪

  • 我没有涉及寻找多个解决方案等方面
  • 寻找可以给我更多可靠参考文献的文学作品.

所以,我目前的问题是,对于系统建模,我需要搜索解决版本建模问题的模式,最好是在文献中.当然,要充分利用它.

所以,我搜索了这样的模式,只发现了一个时间对象模式.但是,我不确定这是不是我想要的.你们对这种模式有什么建议吗?

[自我编辑]也许我没有很好地描述这个问题.您可以看到类似于源控制文件版本问题的问题.我有几种类型的对象(存储在数据库中),可以有多个版本.在我的应用程序中,我必须处理所有这些版本,我还必须创建新版本的对象(最终将存储在数据库中).我期待的是某种可引用的模式,我可以使用它模拟接口来访问/修改/添加这些对象的新版本.我可以想出的基本界面是IVersionedObject,其中包括checkout,checkin,undoCheckout等等.但是,这是我自己观察源控制系统的想法.我不认为它是SW设计模式.因此,期待针对上述问题的一些记录良好的设计模式.

oop design-patterns

7
推荐指数
1
解决办法
5367
查看次数