achtbaantrein + stoelen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Veur Heur

Veur Heur

11/10/2022 14:41:25
Quote Anchor link
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?
 
PHP hulp

PHP hulp

03/12/2024 20:24:26
 
Jan Koehoorn

Jan Koehoorn

11/10/2022 14:56:51
Quote Anchor link
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.
 
Veur Heur

Veur Heur

11/10/2022 15:01:23
Quote Anchor link
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.
 
Jan Koehoorn

Jan Koehoorn

11/10/2022 15:06:57
Quote Anchor link
Hoe de stoelen in een trein zijn gegroepeerd zou ik ook in de tabel stoelen opslaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
stoel_id
trein_id
rij_nr
stoel_nr
...


De opstelling van een bepaalde trein kun je dan opvragen met

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT rij_nr, stoel_nr
FROM stoelen
WHERE trein_id = ?
ORDER BY rij_nr ASC, stoel_nr ASC
Gewijzigd op 11/10/2022 15:07:30 door Jan Koehoorn
 
Veur Heur

Veur Heur

11/10/2022 15:10:30
Quote Anchor link
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
 
Jan Koehoorn

Jan Koehoorn

12/10/2022 11:09:30
Quote Anchor link
Ik ben even benieuwd: heb je een voorbeeld van een query waarmee je zo'n veld uitleest en weer opsplitst in de afzonderlijke waarden?
 
- Ariën  -
Beheerder

- Ariën -

12/10/2022 11:13:42
Quote Anchor link
Los van het feit dat dit niet genormaliseerd is, zou een notatie in JSON al beter zijn.
 
Veur Heur

Veur Heur

12/10/2022 11:14:53
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

12/10/2022 11:56:08
Quote Anchor link
In JSON zou dat inderdaad praktischer zijn .
 
Tony Adams

Tony Adams

17/06/2023 09:58:48
Quote Anchor link
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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.