Forum › PHP / SQL › Topic
[SQL] Rooster
Hey allemaal,
Ik zit al een aantal dagen flink vast met een volgens mij redelijk makkelijk op te lossen probleem. Echter kijk ik er al zo lang naar dat ik de oplossing niet meer zie.
Mijn probleem is als volgt;
Ik maak een leerlingadministratie systeem waarbij de leerling een rooster heeft. Aan dit rooster zitten vakken, docenten en lokalen gekoppeld. Als ik echter een vak aan een dag wil koppelen en deze weer aan de tabel rooster dan kan ik er maar 1 toevoegen en heb ik bij wijze van spreke alleen: Maandag met het daarbij horende vakID. Meedere vakken kan ik niet koppelen.
Mijn database ziet er momenteel zo uit:
De tabel week is weer een nieuw probeerseltje maar wederom lukt het niet

Graag hulp! Indien het niet duidelijk is zal ik proberen het duidelijk te maken met meer screens.
Ik denk dat de kenner wel ziet wat er fout gaat in mn erd.
THX
Ik zit al een aantal dagen flink vast met een volgens mij redelijk makkelijk op te lossen probleem. Echter kijk ik er al zo lang naar dat ik de oplossing niet meer zie.
Mijn probleem is als volgt;
Ik maak een leerlingadministratie systeem waarbij de leerling een rooster heeft. Aan dit rooster zitten vakken, docenten en lokalen gekoppeld. Als ik echter een vak aan een dag wil koppelen en deze weer aan de tabel rooster dan kan ik er maar 1 toevoegen en heb ik bij wijze van spreke alleen: Maandag met het daarbij horende vakID. Meedere vakken kan ik niet koppelen.
Mijn database ziet er momenteel zo uit:
De tabel week is weer een nieuw probeerseltje maar wederom lukt het niet

Graag hulp! Indien het niet duidelijk is zal ik proberen het duidelijk te maken met meer screens.
Ik denk dat de kenner wel ziet wat er fout gaat in mn erd.
THX
Je hebt een soort tabel nodig als 'leerling_rooster', maar dan voor 'rooster' en 'vak'. In de zin van:
rooster_vak
-----------
rooster_id -> rooster.ID
vak_id -> vak.ID
dag -> (maandag, dinsdag, ..)
Ik denk alleen dat je nog het uur waarop het vak gegeven wordt, en hoelang het duurt, mist.
rooster_vak
-----------
rooster_id -> rooster.ID
vak_id -> vak.ID
dag -> (maandag, dinsdag, ..)
Ik denk alleen dat je nog het uur waarop het vak gegeven wordt, en hoelang het duurt, mist.
Ik snap niet zo goed wat het nut is van de rooster tabel én de week tabel. Volgens mij kan dit gewoon in één?
En waarom koppel je een vak aan een dag? Je koppelt deze toch aan een lesuur naar mijn idee? Wil je hetzelfde vak nogmaals, maak je gewoon een nieuw record met een andere docent, lokaal en klas aan een ander of zelfs hetzelfde lesuur.
Je zou zelfs nog wel de vakken vast aan een docent kunnen koppelen, maar dit kan soms voor problemen zorgen.
En waarom koppel je een vak aan een dag? Je koppelt deze toch aan een lesuur naar mijn idee? Wil je hetzelfde vak nogmaals, maak je gewoon een nieuw record met een andere docent, lokaal en klas aan een ander of zelfs hetzelfde lesuur.
Je zou zelfs nog wel de vakken vast aan een docent kunnen koppelen, maar dit kan soms voor problemen zorgen.
Quote:Hiervoor kan je beter een zogenoemde 'cluster-klas' maken en hier leerlingen aan toevoegen.
Thomas schreef:
Je hebt een soort tabel nodig als 'leerling_rooster', maar dan voor 'rooster' en 'vak'. In de zin van:
rooster_vak
-----------
rooster_id -> rooster.ID
vak_id -> vak.ID
dag -> (maandag, dinsdag, ..)
Ik denk alleen dat je nog het uur waarop het vak gegeven wordt, en hoelang het duurt, mist.
hahahah bedankt! Volgens mij is het nu gefixed! Gewoon een koppeltabel eigenlijk met daarin nog de dag en het lesuur! Denk dat ik nog een tabel koppel aan de dag zodat dit ook een vaste selectie is en geen vrije invoer
. Bedankt! Echt heel erg bedankt 
Nog even ter verduidelijking, dit was je bedoelde denk ik?

De weekID is volgens mij nu overbodig
De rooster en week tabel was even een snel probeerseltje, de week tabel ga ik nu samenvoegen met rooster
Vak moet inderdaad ook aan een lesuur gekoppeld worden, het is meer zo dat ik bepaalde dingen zo vaak overnieuw heb gemaakt dat ik dingen over het hoofd ben gaan zien, zo ook lesuur! In mijn vorige versies stond deze er wel. IN ieder geval bedankt voor je feedback, ik ga eens even kijken naar de cluster klas
. Bedankt! Echt heel erg bedankt 
Nog even ter verduidelijking, dit was je bedoelde denk ik?

