I have few queries on best practises of Database versioning. Suppose i have version as Major.Minor.Patch where Major: is the Schema compatible version with Application(i am planning to map it to major version of the application). And its not backward compatible. This means database version 5.x.x will not work with application version 4.x.x or 6.x.x. This way i feel that its easy to maintain the compatible application and DB. Minor: This can be used for individual DB changes. this should be backward compatible. This means that some table, column has been added which wont effect the existing application.(ex:new features) Patch: Backward compatible. Most of the bug fixes or changes in stored proc can go in here. Does this look ok? or can it be bettered? any inputs?