相关疑难解决方法(0)

时态数据库设计,带有扭曲(实时与草稿行)

我正在考虑实现对象版本控制,需要同时拥有实时和草稿对象,并且可以使用来自某人经验的见解,因为我开始怀疑它是否有可能没有可能可怕的黑客攻击.

为了示例,我将其分解为带有标签的帖子,但我的用例更为一般(涉及缓慢变化的维度 - http://en.wikipedia.org/wiki/Slowly_changing_dimension).

假设您有一个posts表,一个tags表和一个post2tag表:

posts (
 id
)

tags (
 id
)

post2tag (
 post_id fkey posts(id),
 tag_id fkey tags(id)
)
Run Code Online (Sandbox Code Playgroud)

我需要一些东西:

  1. 能够准确显示帖子在任意日期时间的样子,包括已删除的行.
  2. 对于完整的审计跟踪,跟踪谁正在编辑什么.
  3. 需要一组物化视图("实时"表)以保持参照完整性(即日志记录对开发人员应该是透明的).
  4. 需要适当快速的实时最新的草稿行.
  5. 能够有一个帖子的帖子与现场帖子共存.

我一直在研究各种选择.到目前为止,我提出的最好的(没有点#4 /#5)看起来有点像SCD type6-hybrid设置,但是没有当前布尔值,而是当前行的物化视图.出于所有意图和目的,它看起来像这样:

posts (
 id pkey,
 public,
 created_at,
 updated_at,
 updated_by
)

post_revs (
 id,
 rev pkey,
 public,
 created_at,
 created_by,
 deleted_at
)

tags (
 id pkey,
 public,
 created_at,
 updated_at,
 updated_by
)


tag_revs (
 id,
 public,
 rev pkey,
 created_at,
 created_by,
 deleted_at
)

post2tag (
 post_id fkey posts(id),
 tag_id fkey tags(id), …
Run Code Online (Sandbox Code Playgroud)

sql database postgresql database-design anchor-modeling

17
推荐指数
2
解决办法
6379
查看次数