De weekID is volgens mij nu overbodig
Quote:
Tim_ schreef:
Ik snap niet zo goed wat het nut is van de rooster tabel én de week tabel. Volgens mij kan dit gewoon in één?
En waarom koppel je een vak aan een dag? Je koppelt deze toch aan een lesuur naar mijn idee? Wil je hetzelfde vak nogmaals, maak je gewoon een nieuw record met een andere docent, lokaal en klas aan een ander of zelfs hetzelfde lesuur.
Je zou zelfs nog wel de vakken vast aan een docent kunnen koppelen, maar dit kan soms voor problemen zorgen.
[...]Hiervoor kan je beter een zogenoemde 'cluster-klas' maken en hier leerlingen aan toevoegen.
De rooster en week tabel was even een snel probeerseltje, de week tabel ga ik nu samenvoegen met rooster
Vak moet inderdaad ook aan een lesuur gekoppeld worden, het is meer zo dat ik bepaalde dingen zo vaak overnieuw heb gemaakt dat ik dingen over het hoofd ben gaan zien, zo ook lesuur! In mijn vorige versies stond deze er wel. IN ieder geval bedankt voor je feedback, ik ga eens even kijken naar de cluster klas
Nog even een vraagje aan de hand van de oplossing die hierboven gegeven is

Ik heb geprobeerd om de tabel week overbodig te maken en deze in rooster te stoppen. Helaas kan ik dan de week_id niet koppelen aan rooster weekID.
Weet iemand hoe ik dit kan oplossen?
Daarnaast nog een ander vraagje. Ik wil aan de hand van mijn leerling.ID het daarbij horende rooster opvragen. Helaas lukt mij dit niet goed. Hoe is dit te doen? Ik heb het geprobeerd met Joins en ben tot deze query gekomen (heb het nu even met puur alleen JOINS gedaan en niet met left, right of inner)
Bedankt

