Database voor fantasy game
Ik heb het idee opgevat om een soort fantasy sport spel te maken. Ik weet alleen niet goed hoe ik dat het beste in de database kan invullen.
Het idee is:
- Budget van 100 punten
- Door punten te scoren kan je je budget verhogen
- Seizoen in periodes, met wisselmomenten
- Bij een wissel verlies je een percentage (zeg 25%) van de waarde van de speler. Als je iemand van 20 punten verkoopt krijg je dus 15 punten terug.
Ik heb wat vragen hoe ik dit het beste kan vormgeven in de database, en hoe soortgelijke spellen (Scorito bv) dat doen. Zou ik elke 'beweging' moeten vastleggen, met een nulletje of eentje voor inactieve/actieve, of gewoon verwijderen als iemand een speler verkoopt en alleen de huidige teams bewaren?
Ik moet wel sowieso de definitieve teams voor elke periode bewaren, zou ik dat in een aparte tabel moeten doen?
Zou ik voor de tussenstand de punten telkens moeten optellen, of het al voor de tijd laten optellen en opslaan in de database?
Hetzelfde eigenlijk voor het budget. Het budget is dus het beginbudget + gescoorde punten - inkomende transfers + 75% van de uitgaande transfers. Is het raadzaam om dat telkens uit te rekenen, of op te slaan?
Ik hoop dat jullie me wat kunnen helpen met jullie inzichten.
Speerpunten:
- geen dubbele data opslaan.
- geen meerdere waarden in één veld dmv een array
- gebruik constraints (beperkingen)
Wij kunnen ons onmogelijk inleven in jouw plannen met een dergelijk korte omschrijving of zonder kennis over het inhoudelijke deel van het spel.
Slechts in enkele gevallen ga je gegevens van de ene tabel naar de andere verplaatsen. Gaat een beetje ver om daar nu een heel verhaal over te schrijven. Onthoud vooral dat je meestal genoeg hebt aan het aanpassen van één veld per record om de status te wijzigen.
Ik denk dat je in ieder geval een inlogsysteem moet hebben en dus een tabel users. Ook denk ik dat een user geen speler is omdat spelers door users onderling aan elkaar verkocht mogen worden. Je zult dus een spelers tabel krijgen met een kolom owner_id die aangeeft welke user eigenaar is van de speler. Bij verkoop hoef je slechts die owner_id aan te passen. Punten tellen hangt af van het volgende:
Moet de totstandkoming van de punten later nog in te zien zijn? Dan sla je records onder elkaar op in een tabel en bereken je de stand keer op keer opnieuw uit. Hoeft dat niet dan kun je de actuele score telkens overschrijven.
Neem ruim de tijd om een overzicht te creëren van je tabellen met hun onderlinge relaties en vraag je telkens af wat het betekent voor die relaties als je iets aanpast in een tabel.