在我的公司,我们将每个数据库对象(存储过程、视图等)保存为单独的 SQL 文件,并以这种方式将它们置于源代码控制之下。
到目前为止,我们的版本化文件结构中有一个非常扁平的存储模型:
DatabaseProject
Functions
- (这里的所有功能;没有进一步的嵌套)
StoredProcedures
- (所有存储的过程都在这里;没有进一步的嵌套)
Views
- (同上)
对于一个大的新项目,我想到了另一个想法:为什么不按主题存储这些文件,而不是在这些预制平面列表中?
例如:
DatabaseProject
Reports
- (个人存储过程、视图等)
SpecificReport
- (这里有更多对象,必要时进一步嵌套)
SpecificApplication
- (所有类型的 DB 对象,任意深度嵌套)
- 等等....
明显的缺陷是这种文件夹结构没有对数据库对象施加任何类型的命名空间层次结构。它仅用于组织。因此,很容易引入具有重复名称的对象。您需要某种构建工具来调查数据库项目并死于命名冲突。
我想知道的是:有没有人尝试过这种按应用程序主题在其版本化文件结构中组织 SQL 文件的方法?它值得吗?您是否创建了一个构建工具来监督我所描述的项目?