如果这不是要询问的正确 SE 站点,我们深表歉意。
我正在设计目录管理应用程序。层次结构中的任何元素都必须进行版本控制,即当我更改它的属性时,将创建一个新版本。新版本也可以有与以前不同的孩子。用户在管理目录时可以在版本之间切换,因此我需要列出子项的所有现有版本。切换版本时,将更新所有后代)。
我的第一个想法是
| A | | B | | C |
|--------------| |--------------| |--------------|
| ID (k) | | ID (k) | | ID (k) |
| VER (k) | | VER (k) | | VER (k) |
| ... | | A_ID (fk) | | B_ID (fk) |
| | | A_VER (fk) | | B_VER (fk) |
|--------------| | ... | | ... |
|--------------| |--------------|
实体的键总是类似于 (ID, VER) 而父级的 fk 是 (P_ID, P_VER)。
这是实施它的好方法吗?
更新:显然比这更复杂。版本控制的意思是元素有有效期,我们需要保留旧版本。例如,客户购买价格为 x 的产品。1 月 1 日之后,它将花费 y。1 月 1 日之后的新客户获得新价格 y,但老客户继续支付 x。
添加时间戳列可能是这里的最佳选择。