10.2 Designing Plans for Data Collection, Storage, Analysis, and AMS Workflows

Key Takeaways

  • Relational SQL databases overcome flat spreadsheet failures by linking normalized fact tables and dimension tables via immutable Primary Keys (PK) and Foreign Keys (FK).

  • Tidy Data (Third Normal Form) requires one variable per column, one observation per row, and one observational unit per table, favoring Long Format over Wide Format for longitudinal storage.

  • Automated ETL (Extract, Transform, Load) pipelines ingest RESTful API payloads into a staging layer for SI unit standardization and ISO 8601 timestamp normalization before warehouse loading.

  • A centralized Data Dictionary must govern variable definitions, sampling rates, calculation formulas, and explicit NULL representations—never coding missing tests as 0 or -999.

  • The 3-2-1 backup rule safeguards institutional data by keeping 3 total copies across 2 distinct storage media with at least 1 immutable or air-gapped copy stored off-site.

Last updated: October 2026

10.2 Designing Plans for Data Collection, Storage, Analysis, and AMS Workflows

As high-performance departments scale across multiple squads, seasons, and high-frequency measurement technologies, ad-hoc data management rapidly collapses. Designing a resilient architecture for data collection, storage, and analysis requires transitioning from fragmented desktop spreadsheets to relational database schemas, automated application programming interface (API\text{API}) pipelines, rigorous metadata governance, and enterprise backup infrastructure.


Why Flat Spreadsheets Fail at Scale

In early-stage sport science programs, practitioners frequently store testing and workload data in disconnected spreadsheet workbooks. While spreadsheets are useful for rapid ad-hoc scratchpad calculations, relying on flat files as a primary database introduces severe structural failure modes:

  • Entity Resolution and Naming Inconsistencies: Manual typing across tabs produces mismatched string identifiers ("John Smith" in the GNSS\text{GNSS} tab, "Smith, John" in the force-plate tab, and "J. Smith" in the wellness sheet), breaking automated table joins (VLOOKUP/XLOOKUP) and orphaning athlete records.
  • Silent Formula Corruption and Lack of Audit Trails: A single accidental drag-and-drop or sorting error can shift rows relative to athlete names or overwrite a rolling average formula with a static number without generating any warning or historical log.
  • Concurrency Bottlenecks and Row Limits: High-frequency time-series streams (such as 10 Hz10\text{ Hz} GNSS\text{GNSS} or 1,000 Hz1{,}000\text{ Hz} dual force-plate traces) generate millions of rows per week, rapidly exceeding spreadsheet memory limits and causing file corruption when multiple practitioners attempt simultaneous edits.

Relational Database Design (SQL\text{SQL}) and Tidy Data Architecture

Primary Keys (PK\text{PK}), Foreign Keys (FK\text{FK}), and Star Schemas

A production Athlete Management System (AMS\text{AMS}) is built upon a Relational Database Management System (RDBMS\text{RDBMS}) queried via Structured Query Language (SQL\text{SQL}). Rather than duplicating athlete demographic details inside every single testing sheet, a relational database organizes information into interconnected tables structured around a Star Schema:

  • Dimension Tables (Context & Entities): Store relatively static descriptive attributes about entities. For example, the athletes table stores athlete_id, first_name, last_name, date_of_birth, and dominant_limb; the calendar_microcycle table stores session_date, season_phase, and days_to_match (MD−3\text{MD}-3, MD+1\text{MD}+1); and the protocols table defines protocol_id, hardware_vendor, and sampling_rate_hz.
  • Fact Tables (Longitudinal Event Streams): Store time-stamped quantitative measurements and testing events, such as gps_session_summary, cmj_trials, daily_wellness_log, and isokinetic_tests.
  • Primary Keys (PK\text{PK}): Every table possesses a Primary Key—a unique, non-null, immutable identifier for each individual row (e.g., athlete_id = "ATH_0089" in the athletes dimension table, or trial_uuid in the cmj_trials fact table). Because athlete_id never changes even if an athlete changes their jersey number, marries and changes their surname, or transfers between developmental and first-team rosters, longitudinal continuity is guaranteed.
  • Foreign Keys (FK\text{FK}): A column in a fact table that references the Primary Key of a dimension table (e.g., athlete_id inside gps_session_summary referencing athletes.athlete_id). The database engine enforces referential integrity, preventing a practitioner or script from inserting a workload record for an athlete_id that does not exist in the master athletes table. Furthermore, creating composite B-tree indexes on (athlete_id, session_date) enables the database engine to execute multi-season longitudinal joins in milliseconds rather than scanning millions of unindexed rows.

Tidy Data Principles (Third Normal Form / 3NF\text{3NF})