Ik heb geprobeerd om de tabel week overbodig te maken en deze in rooster te stoppen. Helaas kan ik dan de week_id niet koppelen aan rooster weekID.
Weet iemand hoe ik dit kan oplossen?
Daarnaast nog een ander vraagje. Ik wil aan de hand van mijn leerling.ID het daarbij horende rooster opvragen. Helaas lukt mij dit niet goed. Hoe is dit te doen? Ik heb het geprobeerd met Joins en ben tot deze query gekomen (heb het nu even met puur alleen JOINS gedaan en niet met left, right of inner)
![]() | Code | ![]() | ![]() | ![]() |
|
Bedankt
Ik heb bovenstaand bericht ge-edit om te zorgen dat het niet zo overstroomt van mijn posts in dit topic. Helaas update hij het topic niet in de actieve topic lijst, dus bij deze even een "kick"
Ik denk dat je eerst even alles goed op papier (of in je hoofd) moet zetten voordat je het té snel in elkaar wilt proppen. Want volgens mij zijn er nu een heleboel tabellen nutteloos of eigenlijk niet nodig.
Ik zal eens even kijken of ik een goede opzet kan maken... Dan hoor je me later nog.
Ik zal eens even kijken of ik een goede opzet kan maken... Dan hoor je me later nog.
Quote:Mja, vind het ID daar al overbodig, want dat mag gewoon het leerlingnummer zijn.
b]Styxxy schreef:[/b]
[...]
Lesuur en weekdag lijken me al overbodig. Daarnaast is de koppeling om een rooster op te maken ook niet bijster goed of flexibel. (En ik zou op leerlingennummer een UNIQUE constraint zetten, mij lijkt dat het uniek is per leerling.)
Quote:
Tim_ schreef:
Want volgens mij zijn er nu een heleboel tabellen nutteloos of eigenlijk niet nodig.
Lesuur en weekdag lijken me al overbodig
. Daarnaast is de koppeling om een rooster op te maken ook niet bijster goed of flexibel. (En ik zou op leerlingennummer een UNIQUE constraint zetten, mij lijkt dat het uniek is per leerling.)
Quote:
Tim_ schreef:
Ik zal eens even kijken of ik een goede opzet kan maken... Dan hoor je me later nog.[...]Mja, vind het ID daar al overbodig, want dat mag gewoon het leerlingnummer zijn.
Het kan helaas niet het leerlingnummer zijn omdat deze pas later bekend worden (als de leerlingen al ingeschreven moeten zijn op de school en al ingevoerd moeten zijn in het systeem)
Quote:
Styxxy schreef:
[...]
Lesuur en weekdag lijken me al overbodig. Daarnaast is de koppeling om een rooster op te maken ook niet bijster goed of flexibel. (En ik zou op leerlingennummer een UNIQUE constraint zetten, mij lijkt dat het uniek is per leerling.)
Het rooster hoeft niet perse uniek te zijn per leerling. Leerlingen kunnen hezelfde profiel hebben en daarbij dezelfde vakken volgen.
@TIM
Bedankt! IK ga er even naar kijken! THANKS
Quote:
Jimbo schreef:
[...]
Het rooster hoeft niet perse uniek te zijn per leerling. Leerlingen kunnen hezelfde profiel hebben en daarbij dezelfde vakken volgen.
Dan nog was het geen goede koppeling, of toch een vreemde koppeling. Hetgeen Tim heeft gemaakt, is veel logischer.
Quote:Dat snap ik, dat is ook logisch, dan krijg je dus een zogenoemde 'clusterklas'. Studenten uit hetzelfde leerjaar, maar uit verschillende klassen, welke hetzelfde keuze vak volgen en daar wèl één klas vormen.
Jimbo schreef:
[...]
Het rooster hoeft niet perse uniek te zijn per leerling. Leerlingen kunnen hezelfde profiel hebben en daarbij dezelfde vakken volgen.
@TIM
Bedankt! IK ga er even naar kijken! THANKS
Bijvoorbeeld, je hebt studenten uit het 5de leerjaar (klas 5.01, 5.02, 5.03) waaruit een aantal het vak geschiedenis hebben. Dan maak je een nieuwe klas, bv. 5.01ges, je zet cluster op 1, zodat je kan zien dat het om een clusterklas gaat. Vervolgens wijs je hier studenten aan toe.
Vandaar ook de stud-klas tabel, zodat studenten aan meerdere 'klassen' kunnen worden toegewezen.
Quote:
Tim_ schreef:
[...]Dat snap ik, dat is ook logisch, dan krijg je dus een zogenoemde 'clusterklas'. Studenten uit hetzelfde leerjaar, maar uit verschillende klassen, welke hetzelfde keuze vak volgen en daar wèl één klas vormen.
Bijvoorbeeld, je hebt studenten uit het 5de leerjaar (klas 5.01, 5.02, 5.03) waaruit een aantal het vak geschiedenis hebben. Dan maak je een nieuwe klas, bv. 5.01ges, je zet cluster op 1, zodat je kan zien dat het om een clusterklas gaat. Vervolgens wijs je hier studenten aan toe.
Vandaar ook de stud-klas tabel, zodat studenten aan meerdere 'klassen' kunnen worden toegewezen.
Aaah op die manier!
Heb het zojuist getest maar krijg helaas de volgende melding:
![]() | Code | ![]() | ![]() | ![]() |
|
Weten jullie waar dit fout gaat? Ik heb er naar gekeken maar snap niet waar hij die constraint vandaan haalt? De tabel lesuur is gekoppeld aan lokaal, vak, leraar en klas
En zelke error krijg je nu exact? Ik zie namelijk gewoon een gedeeltelijke query staan (die in dat formaat niet eens leesbaar is).
Probleem is al opgelost, sorry! Niet alles kwam goed overeen.
Sorry, het was ook niet heel handig van mij om er geen export neer te zetten. Mocht er nog iemand behoefte aan hebben:
![]() | Code | ![]() | ![]() | ![]() |
|
Thanks! Nog een kort vraagje, hoe zou ik hier mooi de aanwezigheid per leerling aan kunnen koppelen? Ik denk door een extra row toe te voegen aan de leerling (aanwezigheidID, aid) en lesuur(aid)?
En wat is precies het doel van een suffix? Dubbele waardes voorkomen?
En wat is precies het doel van een suffix? Dubbele waardes voorkomen?
Een extra tabel maken met aanwezigheid, met een kolom die overeenkomt met het lesuur-id, een met het student-id en natuurlijk een kolom welke aangeeft of de student aan- of afwezig is. Bijvoorbeeld:
En die suffix (achtervoegsel) dient als bijvoorbeeld volledige klasnaam of lokaal. Het 'nummer' is nu een float, dit is makkelijker sorteren op verdieping of klasjaar. Maar zo kan je bijvoorbeeld wel een lokaal 2.01a en 2.01b hebben. Hetzelfde met klasnamen, handig als je bijvoorbeeld het niveau in de klasnaam wilt hebben of voor de clusterklas. Voorbeeld: 3.04vkt (vmbo k/t), 3.04hv (havo/vwo) - 2.02ceco (clusterklas economie), 2.02cmuz (clusterklas muziek).
Dit zijn slechts voorbeelden hoor, je kan het invullen en namen geven hoe je zelf wilt.
Hoop dan mijn uitleg een beetje duidelijk is.
![]() | Code | ![]() | ![]() | ![]() |
|
En die suffix (achtervoegsel) dient als bijvoorbeeld volledige klasnaam of lokaal. Het 'nummer' is nu een float, dit is makkelijker sorteren op verdieping of klasjaar. Maar zo kan je bijvoorbeeld wel een lokaal 2.01a en 2.01b hebben. Hetzelfde met klasnamen, handig als je bijvoorbeeld het niveau in de klasnaam wilt hebben of voor de clusterklas. Voorbeeld: 3.04vkt (vmbo k/t), 3.04hv (havo/vwo) - 2.02ceco (clusterklas economie), 2.02cmuz (clusterklas muziek).
Dit zijn slechts voorbeelden hoor, je kan het invullen en namen geven hoe je zelf wilt.
Hoop dan mijn uitleg een beetje duidelijk is.



Offline




