N

Backbone ERD

The six tables and the keys that join them.

completeness · relationships
6 backbone tables

Backbone ERD

Completeness is not just row counts — it is whether the tables join. Here are the six backbone tables every curated vertical carries and the real keys that stitch them together. Primary and foreign keys are emphasized; each connector is labelled with the join column.

No surrogate key on event_results

event_results has NO surrogate key; identity is (event_id, competitor_id, division).

identity = (event_id, competitor_id, division)

No foreign keys, no uniqueness

Declared constraints are advisory planner hints only. Every integrity guarantee must be checked, never assumed.

These relationships are advisory — every integrity guarantee must be checked.

Entity-relationship map

PKprimary keyFKforeign keyIDidentity (no PK)
season_idevent_idcompetition_idevent_idevent_idcompetitor_idcompetitor_id
competitors
competitor_idPK
competitor_name
competitor_type
sport
events
event_idPK
event_name
round
start_date
end_date
season_idFK
status
format
venue_name
city
state
country
sport
competitions
competition_idPK
event_idFK
division
label
scheduled_start
status
results
result_idPK
event_idFK
competition_idFK
competitor_idFK
division
finish_position
status
event_results
event_idID
competitor_idID
divisionID
finish_position
status
seasons
season_idPK
season_name
season_year
start_date
end_date
sport

How to read it

Arrows point from a key to the tables that reference it. Follow event_id out of events and you reach every other backbone table except seasons — it is the spine of the join graph.

results is the fan-in fact table: one row per competitor per competition, carrying three foreign keys at once.

The joins, verbatim

  • seasons.season_id→events.season_id
  • events.event_id→competitions.event_id
  • competitions.competition_id→results.competition_id
  • events.event_id→results.event_id
  • events.event_id→event_results.event_id
  • competitors.competitor_id→results.competitor_id
  • competitors.competitor_id→event_results.competitor_id