Archief - MYSQL: Bouw databank 2nd opinion

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KlAzOiD

Legacy Member
Graag had ik mijn databank even voorgelegd omdat ik momenteel nog één iets niet direct kan verwerken adhv de huidige opbouw.
Hierbij heb ik zelf twee systemen in gedachten die het mogelijk zouden moeten maken om dit op te lossen. Natuurlijk is een ander voorstel ook altijd welkom.

De situatie is vereenvoudigt als volgt:

tblspelers
tblteams
tblspelerstats
tblmatchstats
tblcompetitie

In wezen is het de bedoeling om stats bij te houden van spelers en teams en dit in meerdere competities over meerdere jaren heen.

In wezen zit ik met dit probleem:

Wanneer ik een competitie toevoeg uit het verleden, moet ik een manier ontwerpen zodat ik uit de databank de spelers kan halen die toen voor dat team speelden.

In tblspelers zit er een teamID maar dit stelt enkel het huidige team voor.
Stel dat ik de stats wl invoeren uit het seizoen 2003-2004 weet moet ik dus eerst een systeem ontwerpen om de ploeg van toen samen te stellen zodat wanneer je voor het eerst naar de ploegpagina gaat, je de correcte spelers ziet.

Ik had eerst gedacht om dit te kunnen doen adhv de spelerstats omdat een speler die stat maakt bij een team (teamID) in die bepaalde competitie (compID). Probleem zit hem natuurlijk wanneer een speler net toegevoegd is en nog geen matchen gespeeld heeft.

Ik moet dus een manier maken om de oude spelerskernen opnieuw samen te stellen.

De twee mogelijkheden die ik in gedachten had:

1: een systeem maken die de oude ploegen opnieuw samenstelt waarbij er een leeg record aangemaakt wordt in tblstats en waarbij één veld een speciale waarde heeft. Bv: enum -> s = stat, p=player.
Zo kan ik een onderscheid maken tussen wat stat en player entry is en telt die entry niet mee als zijnde een extra match. Voordeel: geen extra tabel.

2: ik maak een nieuwe tabel (tblplayerhistory), waarin het volgende staat:
playerID, compID, teamID (voordeel is dat het overzichtelijker is).

Welk systeem zie jij als het meest bruikbare of zie je nog andere betere mogelijkheden? Alle hulp is welkom.

Radiance

Legacy Member
De meest correcte manier lijkt mij om het veld teamID uit de spelers tabel te halen en een extra tabel spelersInTeam te maken. Moest het principe van een kopeltabel je niet bekend zijn. Het bevat enkel een spelerID en teamID. Je kan dat eventueel aanvullen met een veld jaartal zodat je voor elk jaar dat een speler bij een team zat een record kan aanmaken in uw koppeltabel.

Eventueel kan je ook argumenteren dat het veld jaartal bij de tabel teams hoort ipv in de koppeltabel en dus voor elk jaar dat een team bestond een nieuw record in de teams tabel maken, maar mij lijkt het net iets minder logisch.

maxdevis

Legacy Member
ik denk ook dat dat het beste is.
maar dan moet je misschien hetzelfde doen voor team zodat je weet in welk jaartal welk team in welke competitie speelde?

KlAzOiD

Legacy Member
Bedankt alvast voor de hulp.

Spelerid en teamid is alvast niet voldoende om te weten tijdens welk jaar dat was zoals je aanhaalde, daarom dus dat in mijn voorstel 2 compid er ook aan toegevoegd is.

Stel dat ik in een latere fase bv. ook beker of europees toevoeg, zou dit problemen geven.

Daarom dus inderdaad best:
teamID - compID (waar in tblcomp een jaar vermeld is)
spelerID - teamID - jaar

Zo kan ik perfect achterhalen in welke competities een team speelt ook wanneer dit meerdere per jaar zijn. Via het teamID en het jaar kan ik dan ook de verschillende competities achterhalen waar de speler voor uitkwam.

Denk dat ik dan toch nog iets ga moeten toevoegen aan mijn tblcomp om aan te duiden als het gaat om seizoen - beker - europees. Zodat ik later mooi een onderscheid kan maken tussen deze competities en de resultaten er van tussenuit kan filteren.

killgore

Legacy Member
als je meer dan 1 link tussen 2 tables nodig hebt ben je best af met een cross table (voor die history dus).

(dit na cursief lezen, zal straks uw post eens vollediger lezen :p).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan