Event ticketing and seat reservation schema

A ticketing schema built around expiring checkout holds: venues with sections and seats, events, general-admission capacity pools, per-seat inventory, orders, tickets with rotating QR identifiers, transfers, door scans and partial refunds.

Event Ticketing ER diagram

Event ticketing and seat reservation schema n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 venues idBIGINT nameVARCHAR slugVARCHAR address_line1VARCHAR cityVARCHAR country_codeCHAR timezoneVARCHAR total_capacityINTEGER is_activeBOOLEAN sections idBIGINT venue_idBIGINT codeVARCHAR nameVARCHAR kindVARCHAR levelVARCHAR capacityINTEGER display_orderSMALLINT is_accessibleBOOLEAN seats idBIGINT section_idBIGINT row_labelVARCHAR seat_numberVARCHAR seat_kindVARCHAR map_xNUMERIC map_yNUMERIC is_activeBOOLEAN events idBIGINT venue_idBIGINT titleVARCHAR slugVARCHAR event_typeVARCHAR doors_atTIMESTAMPTZ starts_atTIMESTAMPTZ ends_atTIMESTAMPTZ on_sale_atTIMESTAMPTZ off_sale_atTIMESTAMPTZ statusVARCHAR currency_codeCHAR max_tickets_per_o…SMALLINT hold_ttl_secondsINTEGER created_atTIMESTAMPTZ event_sections idBIGINT event_idBIGINT section_idBIGINT price_minorINTEGER service_fee_minorINTEGER ga_capacityINTEGER ga_soldINTEGER ga_heldINTEGER is_on_saleBOOLEAN seat_inventory event_idBIGINT seat_idBIGINT statusVARCHAR hold_idBIGINT held_untilTIMESTAMPTZ order_idBIGINT price_minorINTEGER updated_atTIMESTAMPTZ customers idBIGINT emailVARCHAR full_nameVARCHAR phoneVARCHAR created_atTIMESTAMPTZ holds idBIGINT event_idBIGINT section_idBIGINT quantitySMALLINT session_tokenVARCHAR customer_idBIGINT statusVARCHAR created_atTIMESTAMPTZ expires_atTIMESTAMPTZ released_atTIMESTAMPTZ order_idBIGINT orders idBIGINT order_numberVARCHAR customer_idBIGINT event_idBIGINT statusVARCHAR subtotal_minorINTEGER fees_minorINTEGER taxes_minorINTEGER total_minorINTEGER currency_codeCHAR payment_referenceVARCHAR delivery_methodVARCHAR placed_atTIMESTAMPTZ paid_atTIMESTAMPTZ cancelled_atTIMESTAMPTZ tickets idBIGINT order_idBIGINT event_idBIGINT section_idBIGINT seat_idBIGINT barcodeVARCHAR qr_tokenUUID holder_nameVARCHAR holder_emailVARCHAR price_minorINTEGER fees_minorINTEGER currency_codeCHAR statusVARCHAR issued_atTIMESTAMPTZ voided_atTIMESTAMPTZ ticket_transfers idBIGINT ticket_idBIGINT from_customer_idBIGINT to_emailVARCHAR to_customer_idBIGINT transfer_tokenUUID statusVARCHAR created_atTIMESTAMPTZ expires_atTIMESTAMPTZ accepted_atTIMESTAMPTZ scans idBIGINT ticket_idBIGINT event_idBIGINT scanned_atTIMESTAMPTZ resultVARCHAR gateVARCHAR device_idVARCHAR operatorVARCHAR synced_atTIMESTAMPTZ refunds idBIGINT order_idBIGINT ticket_idBIGINT reasonVARCHAR amount_minorINTEGER includes_feesBOOLEAN currency_codeCHAR statusVARCHAR provider_referenceVARCHAR created_atTIMESTAMPTZ

Related database schemas