achtbaantrein + stoelen
Ik heb weer een nutteloze functie bedacht voor mijn achtbanenlogsysteem (https://www.phphulp.nl/php/forum/topic/database-model/102835/) en wel: "in/op welke stoelen hebben we de achtbaan bereden". Niks spannends, ik heb hiervoor een extra tabel gemaakt met de volgende kolommen:
- trein id
- achtbaan id
- aantal rijen
- aantal stoelen per rij
- stoelen bereden
In "stoelen bereden" komt een komma gescheiden waarde, dat lijkt me voldoende.
Opgelost zou je zeggen, maar nu zijn er ook achtbanen met een afwijkende treinopstelling, bijv. Vliegende Hollander in de Efteling. Waar de meeste treinen bestaan uit hetzelfde aantal stoelen per rij, heeft deze trein 2 rijen van 3 en 2 van 4 stoelen (3,4,3,4).
Of het de moeite is weet ik niet, ik heb namelijk nog niet onderzocht of dit vaker voor gaat komen, maar hoe zouden jullie dit aanvliegen? Een tweede tabel met afwijkende treinen? Een andere indeling van de bestaande tabel?
- trein id
- achtbaan id
- aantal rijen
- aantal stoelen per rij
- stoelen bereden
In "stoelen bereden" komt een komma gescheiden waarde, dat lijkt me voldoende.
Opgelost zou je zeggen, maar nu zijn er ook achtbanen met een afwijkende treinopstelling, bijv. Vliegende Hollander in de Efteling. Waar de meeste treinen bestaan uit hetzelfde aantal stoelen per rij, heeft deze trein 2 rijen van 3 en 2 van 4 stoelen (3,4,3,4).
Of het de moeite is weet ik niet, ik heb namelijk nog niet onderzocht of dit vaker voor gaat komen, maar hoe zouden jullie dit aanvliegen? Een tweede tabel met afwijkende treinen? Een andere indeling van de bestaande tabel?
Ik zou geen komma gescheiden waarde opslaan in je db. Je maakt het daarmee heel moeilijk om statistiek op een tabel te plegen (aantal keer dat 1 specifieke stoel bereden is bijv)
Het lijkt me logischer om tabellen te maken voor bijv treinen, stoelen, personen en ritten. Een rit is dan een combi van een trein_id, stoel_id, persoon_id en bijv een datetime of timestamp. Als je dan bijvoorbeeld wilt weten hoe vaak stoel x in trein y op dag z is gebruikt, is dat een vrij simpele query.
Het lijkt me logischer om tabellen te maken voor bijv treinen, stoelen, personen en ritten. Een rit is dan een combi van een trein_id, stoel_id, persoon_id en bijv een datetime of timestamp. Als je dan bijvoorbeeld wilt weten hoe vaak stoel x in trein y op dag z is gebruikt, is dat een vrij simpele query.
Wilde er nog bij vermelden dat ik niet bij wil gaan houden hoeveel keer welke stoel maar of min of meer de hele trein is afgevinkt. Verder houd ik bij het aantal ritten per dag, niet zo zeer op welke stoel een rit heeft plaatsgevonden, dat zou uiteraard nog kunnen, maar gaat wel heel ver. Is ook onmogelijk terug te halen.
Voor nu ben ik dus zoekende naar ideeën voor de afwijkende treinen.
Voor nu ben ik dus zoekende naar ideeën voor de afwijkende treinen.
Hoe de stoelen in een trein zijn gegroepeerd zou ik ook in de tabel stoelen opslaan:
De opstelling van een bepaalde trein kun je dan opvragen met
De opstelling van een bepaalde trein kun je dan opvragen met
Code (php)
1
2
3
4
2
3
4
SELECT rij_nr, stoel_nr
FROM stoelen
WHERE trein_id = ?
ORDER BY rij_nr ASC, stoel_nr ASC
FROM stoelen
WHERE trein_id = ?
ORDER BY rij_nr ASC, stoel_nr ASC
Gewijzigd op 11/10/2022 15:07:30 door Jan Koehoorn
Daarmee heb je alleen niet de indeling van de trein opgeslagen, toch? Nu sla ik op:
Python: 2|14|1,14
Voor DVH zou dat moeten zijn (3,4,3,4)|6
Python: 2|14|1,14
Voor DVH zou dat moeten zijn (3,4,3,4)|6
Ik ben even benieuwd: heb je een voorbeeld van een query waarmee je zo'n veld uitleest en weer opsplitst in de afzonderlijke waarden?
Los van het feit dat dit niet genormaliseerd is, zou een notatie in JSON al beter zijn.
De waarde uit de kolom "bereden" splits ik met een explode. Vervolgens heb ik de rijen en stoelen, die gegevens loop ik om een table te maken, ieder volgnummer die dan voorkomt in bereden kleur ik groen.
In JSON zou dat inderdaad praktischer zijn .
Ik stel voor om een aparte tabel toe te voegen, specifiek voor het definiëren van de opstelling van elke achtbaan. Deze tabel kan kolommen bevatten zoals achtbaan-ID, rijnummer, aantal stoelen per rij en andere relevante informatie.
*****
*****
Edit:
Dan moet je niet spammen!
Gewijzigd op 17/06/2023 12:36:17 door - Ariën -




