我目前正在设置Liquibase,因此我可以对我的数据库进行版本控制。
然而,我一直在努力的一件事是想出一个像样的目录结构。谷歌给我留下了非常有限的例子,Liquibase“最佳实践”变更日志结构似乎过于简单(从每个版本中都有一个巨大的变更日志)。
理想情况下,我希望每个数据库对象都有一个更改日志。但是,我不完全确定这是可能的。例如,假设我首先创建表A,然后表B将外键返回到A,然后我创建表C.稍后我决定表B需要有一个外键到表C.但是,我怎么会在Liquibase处理这个?显而易见的答案是只需添加一个变更集,在创建这些表的变更集之后添加该外键约束。但是,如果我正在为每个db对象执行一个changelog,那么在没有重新排序changelog包含的情况下,我并没有真正看到“干净”的方式。您不能将该变更集放在表B更改日志中,因为表C可能尚不存在。
以下是按执行顺序显示流程的小插图:
(master.changelog.xml)
如果您按架构拆分更改日志,则此问题会更加复杂。
是否有一种干净的方法可以为每个db-object提供一个更改日志,或者它不是真正可行的选项吗?