Skip to main content

Entity Relationship Overview

Tables

conferences

The top-level organizational unit. Seeded with 10 real conferences.

universities

Each institution belongs to one conference.

sports

Global sport definitions shared across all universities. Seeded: Football, Basketball (M), Basketball (W), Baseball, Track & Field, Soccer (W)

positions

Sport-specific positions. Seeded: 10 Football positions (QB, WR, RB, TE, OL, DB, LB, DL, K/P, S), 5 Basketball, 8 Baseball, 5 Track, 4 Soccer = ~32 total

athletes

Student-athletes belonging to a university.

brands

Sponsors and brand partners. Seeded: 20 brands (Nike, Adidas, Under Armour, Gatorade, Red Bull, etc.)

nil_deals

The central table. Every NIL agreement is a row here.

reporting_periods

Academic year periods for deal grouping.

budget_allocations

Per-sport budget caps per reporting period.

users

Platform users scoped to a university.

peer_groups

Custom benchmark comparison groups.

athlete_notes

Internal staff notes on athletes.

activity_log

Audit trail for all mutations.

Key Indexes

All foreign key columns are indexed by SQLAlchemy. The most performance-critical queries:
  • nil_deals filtered by university_id + deal_status — covers dashboard KPIs, budget, reporting
  • nil_deals filtered by sport_id + position_id — covers benchmarks
  • athletes filtered by university_id + is_active — covers roster list
  • activity_log filtered by entity_type + entity_id — covers athlete detail activity