Lectori Tweakeri salutem,
Tijdens het ontwikkelen van een systeem voor een (willekeurige) sportvereniging liep ik tegen het volgende probleem. De taal (php) en dbms (mysql) maken volgens mij niets uit voor de oplossing. Het gaat mij meer om het waarom en het duwtje in de goede richting.
De database bevat tot nu toe zo'n 30 tabellen (leden, teams, wedstrijden, scheidsrechters, coaches, spelers, spelerseigenschappen, enz.)
Om aan te geven hoe ik het op dit moment doe. Men kan per lid instellen 'dit is een speler'. Op dat moment wordt er een record toegevoegd aan de tabellen `spelers` (id, lid_id, ingedeeld) en `spelerseigenschappen` (id, lid_id, team_id, positie, kledingmaat, enz.). Op het moment dat een speler wordt ingedeeld in een team, worden de `spelerseigenschappen` aangepast met het juiste team. Ik heb voor deze manier gekozen, zodat een lid wel de spelerstatus kan verliezen, maar niet z'n eigenschappen. Kan waarschijnlijk beter/logischer, door de status ook op te nemen in de tabel `spelerseigenschappen`, maar dat even terzijde.
Aan het einde van het speelseizoen (of het begin van het nieuwe seizoen) zullen de teams aangepast moeten worden. Nieuwe spelers en teams komen erbij en de teamindeling verandert (spelers 'promoveren' bijvoorbeeld). Op dit moment komt het probleem; van oude wedstrijden moet je ook kunnen zien welk team er heeft gespeeld en wie er op dat moment in dat team zaten. Je kan dus niet zomaar de teams in de database aanpassen, want dan krijgen oude wedstrijden ook die nieuwe eigenschappen. Nu kunnen spelers niet toegevoegd worden in een team, als ze al zijn ingedeeld in een ander team. Hoe kan ik dit probleem het best aanpakken? Nieuwe teams maken en de oude gegevens op een bepaalde manier wegschrijven? M.a.w. voor het huidige seizoen alles op de huidige manier bijhouden en zodra een seizoen is afgelopen alle gegevens van dat seizoen exporteren (xml?) of omzetten naar een archief (mysql) database?
Tijdens het ontwikkelen van een systeem voor een (willekeurige) sportvereniging liep ik tegen het volgende probleem. De taal (php) en dbms (mysql) maken volgens mij niets uit voor de oplossing. Het gaat mij meer om het waarom en het duwtje in de goede richting.
De database bevat tot nu toe zo'n 30 tabellen (leden, teams, wedstrijden, scheidsrechters, coaches, spelers, spelerseigenschappen, enz.)
Om aan te geven hoe ik het op dit moment doe. Men kan per lid instellen 'dit is een speler'. Op dat moment wordt er een record toegevoegd aan de tabellen `spelers` (id, lid_id, ingedeeld) en `spelerseigenschappen` (id, lid_id, team_id, positie, kledingmaat, enz.). Op het moment dat een speler wordt ingedeeld in een team, worden de `spelerseigenschappen` aangepast met het juiste team. Ik heb voor deze manier gekozen, zodat een lid wel de spelerstatus kan verliezen, maar niet z'n eigenschappen. Kan waarschijnlijk beter/logischer, door de status ook op te nemen in de tabel `spelerseigenschappen`, maar dat even terzijde.
Aan het einde van het speelseizoen (of het begin van het nieuwe seizoen) zullen de teams aangepast moeten worden. Nieuwe spelers en teams komen erbij en de teamindeling verandert (spelers 'promoveren' bijvoorbeeld). Op dit moment komt het probleem; van oude wedstrijden moet je ook kunnen zien welk team er heeft gespeeld en wie er op dat moment in dat team zaten. Je kan dus niet zomaar de teams in de database aanpassen, want dan krijgen oude wedstrijden ook die nieuwe eigenschappen. Nu kunnen spelers niet toegevoegd worden in een team, als ze al zijn ingedeeld in een ander team. Hoe kan ik dit probleem het best aanpakken? Nieuwe teams maken en de oude gegevens op een bepaalde manier wegschrijven? M.a.w. voor het huidige seizoen alles op de huidige manier bijhouden en zodra een seizoen is afgelopen alle gegevens van dat seizoen exporteren (xml?) of omzetten naar een archief (mysql) database?