Section 18

Naming Conventions

Strict, boring, consistent. The convention is the contract.

Schemas

text
bronze   # raw, untouched
silver   # cleaned, conformed
gold     # business-ready
audit    # logs, run tracking, validation results
ref      # static reference data (countries, codes, fx rates)
stg      # ephemeral staging (truncated each run)

Tables

text
bronze.raw_<source>_<entity>          e.g. bronze.raw_stripe_charges
silver.<entity>_clean                  e.g. silver.charges_clean
silver.<entity>_<dim>                  e.g. silver.charges_by_country
gold.<business_process>_summary        e.g. gold.revenue_summary
gold.dim_<entity>                      e.g. gold.dim_customers
gold.fct_<process>                     e.g. gold.fct_orders
audit.<process>_log                    e.g. audit.ingest_log
audit.pipeline_runs
audit.validation_results

Columns

  • snake_case always — no camelCase.
  • Booleans prefixed with is_ or has_.
  • Timestamps suffixed _at (UTC). Dates suffixed _date.
  • Foreign keys: <entity>_id.
  • Metadata columns prefixed with underscore: _loaded_at, _source, _hash.

Jobs

text
<verb>_<layer>_<entity>
ingest_bronze_claims
transform_silver_claims
build_gold_claims_summary
The test
A new engineer should be able to predict any table or job name without looking it up. If they can't, the convention is broken.