Projecten
2014

Voetbal­speler en beheer­volgsysteem

Centrale opslag en beheer van gegevens van voetbalclubs en spelers.

SilverstripePHPjQueryjQuery UI

Voetbal heeft op het veld duidelijke regels, maar daaromheen — in clubs, leagues, transfers, statistieken en jeugdopleidingen — leeft een wirwar aan data die zelden uit één bron komt. Dit project ging over het centraal opslaan en beheren van gegevens van verschillende voetbalclubs en spelers, zodat die wirwar voor de gebruikers van het systeem juist overzicht ging opleveren.

Wat het project bijzonder maakte was niet zozeer de schermen of de zichtbare functionaliteit, maar het databasemodel daaronder. Een goed schema voor zoiets als een voetbalecosysteem is een delicate balans: te strak en je kan toekomstige uitbreidingen niet aan, te losjes en je verliest controle over kwaliteit en consistentie.

Ik heb veel geleerd over het ontwerpen van zo'n schema. Welke entiteiten zijn écht apart (club, team, speler, seizoen, competitie) en welke zijn afgeleid? Welke relaties moeten in tabellen worden vastgelegd en welke kunnen via afspraken in de applicatielaag? Wat zijn de natuurlijke unieke sleutels en wat moet je bewust vermijden om problemen later te voorkomen?

Een terugkerende uitdaging was het meebewegen van het schema met de werkelijkheid. Spelers wisselen van club, clubs herstructureren, competities veranderen van naam of opzet. Een schema dat alleen de huidige situatie modelleert is na één seizoen al niet meer correct. We hebben daarom expliciet historie ingebouwd, zodat een vraag als 'wie speelde op 1 maart in welk team' correct beantwoord kan worden, ook als die situatie inmiddels veranderd is.

Aan de applicatiekant werkten we met Silverstripe en PHP, met jQuery en jQuery UI voor de interactieve delen. Dat is geen sexy stack, maar wel een efficiënte voor wat dit project nodig had: snelle CRUD-schermen voor beheer en lichte, leesbare publieke weergaven voor wie alleen wil zoeken en bekijken.

Wat ik vooral heb meegenomen uit dit project is het besef dat 'goed databasewerk' onzichtbaar is als het lukt en pijnlijk zichtbaar als het mislukt. Tijd investeren in een doordacht schema verdient zich altijd terug, vooral in projecten waarin data veel langer leeft dan de oorspronkelijke functionaliteit eromheen.

Meer werk

Andere projecten