Skip to content

Fowler Evolutionary Database Design

Source identity:

ddx:
  id: resource.fowler-evolutionary-database-design
  authoring:
    home: repo

Fowler Evolutionary Database Design

Source

Summary

Martin Fowler describes evolutionary database design as a set of practices for changing databases safely as software evolves. The guidance emphasizes version-controlled database artifacts, migration scripts, close collaboration between developers and database specialists, automated migration tooling, and frequent integration of database changes.

Relevant Findings

  • Database schemas and data both need managed evolution.
  • All database changes should be captured as migrations.
  • Database artifacts should be version controlled with application code.
  • Migration practices need to account for legacy data and data movement, not only schema changes.
  • Database design should evolve with the application while preserving data integrity and deployability.

HELIX Usage

This resource informs the Data Design artifact. HELIX uses it to keep data models explicit about schema evolution, data migration, rollback expectations, and implementation/test consequences.

Authority Boundary

This resource supports database evolution and migration discipline. It does not replace project-specific data modeling, security classification, performance testing, or datastore selection.

Innsigle seal: model-primary by HELIX

The signature covers the markdown source of this page, not these HTML bytes. This page quotes that seal; verify it against the source file.

Composition
model-primary
Issuer
HELIX helix
Signing key
ed25519:b0865d76d834a52c48506414d16f4e5a (build key)
Signed source
research/fowler-evolutionary-database-design.md
Signed
2026-09-23T14:11:58Z
Content digest
sha256:5ee65e9c…2c575b11

This build key is endorsed by the human key for build signing; the signature is not a detector and not a truth guarantee.

Raw attestation JSON
{
  "payload": {
    "innsigle": "1",
    "type": "https://innsigle.dev/claim/colophon/v1",
    "issued_at": "2026-09-23T14:11:58Z",
    "issuer": {
      "id": "helix",
      "name": "HELIX",
      "key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
      "key_url": "https://documentdrivendx.github.io/helix/.well-known/innsigle/keys.json"
    },
    "subjects": [
      {
        "uri": "https://documentdrivendx.github.io/helix/research/fowler-evolutionary-database-design/",
        "digest": {
          "alg": "sha256",
          "value": "5ee65e9ce6545b6bd03e6a169ade80d15ec4349c4ce673abcbe6fdf82c575b11"
        }
      }
    ],
    "colophon": {
      "schema_version": "1",
      "composition": "model-primary",
      "ingredients": [
        {
          "kind": "model",
          "name": "Claude",
          "role": "draft"
        },
        {
          "kind": "tool",
          "name": "sloptimizer",
          "role": "rewrite"
        },
        {
          "kind": "human",
          "name": "operator",
          "role": "structure-edit"
        }
      ],
      "notes": null
    }
  },
  "payload_encoding": "json",
  "signatures": [
    {
      "key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
      "alg": "ed25519",
      "sig": "lzJtoVKGqGxwWEZMitLslUCOszplgpsKtPBB3MCD-vzavBJd8qjYa0p4qSHAoGdleQiis4gRjM8SnlOR2xpmAw",
      "signed_at": "2026-09-23T14:11:58Z"
    }
  ]
}