Esports tournament and bracket database schema

How a tournament platform models competition: single and double elimination, round robin and Swiss stages, teams with roster locks, a bracket stored as a node tree, best-of series with per-map results, venues and prize distribution.

Esports Tournament ER diagram

Esports tournament and bracket database schema n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 11 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 tournaments idBIGINT slugVARCHAR nameVARCHAR game_titleVARCHAR formatVARCHAR stateVARCHAR registration_open…DATETIME registration_clos…DATETIME roster_lock_atDATETIME starts_atDATETIME ends_atDATETIME max_teamsSMALLINT prize_pool_minorBIGINT currency_codeCHAR organiser_nameVARCHAR created_atDATETIME stages idBIGINT tournament_idBIGINT stage_indexTINYINT nameVARCHAR formatVARCHAR group_countTINYINT swiss_roundsTINYINT default_best_ofTINYINT advancing_countTINYINT starts_atDATETIME ends_atDATETIME venues idBIGINT nameVARCHAR cityVARCHAR country_codeCHAR timezoneVARCHAR seating_capacityINTEGER is_onlineBOOLEAN teams idBIGINT slugVARCHAR nameVARCHAR tagVARCHAR region_codeVARCHAR country_codeCHAR founded_onDATE is_activeBOOLEAN players idBIGINT gamertagVARCHAR full_nameVARCHAR country_codeCHAR date_of_birthDATE is_activeBOOLEAN tournament_entries idBIGINT tournament_idBIGINT team_idBIGINT seedTINYINT group_labelVARCHAR statusVARCHAR registered_atDATETIME roster_locked_atDATETIME roster_slots idBIGINT entry_idBIGINT player_idBIGINT roleVARCHAR is_starterBOOLEAN added_atDATETIME removed_atDATETIME substitutions idBIGINT entry_idBIGINT match_idBIGINT player_out_idBIGINT player_in_idBIGINT reasonVARCHAR stateVARCHAR requested_atDATETIME decided_atDATETIME decided_byVARCHAR bracket_nodes idBIGINT stage_idBIGINT round_indexTINYINT position_in_roundSMALLINT labelVARCHAR bracket_sideVARCHAR best_ofTINYINT slot_a_sourceVARCHAR slot_a_node_idBIGINT slot_a_entry_idBIGINT slot_b_sourceVARCHAR slot_b_node_idBIGINT slot_b_entry_idBIGINT matches idBIGINT tournament_idBIGINT stage_idBIGINT bracket_node_idBIGINT venue_idBIGINT entry_a_idBIGINT entry_b_idBIGINT best_ofTINYINT stateVARCHAR maps_won_aTINYINT maps_won_bTINYINT winner_entry_idBIGINT scheduled_atDATETIME started_atDATETIME ended_atDATETIME stream_urlVARCHAR match_maps idBIGINT match_idBIGINT map_indexTINYINT map_nameVARCHAR picked_by_entry_idBIGINT score_aINTEGER score_bINTEGER winner_entry_idBIGINT duration_secondsINTEGER statsJSON prize_distributions idBIGINT tournament_idBIGINT placement_fromTINYINT placement_toTINYINT share_percentDECIMAL amount_minorBIGINT placements idBIGINT tournament_idBIGINT entry_idBIGINT final_rankTINYINT prize_amount_minorBIGINT circuit_pointsINTEGER paid_atDATETIME

Related database schemas