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_resultsColumns
snake_casealways — no camelCase.- Booleans prefixed with
is_orhas_. - 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_summaryThe 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.