To ensure seamless querying, statistical modeling in R\text{R} or Python, and business intelligence (BI\text{BI}) visualization, database tables must adhere to Hadley Wickham's Tidy Data Principles (which mirror Codd's Third Normal Form [3NF\text{3NF}] in relational algebra):

  1. Every variable forms a single column (e.g., jump_height_cm, peak_propulsive_force_n, braking_impulse_ns).
  2. Every observation forms a single row (e.g., one specific athlete's single jump trial on a specific timestamp).
  3. Every type of observational unit forms a separate table (keeping daily GNSS\text{GNSS} session summaries in a separate table from multi-trial force-plate jumps rather than mashing disparate granularities into one wide sheet).
Structural FeatureWide Format (Anti-Pattern for Storage)Long / Tidy Format (Relational Best Practice)
Table LayoutDates or trial numbers placed across column headers (athlete_id | 2026_09_01 | 2026_09_02 | 2026_09_03)Dedicated columns for identifiers, time, and variables (athlete_id | session_date | metric_name | metric_value)
Schema ScalabilityRequires adding a new column to the table structure every single dayAppends new rows infinitely without ever altering the table schema
Time-Series FilteringExtremely difficult to filter date ranges or group by microcycle phaseNative SQL\text{SQL} filtering (WHERE session_date BETWEEN '2026-09-01' AND '2026-09-30')
Missing Data HandlingCreates sparse matrices filled with blank cells across hundreds of columnsStores only actual recorded events or explicit NULL audit rows

Automated Data Pipelines (ETL\text{ETL} / ELT\text{ELT}) and API Integration

Manual CSV downloading and uploading wastes practitioner hours and introduces human error. High-functioning sport science departments construct automated Extract, Transform, Load (ETL\text{ETL}) (or cloud-native Extract, Load, Transform [ELT\text{ELT}]) pipelines orchestrated via scheduled cloud scripts:

  1. Extract (Ingestion Layer — Webhooks vs. Scheduled Polling): Automated scripts communicate with third-party hardware clouds (e.g., GNSS\text{GNSS} tracking servers, force-plate cloud databases, nocturnal HRV\text{HRV} platforms) via RESTful APIs\text{APIs} using bearer token or OAuth 2.0\text{OAuth 2.0} authentication to retrieve structured JSON (JavaScript Object Notation) payloads. Ingestion can be triggered either via event-driven webhooks (where the force-plate cloud pushes a JSON payload to the team server the instant a jump trial is completed) or scheduled cron polling (e.g., querying the GNSS\text{GNSS} API every 15 minutes15\text{ minutes} while respecting API rate limits and pagination cursors).
  2. Transform (Staging & Validation Layer): Before any external data touches the production warehouse, it passes through an automated staging gate that executes:
    • Schema & Type Validation: Verifying that required fields exist and numeric metrics are floats/integers rather than corrupted text strings.
    • Unit Standardization to SI\text{SI} Units: Converting all incoming measurements into standardized International System of Units (SI\text{SI})—meters (m\text{m}), seconds (s\text{s}), kilograms (kg\text{kg}), Newtons (N\text{N}), and meters per second (m⋅s−1\text{m}\cdot\text{s}^{-1}). If a secondary weight room exports body mass in pounds (lb\text{lb}) while the primary lab exports in kilograms (kg\text{kg}), failing to convert in the staging layer will deflate relative peak power (W⋅kg−1\text{W}\cdot\text{kg}^{-1}) by a factor of 2.20462.2046, because the body-mass denominator is 2.20462.2046 times too large.
    • Timestamp Normalization (ISO 8601\text{ISO 8601}): Standardizing all dates and times to the ISO 8601\text{ISO 8601} international standard (YYYY-MM-DDTHH:MM:SSZ with explicit UTC\text{UTC} offset). This eliminates ambiguity between American (MM/DD/YYYY) and European (DD/MM/YYYY) date formats and accurately synchronizes biological sleep/recovery data when teams travel across multiple time zones.
    • Idempotency & Deduplication: Ensuring that re-running an API sync script for the same date updates existing records (UPSERT on unique trial IDs) rather than inserting duplicate rows.
  3. Load (Warehouse & Presentation Layer): Validated, cleaned records are committed via atomic SQL\text{SQL} transactions into the production relational database, automatically refreshing downstream analytical models and coach dashboards.

Data Dictionary Governance and the 3-2-1 Backup Strategy

The Canonical Data Dictionary

Every sport science database must be accompanied by a living, version-controlled Data Dictionary (metadata registry). For every variable in the AMS\text{AMS}, the Data Dictionary explicitly specifies:

  • Canonical Column Name & Display Label: e.g., hsr_distance_m ("High-Speed Running Distance >5.5 m⋅s−1> 5.5\text{ m}\cdot\text{s}^{-1}").
  • Physical Unit & Precision: e.g., meters (m\text{m}), rounded to 11 decimal place.
  • Exact Mathematical Formula & Threshold Definition: Documenting whether High-Speed Running is defined as an absolute threshold (>5.5 m⋅s−1> 5.5\text{ m}\cdot\text{s}^{-1} for a minimum dwell time of 0.5 s0.5\text{ s}) or an individualized threshold (>75%> 75\% of each athlete's peak velocity). If a vendor firmware update changes the dwell-time filter from 0.5 s0.5\text{ s} to 1.0 s1.0\text{ s}, the Data Dictionary logs that metadata version change so longitudinal comparisons are adjusted.
  • Missing-Data Representation (NULL vs. 0): A foundational rule of database governance is never encoding a missing observation as 0 or an arbitrary numeric placeholder such as -999. In a relational database, a missed test must be stored as a true database NULL (or NA in R\text{R}/NaN in Python). If a missed countermovement jump or missed GNSS\text{GNSS} session is recorded as 0, SQL AVG() and STDDEV() functions will treat 0 as a valid physiological performance of zero meters, catastrophically depressing the athlete's rolling 28-day chronic workload and distorting team ZZ-scores.

The 3-2-1 Institutional Backup Strategy

To ensure long-term Availability and disaster recovery against hardware failure, accidental table drops, or ransomware attacks, sport science infrastructure must implement the 3-2-1 Backup Rule:

  • 3 Copies of Data: Maintain at least three complete copies of all institutional data (1 primary live production database plus 2 independent backup copies).
  • 2 Different Storage Media: Store the copies across at least two distinct storage technologies or media types (e.g., cloud relational database storage plus local encrypted Network-Attached Storage [NAS\text{NAS}] or independent cloud object storage buckets).
  • 1 Off-Site & Immutable Copy: Keep at least one backup copy geographically off-site in an immutable (Write-Once-Read-Many / WORM\text{WORM}) or air-gapped vault that cannot be encrypted or deleted even if primary administrator credentials are compromised.
Loading diagram...
Automated Sport Science ETL Pipeline and Relational AMS Architecture
Test Your Knowledge

A sport scientist is migrating five seasons of athlete monitoring records from flat spreadsheets into a relational SQL database following Tidy Data (Third Normal Form) principles. How should the daily GNSS workload table be structured?

A

Create a separate spreadsheet tab for every individual athlete and manually copy-paste their weekly averages into a master summary tab every Sunday

B

Create one wide table where each athlete is a row and every calendar date of the season is added as a new column header (e.g., '2026_09_01_Dist', '2026_09_02_Dist')

C

Long format: one row per athlete-session with a primary key, foreign keys to the athlete and calendar tables, and one variable per column

D

Store athlete full names, home addresses, medical diagnoses, and 10 Hz raw GNSS coordinates together inside a single unindexed text column

Test Your Knowledge

An athlete participates in an outdoor team training session, but their GNSS tracking vest malfunctions and records no data. Until an imputed estimate can be calculated, how must the raw GNSS distance column for that athlete-session be stored in the relational database?

A

Enter '-999' as a numerical flag so the column retains a floating-point number in every database cell

B

Delete the athlete's entire profile from the master athletes dimension table for that training week

C

Store as a database NULL (or NA) with a sensor-failure status flag so SQL averages ignore the missing cell

D

Enter '0' so that SQL arithmetic functions do not return an error when summing weekly loads across sessions

Test Your Knowledge

A sport science team builds an automated ETL pipeline that pulls JSON payloads from three international training facilities via RESTful APIs. During the 'Transform' stage in the staging layer, which standardization protocol is essential before loading records into the production warehouse?

A

Averaging all individual jump trials into a single monthly team score and then deleting the raw trial records

B

Validate the schema, convert to SI units (m, s, kg, N), and normalize timestamps to ISO 8601 with UTC offsets

C

Replacing the unique athlete_id primary keys with athlete jersey numbers to make the tables easier to read

D

Converting all numeric variables into text strings and stripping the time-zone offsets from every timestamp

Test Your Knowledge

To protect thirty years of longitudinal testing data against ransomware and hardware failure, an organization implements the 3-2-1 backup strategy. What does this architecture require?

A

At least 3 copies of the data on 2 different storage media, with at least 1 off-site copy that is immutable or air-gapped

B

Compressing 3 database tables into 2 CSV files and emailing them to 1 coaching staff distribution list

C

Backing up the database 3 times per day onto 2 USB flash drives kept inside 1 locked desk drawer at the training facility

D

Retaining 3 years of data across 2 spreadsheet tabs managed by 1 database administrator

Sections you finish are checked off in the contents.