Skip to content


Database schema management is too often discussed with excessive jargon and assumed knowledge. This page an attempt to explain the core terms and concepts in plain language, and like the other pages of this documentation is a work in progress.


A "migration" is simply a transition from a database in one form, to a different form (sometimes an entirely different database). Changing the structure of an existing database is usually called a "schema migration". Moving data permanently from one database to a different database is called a "database migration".

Schema vs schema

A schema can mean two different things.

  • A database's structure. As in: migra is a schema comparison tool. It compares the structure of two databases.
  • A namespace within a database. As in: create schema geo; create view geo.landmarks as.... In PostgreSQL, database objects are by default stored in a schema (namespace) called "public", but others can be created too, and tables, views and other database elements stored within these too.