You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Complete schema reference for NTSB Aviation Accident Database. Based on official NTSB documentation (ref_docs/eadmspub.pdf) and database release notes.
The NTSB Aviation Accident Database uses a relational structure with ev_id (Event ID) as the primary linking key across most tables. The database follows a star schema pattern with events as the fact table and dimension tables containing related details.
Database Evolution
Release 3.0 (March 1, 2024):
Added cm_inPC field to Findings table (TRUE/FALSE for probable cause citation)
Deprecated cause_factor field (retained for pre-October 2020 cases)
Legacy Schema: Pre-2008 databases use older schema documented in ref_docs/eadmspub_legacy.pdf
Primary Tables
Table
Primary Key
Foreign Keys
Row Type
Description
events
ev_id
-
One per accident
Master accident/incident records
aircraft
Aircraft_Key
ev_id
Many per accident
Aircraft involved in events
Flight_Crew
crew_no
ev_id, Aircraft_Key
Many per aircraft
Crew member details
injury
-
ev_id, Aircraft_Key
Many per event
Injury and fatality records
Findings
-
ev_id, Aircraft_Key
Many per event
Investigation findings
Occurrences
-
ev_id, Aircraft_Key
Many per event
Occurrence classifications
seq_of_events
-
ev_id, Aircraft_Key
Many per event
Event sequence timeline
engines
eng_no
ev_id, Aircraft_Key
Many per aircraft
Engine specifications
narratives
-
ev_id
One per event
Narrative accident descriptions
NTSB_Admin
ev_id
-
One per event
Administrative metadata
events - Master Accident Records
Core table containing one record per aviation accident or incident.
Key Fields
Field
Type
Description
Example
ev_id
String(20)
Primary Key - Unique event identifier
"20220101001234"
ev_date
Date
Date of accident occurrence
"2022-01-15"
ev_time
Time
Local time of accident
"14:30"
ev_year
Integer
Year extracted from ev_date
2022
ev_month
Integer
Month (1-12)
1
ev_dow
String
Day of week
"Saturday"
Location Fields
Field
Type
Description
Notes
ev_city
String(50)
City name
May be NULL for remote locations
ev_state
String(2)
US state abbreviation
"CA", "TX", etc.
ev_country
String(3)
Country code
"USA", "CAN", "MEX"
ev_site_zipcode
String(10)
ZIP code of accident site
latitude
String(10)
Latitude in DMS format
"043594N"
longitude
String(10)
Longitude in DMS format
"0883325W"
dec_latitude
Decimal
Latitude in decimal degrees
43.98
dec_longitude
Decimal
Longitude in decimal degrees
-88.55
Note: Use dec_latitude and dec_longitude for geospatial analysis, not the DMS format fields.
Classification Fields
Field
Type
Description
Values
ev_type
String(10)
Accident/Incident type
"ACC" (Accident), "INC" (Incident)
ev_highest_injury
String(10)
Highest injury severity
"FATL", "SERS", "MINR", "NONE"
ev_nr_apt_id
String(10)
Nearest airport identifier
ICAO/FAA codes
ev_nr_apt_loc
String(50)
Nearest airport location
City/State
ev_nr_apt_dist
Decimal
Distance to nearest airport (miles)
Injury Totals
Field
Type
Description
inj_tot_f
Integer
Total fatalities
inj_tot_s
Integer
Total serious injuries
inj_tot_m
Integer
Total minor injuries
inj_tot_n
Integer
Total uninjured
Note: NULL values indicate unreported data. Use COALESCE(inj_tot_f, 0) in queries.
Weather Conditions
Field
Type
Description
Values
wx_cond_basic
String(10)
Basic weather condition
"VMC", "IMC", "UNK"
wx_temp
Integer
Temperature (Fahrenheit)
wx_wind_dir
Integer
Wind direction (degrees)
0-360
wx_wind_speed
Integer
Wind speed (knots)
wx_vis
Decimal
Visibility (statute miles)
Flight Information
Field
Type
Description
flight_plan_filed
String(10)
Flight plan status
flight_activity
String(50)
Type of flight activity
flight_phase
String(50)
Phase of flight
Investigation Details
Field
Type
Description
ntsb_no
String(20)
NTSB accident number
report_status
String(10)
Report status
probable_cause
Text
Probable cause statement
aircraft - Aircraft Details
Contains information about each aircraft involved in an accident (one accident may involve multiple aircraft).
-- Events with aircraft detailsSELECT e.*, a.*FROM events e
JOIN aircraft a ONe.ev_id=a.ev_id;
-- Events with probable cause findingsSELECTe.ev_id, e.ev_date, f.finding_descriptionFROM events e
JOIN Findings f ONe.ev_id=f.ev_idWHEREf.cm_inPC= TRUE; -- Release 3.0+-- Events with crew informationSELECT e.*, fc.pilot_cert, fc.pilot_tot_timeFROM events e
JOIN aircraft a ONe.ev_id=a.ev_idJOIN Flight_Crew fc ONa.Aircraft_Key=fc.Aircraft_KeyWHEREfc.crew_category='PLT';
Data Types Reference
String Conventions
Fixed-length codes: Right-padded with spaces
Variable text: May contain special characters, requires sanitization
NULL handling: Empty strings ("") vs NULL - both possible
Numeric Conventions
Integers: Use COALESCE for NULL values in aggregations
Decimals: Precision varies by field (2-6 decimal places)
Negative values: Some fields (temperatures, longitudes) can be negative
Date/Time Conventions
Dates: ISO format (YYYY-MM-DD) in modern exports
Times: 24-hour format, local time at accident location
Timezone: Not stored; assume local time
Boolean Conventions (Release 3.0+)
TRUE/FALSE: Used in cm_inPC field
Legacy: Older fields use "Y"/"N" or "1"/"0"
Data Quality Notes
Common Issues
Missing Coordinates: ~20% of pre-1990 records lack dec_latitude/dec_longitude
Incomplete Narratives: Preliminary reports have abbreviated narratives
NULL Injury Counts: Some records missing injury data entirely
Date Format Inconsistencies: Legacy databases use different date formats
Code Deprecation: Older coding systems evolved over 60 years
Validation Techniques
Geospatial: Check dec_latitude range [-90, 90], dec_longitude range [-180, 180]
Date: Use TRY_CAST for robust date parsing, validate with BETWEEN checks
Codes: Cross-reference against AVIATION_CODING_LEXICON.md
Regex: ev_date ~ '^\d{4}-\d{2}-\d{2}$' for date format validation