Goedemorgen,

Het EK is nog niet voorbij, en ik hou me alweer bezig met het WK (je kan nooit te vroeg beginnen). Ik was bezig om een WK poule te maken, en daarvoor wou ik eerst een goed speelschema opzetten. Hiervoor heb ik een databaseontwerp gemaakt, en vraag me af of dit een goede manier is.

PK = primary key
FK = foreign key

WK DATABASE

	- Team
		- team_id (PK)
		- naam_full
		- naam_short
		- website
		
	- Spelers
		- speler_id (PK)
		- voornaam
		- achternaam
		- geboortedatum
		- team_id (FK)
	
	- Doelpunten
		- goal_id (PK)
		- wedstrijd_id (FK)
		- speler_id (FK)
		- team_id (FK)
		- minuut	
		
	- Wedstrijden
		- wedstrijd_id (PK)
		- thuis_team_id (FK)
		- uit_team_id (FK)
		- datetime
		- stadion_id (FK)
		- type_id (FK)
		- scheidsrechter_id (FK)
		
	- westrijd_type (kwalificatie, groepswedstrijd, kwartfinale enz.)
		- naam
		- type_id (PK)
	
	- Stadion
		- stadion_id (PK)
		- naam
		- plaats
		- capaciteit
		
	- Poule 
		- poule_id (PK)
		- naam	
	
	- Scheidsrechter
		- scheidsrechter_id (PK)
		- naam
	- indeling
		- indeling_id (PK)
		- poule_id (FK)
		- team_id (FK)
		- indeling_type_id (FK)
		- continent_id (FK)
	- indeling_type
		- id (PK)
		- name (UNIQUE) (kwalificatie of eindronde)

	- continenten
		- continent_id (PK)
		- name (UNIQUE)
Gerhard,

ik zou alleen het poule_id bij team weghalen en in een koppeltabel zetten:
Pouleindeling
- pouleindeling_id (PK)
- poule_id (FK)
- team_id (FK)

Dan kun teams indelen in de kwalificatiepoules en de poules op de eindronde. Nu kunnen ze maar in één poule zitten.
@Jeroen, dat is inderdaad handig, alleen dan moet er denk ik in het tabel pouleindeling wel een pouletype bijkomen om de kwalificatie en de eindronde gescheiden te houden of niet?
@gerhard, dan zou je inderdaad het beste ook nog wedstrijdtype_id (FK) toe kunnen voegen.
Als je met eindronde het WK in Brazilië bedoelt, heb je nog een andere uitdaging want er wordt ook nog per continent gekwalificeerd.
Klopt heb het gezien, heb daar nog een tabel voor toegevoegd, maar hou me eerst bezig met Europa. linkje
Lol, iedereen heeft gelijk gespeeld ;-)
Maar even serieus, als ik je een advies mag geven, zou ik in de database een onderscheid maken in de tabellen voor de eindronde en de diverse kwalificatie rondes, dat bespaart je straks een hoop gecompliceerde queries en het staat toch al los van elkaar
Gerhard l op 13/06/2012 16:30:54

linkje


Nog een hoop vraagtekens: Kroati? Servi? Belgi?
Gerhard l op 13/06/2012 16:30:54

Klopt heb het gezien, heb daar nog een tabel voor toegevoegd, maar hou me eerst bezig met Europa. linkje


Ziet er al goed uit. Hoe is nu je tabel-ontwerp geworden. Ben wel benieuwd en wil hem dan ook eens naast mijn database-ontwerp leggen dat ik gebruik voor mijn eigen website van mijn voetbal-elftal.
@Jeroen ik heb de beginpost aangepast, volgens mij is dat mijn structuur.

@SanThe Zal vast komen doordat er nog geen charset is meegegeven, maar bedankt voor het melden

@Ger daar zit ik nog even over te twijfelen, op zich kan je met een indeling_id zeggen of iemand op een eindronde of kwalificatie zit. Maar misschien is een apart tabel wel overzichtelijker..
Bij wedstrijd heb ik zelf ook nog het toeschouwersaantal opgenomen in mijn tabellen. Voor Stadion heb ik nog een extra tabel Capaciteit met daarin de capaciteti van het stadion met begin en einddatum. Dit om uitbreidingen van het stadion ook vast te kunnen leggen.

Voor uitslagen van wedstrijden heb ik ook een losse tabel gemaakt. In het geval van mijn eigen team weet ik namelijk niet wie en in welke volgorde er doelpunten hebben gemaakt bij de overige wedstrijden waardoor ik op basis van de doelpunten geen uitslag kan bepalen.

Ik zal eens kijken of ik een structuur kan maken om die hier bij te zetten (als je wilt).

Reageren