Sinds een paar jaar onderhoud ik de website voor het inschrijven en verwerken van alle tennissers van de club waar ik lid van ben. Dit komt neer op: zorgen dat er ingeschreven kan worden en dat alle benodigde informatie opgeslagen werd. Deze informatie kon per seizoen (er is een zomer- en winterseizoen) verschillen. Nu zit ik in 6 VWO en weet ik niet zeker of ik daar nog mee door kan gaan volgend jaar, in verband met een vervolgopleiding. Ik heb daarom besloten om een script te maken die elk seizoen opnieuw te gebruiken is. Het databasemodel ziet er als volgt uit:

Omdat het natuurlijk zonder uitleg niet echt te begrijpen is, hier in het kort hoe het systeem eruit zou moeten gaan zien.
Het is dus voor de gebruikers nodig dat er elk seizoen een inschrijfformulier op de site komt, met een aantal velden. Deze velden kunnen elk jaar variabel zijn, vandaar een tabel `velden`. In de tabel formulieren worden de velden aan elkaar gekoppeld per seizoen. Elk seizoen heeft dus een eigen record in `formulieren` (of, als het formulier identiek is aan een ander seizoen, dan kan er natuurlijk 1 record gebruikt worden voor beide seizoenen).
Je hebt natuurlijk te maken met trainers en bij het inschrijven kan het zijn dat er op een gegeven moment gezegd wordt (door degene die dit alles leidt) dat er een voorkeur voor trainer aangegeven mag worden. Dus er moet ook een tabel `trainers` zijn.
Uiteindelijk wordt alle informatie die door een tennisser wordt ingevuld opgeslagen in de tabel `inschrijvingen`. Hoe ik dit moet gaan doen (rekeninhoudend met dat die informatie kan verschillen per seizoen) weet ik nog niet, dus als er iemand een tip of suggestie heeft: graag!
`inschrijvingen` wordt in principe niet geleegd omdat de inschrijvingen voor seizoen 2 al beginnen terwijl seizoen 1 nog bezig is en de mensen die zich hebben opgegeven voor de training van seizoen 1 nog wel na moeten kunnen kijken in welk groepje ze trainen, op welke dag, hoe laat, bij welke trainer enz. (Daar komt ook de tabel `groepjes` vandaan.)
Omdat die tabel dus nooit geleegd wordt, leek het me handig een tabel `leden` te maken, om zo redundantie te voorkomen in `inschrijvingen`.
Dan als laatste is er nog de tabel `roosters` en zoals je ziet is deze gekoppeld aan `seizoen`. Dit omdat de mógelijke trainingstijden van seizoen tot seizoen kunnen veranderen.
Ik hoop dat ik wat duidelijkheid gebracht heb in wat ik wil. Mijn eigenlijke vraag is nu: is dit databasemodel goed of kan er nog het een en ander aan verbeterd worden (en wat dan) ?

Omdat het natuurlijk zonder uitleg niet echt te begrijpen is, hier in het kort hoe het systeem eruit zou moeten gaan zien.
Het is dus voor de gebruikers nodig dat er elk seizoen een inschrijfformulier op de site komt, met een aantal velden. Deze velden kunnen elk jaar variabel zijn, vandaar een tabel `velden`. In de tabel formulieren worden de velden aan elkaar gekoppeld per seizoen. Elk seizoen heeft dus een eigen record in `formulieren` (of, als het formulier identiek is aan een ander seizoen, dan kan er natuurlijk 1 record gebruikt worden voor beide seizoenen).
Je hebt natuurlijk te maken met trainers en bij het inschrijven kan het zijn dat er op een gegeven moment gezegd wordt (door degene die dit alles leidt) dat er een voorkeur voor trainer aangegeven mag worden. Dus er moet ook een tabel `trainers` zijn.
Uiteindelijk wordt alle informatie die door een tennisser wordt ingevuld opgeslagen in de tabel `inschrijvingen`. Hoe ik dit moet gaan doen (rekeninhoudend met dat die informatie kan verschillen per seizoen) weet ik nog niet, dus als er iemand een tip of suggestie heeft: graag!
`inschrijvingen` wordt in principe niet geleegd omdat de inschrijvingen voor seizoen 2 al beginnen terwijl seizoen 1 nog bezig is en de mensen die zich hebben opgegeven voor de training van seizoen 1 nog wel na moeten kunnen kijken in welk groepje ze trainen, op welke dag, hoe laat, bij welke trainer enz. (Daar komt ook de tabel `groepjes` vandaan.)
Omdat die tabel dus nooit geleegd wordt, leek het me handig een tabel `leden` te maken, om zo redundantie te voorkomen in `inschrijvingen`.
Dan als laatste is er nog de tabel `roosters` en zoals je ziet is deze gekoppeld aan `seizoen`. Dit omdat de mógelijke trainingstijden van seizoen tot seizoen kunnen veranderen.
Ik hoop dat ik wat duidelijkheid gebracht heb in wat ik wil. Mijn eigenlijke vraag is nu: is dit databasemodel goed of kan er nog het een en ander aan verbeterd worden (en wat dan) ?
