08 — Venues & Maps
What it is: Venues are mostly cosmetic — they exist to hold maps. A map attaches to a venue, and an event links to a venue so the right map loads.
Tables
tbl_venues
Minimal entity. Only venueName is required — all address fields are optional.
| Field | Notes |
|---|---|
venueId | PK |
venueName | required |
status | draft, published, archived |
| address fields | all optional |
Why venues exist: MSG example — Knicks and Rangers share one property and one team schema. Create a Knicks venue and a Rangers venue, attach a different map to each, then link events to the right venue to load the right map. A venue can have multiple maps.
tbl_venue_maps
| Field | Notes |
|---|---|
mapSource | 3ddv, iomedia, or static |
threedDvMapId | 3DDV-specific; only set when mapSource = '3ddv' |
threedDvVenueId | 3DDV-specific |
threedDvMapType | 2d or 3d; 3DDV-specific |
Images for iomedia and static maps live in tbl_asset_entity_mapping (not on this table).
tbl_venue_map_mapping
Junction: venue ↔ map (many-to-many). Same map can be reused across multiple venues.
Three map types
| Type | Interactive? | 3D views? | Notes |
|---|---|---|---|
| static | No (image only) | No | Used by Live Nation (venues change per tour) |
| 3ddv (3D Digital Venue) | Yes — click a section | Yes — one per section | External vendor; Attend stores their IDs + credentials and calls their API. Suites must be mapped manually (no matching section name). |
| iomedia | No | Yes — internal/external/front/back | Richer views than 3DDV but needs a static image for the map itself |
Key rules
- Suites must be mapped by hand for map vendors — a suite isn't a real section, so the vendor has no matching name for it
- 3DDV maps don't use the asset system (they're interactive); iomedia and static maps do
mapSourcecan be null — set when the map source is determined