Rekenen in de SQL-databank Hugo Troch
Inhoudsopgave 1 Principes 1.1 Opmerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Rekenwerk - hulpfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2
2 Details maandrapporten 2.1 Maandcijfers - rekenwerk . . . . . . . . . . . . 2.2 Maandcijfers - overzicht . . . . . . . . . . . . 2.3 Maandcijfers - rapporten . . . . . . . . . . . . 2.4 Samenhang tussen de functies maandrapport 2.4.1 Maandcijfers - rechtstreeks . . . . . . 2.4.2 Maandcijfers - via tussentabel . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
3 3 3 3 5 5 6
3 Details trimestercijfers en jaarcijfers 3.1 Trimestercijfers - rekenwerk . . . . . . . . . . . . 3.2 Trimestercijfers - overzicht . . . . . . . . . . . . . 3.3 Trimestercijfers - rapporten . . . . . . . . . . . . 3.4 Jaarcijfers . . . . . . . . . . . . . . . . . . . . . . 3.5 Samenhang functies trimestercijfers en jaarcijfers 3.5.1 Trimestercijfers - via tussentabel . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
7 7 7 7 8 9 10
1
. . . . . .
Principes
Het berekenen van de maand-, trimester- en jaarcijfers van de leerlingen is niet zo evident. Er zijn verschillende beleidskeuzes mogelijk en er zijn verschillende rekentechnische keuzes mogelijk. Deze keuzes leiden tot (licht) verschillende cijfers op het rapport. Er is in dit verband geen beste keuze voor iedereen. Elke keuze kan verdedigbaar zijn. De keuze is op zich niet juist of fout, ze geeft wel andere resultaten dan een andere keuze. Het computerwerk is een afspiegeling van die beleidskeuzes. In die zin zal een berekening enkel als fout beschouwd worden, als de vooropgestelde principes niet correct gevolgd worden. De cijfers worden volgens de volgende principes berekend. 1. Een leerkracht brengt enkele keren per jaar een maandcijfer binnen en drie of twee keer een cijfer voor dagelijks werk en voor examen. Er kan voor gekozen worden dat de trimestercijfers voor het dagelijks werk het gemiddelde is van de maandcijfers van de voorbije periode. Er kan voor gekozen worden dat de trimestercijfers voor het dagelijks werk het gemiddelde is van de toetsen van de voorbije periode. Deze berekening kan automatisch gebeuren of aanpasbaar door de leraar. Deze keuzes (4 mogelijkheden in het totaal) worden ingesteld in het centraal beheer en overgebracht naar de schijfjes. 1
2. De leerkracht geeft elke periode meerdere cijfers op de toetsen en testen op zijn manier, onder zijn verantwoordelijkheid. Hij brengt uiteindelijk ´e´en cijfer binnen voor een maandrapport en twee cijfers voor het trimesterrapport. Dit cijfer kan maximaal ´e´en beduidend cijfer na de komma bevatten en geeft de toetsresultaten van die periode weer op het offici¨ele totaal. De leraar kan zijn omzettingen zelf maken, of overlaten aan WinPunt. Als men de omzetting van de toetsresultaten naar het rapportcijfer, overlaat aan WinPunt, dan wordt bij de omrekening een wiskundige afronding gemaakt (= een cijfer met willekeurig aantal cijfers na de komma, wordt vervangen door het dichtsbijgelegen getal met ´e´en cijfer na de komma). 3. De cijfers die binnenkomen worden op het secretariaat opgeteld en gemiddeld. Bij de berekening van totaal en gemiddelde wordt enkel rekening gehouden met alle cijfers die er effectief zijn (een cijfer dat er niet is, is geen nul). Alle cijfers worden daarna omgerekend naar procenten. Ook bij deze berekening wordt enkel rekening gehouden met de aanwezige cijfers en bijhorende maxima. Ze verschijnen als procent op de rapporten, op de deliberatielijsten , in de databank, enz... 4. Om implementatieverschillen i.v.m. afwezige cijfers op te lossen, worden afwezige cijfers intern zo lang mogelijk voorgesteld door ’-1’. Elke bewerking op de rapportcijfers zal dus enkel kunnen gebeuren na een test (is het getal positief?) . Uiteraard zullen afwezige rapportcijfers bij de afdruk van de rapporten niet getoond worden. 5. Vooraleer de gegevens van de leerlingen afgedrukt worden, moeten ze geglobaliseerd worden, de klasgemiddeldes moeten berekend worden en alles moet in procenten uitgedrukt worden. Er werd voor gekozen om voor elke uitvoeroperatie de cijfers voor de betrokken klas steeds volledig te herrekenen. De procedures voor klasoverzichten en individuele rapporten moeten identiek zijn. 6. De berekening van totalen en gemiddeldes gebeurt zoveel mogelijk op basis van de ruwe cijfers. Zo wordt bv. het klastotaal berekend door alle ruwe rapportcijfers op te tellen, alle maxima op te tellen, te delen en uit te drukken in procent. 7. De klasgemiddeldes worden berekend op basis van de situatie van de leerlingen op het moment van de afdruk van het rapport. Dat betekent dat de gemiddeldes kunnen veranderen in een latere periode (omdat bv. een leerloing van klas verandert..
1.1
Opmerking
Het gebruik van de PC geeft een bijzonder probleem bij het rekenwerk. Een decimaal getal dat ingevoerd wordt, zal inwendig eerst als floating point voorgesteld worden en dan omgezet worden naar een binaire voorstelling. Voor de uitvoer wordt de omgekeerde weg bewandeld. Bij een berekening kan het altijd gebeuren dat een decimaal getal voorgesteld wordt als α00000 . . . of als (α − 1)9999 . . .. In sommige gevallen leidt dit tot niet intu¨ıtieve afronding. Het getal 4.35 zal in de voorstelling 4.350000 afgerond worden als 4.4, maar in de voorstelling 4.349999 . . . afgerond worden als 4.3. Om dit probleem op te lossen, moeten op goedgekozen plaatsen tussen-afrondingen gebeuren of kleine correcties. Raadpleeg hiervoor de broncode (zie verder).
1.2
Rekenwerk - hulpfuncties
Bij het berekenen van de cijfers gebruiken we twee hulpfuncties. Functie - r procent: Een algemene functie voor het berekenen van een procent, op basis van twee re¨ele getallen. Functie - r totaal: Een algemene functie voor het berekenen van een totaal, op basis van vier re¨ele getallen. De eerste twee stellen het cijfer en maximum voor het dagelijks werk voor, de andere cijfers stellen het het cijfer en maximum voor van het dagelijks werk. 2
2 2.1
Details maandrapporten Maandcijfers - rekenwerk
Om de maandcijfers van een leerling te berekenen gebruiken we volgende objecten in de databank Tabel - r maandcijfers: De cijfers die binnenkomen voor een leerling worden ondergebracht in de tabel r maandcijfers. Deze ruwe cijfers worden niet meer omgezet naar een hulptabel, maar on the fly omgerekend naar procenten. Functie - r maandProcenten: De functie herrekent alle resultaten van de leerlingen naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met inschrijvingsNr, vak en procent. Functie - r maandVakgemiddelde: De functie berekent de gemiddeldes van alle resultaten van de leerlingen van een klas per vak naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met vak en procent. Voor elke periode worden de resultaten van elk vak opgeteld en de maxima die behaald werden voor dat vak. De maxima worden voor elk vak opgeteld, als er cijfers zijn. Het resultaat wordt herleid naar procenten. Functie - r maandLlnTotaal: De functie berekent alle totalen van alle leerlingen. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met inschrijvingsNr, als vak ’AT’ en procent. Als er voor een leerling, voor een periode en voor een vak, cijfers zijn, dan worden ze opgeteld. De maxima worden voor elk vak en elke leerling opgeteld, als er cijfers zijn. Het resultaat wordt herleid naar procenten. Functie - r maandKlastotaal: De functie berekent het totaal van alle resultaten van alle leerlingen naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een rij met als vak ’AT’ en procent. Voor elke periode worden al de resultaten opgeteld en de maxima die behaald werden. De maxima worden enkel opgeteld, als er cijfers zijn. Het resultaat wordt herleid naar procenten.
2.2
Maandcijfers - overzicht
Om een overzicht van de maandcijfers van een klas te presenteren gebruiken we volgende objecten in de databank Functie - r maandOverzichtblad: De functie geeft alle resultaten van de leerlingen weer, omgerekend naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met inschrijvingsNr, voornaam, achternaam en 20 vaknamen en bijhorende procent. Het laatste vak bevat het leerlingtotaal en heeft als vaknaam ”AT”. Functie - r maandGemiddeldeblad: De functie geeft alle vakgemiddeldes weer, omgerekend naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met 20 vaknamen en bijhorende procent. Het laatste vak bevat het klastotaal en heeft als vaknaam ”AT”.
2.3
Maandcijfers - rapporten
De rapporten kunnen de cijfers van de leerlingen zeer eenvoudig weergeven, ze kunnen echter zeer ingewikkeld worden, door de cijfers te combineren mer de vakcommentaar voor de leerling, met de vroegere resultaten, met woordcommentaar enz . . . . Access springt niet altijd even economisch (en performant) om met rapporten en subrapporten. Daarom kan men voor ingewikkelde rapporten en subrapporten best gebruik maken van een tussentabel, waarin de berekende resultaten van de leerling opgeslagen worden. V´o´or het openen van het rapport wordt de berekening uiitgevoerd en het rapport zelf is dan verder gebaseerd op de tabel met de berekende gegevens. Om het maandrapport van een leerling te presenteren gebruiken we volgende objecten in de databank: 3
Tabel - r maandCijfersVoorRapport: De tabel bevat een record voor elke leerling en elk vak, met daarin de maandcijfers van elke periode en de gemiddeldes van de klas. Tabel - r maandTotaalVoorRapport: De tabel bevat van elke leerling, het totaal van de maandcijfers van elke periode en het totaal van de klas. Procedure - r vulMaandCijfersVoorRapport: De procedure heeft de parameter @klas en (her)berekent de gegevens uit de tabel r maandCijfersVoorRapport Procedure - r vulMaandTotaalVoorRapport: De procedure heeft de parameter @klas en (her)berekent de gegevens uit de tabel r maandTotaalVoorRapport Functie - r maandRapportCijfers1 en r maandRapportTotaal1: Deze functies geven alle gegevens weer die gebruikt worden in het maandrapport van elke leerling. Deze variant is dynamisch en doet de berekeningen on the fly. De juiste vorm van deze functie zal sterk verschillen van school tot school (met/zonder vermelding van alle periodes, met/zonder vakcommentaar, met/zonder vermelding van totalen, gemiddeldes, . . . ). Functie - r maandRapportCijfers2 en r maandRapportTotaal2: Deze functies geven alle gegevens weer die gebruikt worden in het maandrapport van elke leerling. Deze variant is statisch en gebaseerd op de hulptabellen. De berekeningen moeten gebeuren in het begin van de procedure. De juiste vorm van de functie zal sterk verschillen van school tot school (met/zonder vermelding van alle periodes, met/zonder vakcommentaar, met/zonder vermelding van totalen, gemiddeldes, . . . ).
4
2.4 2.4.1
Samenhang tussen de functies maandrapport Maandcijfers - rechtstreeks
Deze werkvorm is het meest geschikt om rapporten met een eenvoudige structuur af te drukken.
' PuntCentraal &
Tabel
$ -
r maandcijfers
% r totaal
r procent
? Functies r maandProcenten r maandLlnTotaal
r maandVakgemiddelde r maandKlasTotaal ¡@
¡ ª ¡
@ @ R
Functies
Functies
r maandRapportCijfers1 r maandRapportTotaal1
r maandOverzichtBlad r maandGemiddeldeBlad
? Access-interface
? Access-interface
Rapporten
Klasoverzichten
5
2.4.2
Maandcijfers - via tussentabel
De vorige werkvorm is niet geschikt voor ingewikkelde Access-rapporten, die subformulieren bevatten. Als de cijfers van een klas v´o´or elke afdruk eenmaal bijgewerkt worden in een tussentabel kunnen ze wel met grote performantie afgedrukt worden.
' PuntCentraal &
Tabel
$ -
r maandcijfers
% r procent
r totaal
? Functies r maandProcenten r maandLlnTotaal
r maandVakgemiddelde r maandKlasTotaal ¢@
¢
¢
Functie
@ @ R Functies
¢
¢
r vulMaandcijfersVoorRapport r vulMaandTotaalVoorRapport
¢ ¢
r maandOverzichtBlad r maandGemiddeldeBlad
¢
¢ ¢®¢ Tabel
? Access-interface
r maandCijfersVoorRapport r maandTotaalVoorRapport
Klasoverzichten
? Functies r maandRapportCijfers2 r maandRapportTotaal2 ? Access-interface
Rapporten
6
3 3.1
Details trimestercijfers en jaarcijfers Trimestercijfers - rekenwerk
Tabel - r trimesterCijfers: De DW en EX cijfers die binnenkomen voor een leerling worden ondergebracht in de tabel r trimestercijfers. Deze ruwe cijfers worden niet meer omgezet naar een hulptabel, maar on the fly omgerekend naar procenten. Functie - r trimesterProcenten: De functie herrekent alle resultaten van de leerlingen naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met inschrijvingsNr, vak en procenten voor DW, voor EX en voor TOT. Functie - r trimesterVakgemiddelde: De functie berekent de gemiddeldes van alle resultaten van de leerlingen van een klas per vak naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met vak en procenten voor DW, voor EX en voor TOT.. Voor elke periode worden de resultaten van elk vak opgeteld en de maxima die behaald werden voor dat vak. De maxima worden voor elk vak opgeteld, als er cijfers zijn. Het resultaat wordt herleid naar procenten. Functie - r trimesterLlnTotaal: De functie berekent alle totalen van alle leerlingen. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met inschrijvingsNr, als vak ’AT’ en procenten voor DW, voor EX en voor TOT.. Als er voor een leerling, voor een periode en voor een vak, cijfers zijn, dan worden ze opgeteld. De maxima worden voor elk vak en elke leerling opgeteld, als er cijfers zijn. Het resultaat wordt herleid naar procenten. Functie - r trimesterKlastotaal: De functie berekent het totaal van alle resultaten van alle leerlingen naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een rij met als vak ’AT’ en procenten voor DW, voor EX en voor TOT. Voor elke periode worden al de resultaten opgeteld en de maxima die behaald werden. De maxima worden enkel opgeteld, als er cijfers zijn. Het resultaat wordt herleid naar procenten.
3.2
Trimestercijfers - overzicht
Om een overzicht van de trimestercijfers van een klas te presenteren gebruiken we volgende objecten in de databank Functie - r trimesterOverzichtblad: De functie geeft alle resultaten van de leerlingen weer, omgerekend naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met inschrijvingsNr, voornaam, achternaam en 20 vaknamen en bijhorende procenten voor DW, voor EX en voor TOT. Het laatste vak bevat het leerlingtotaal en heeft als vaknaam ”AT”. Functie - r trimesterGemiddeldeblad: De functie geeft alle vakgemiddeldes weer, omgerekend naar procenten. Inputparameters zijn @klas en @periode, de uitvoer is een tabel met 20 vaknamen en bijhorende procenten voor DW, voor EX en voor TOT. Het laatste vak bevat het klastotaal en heeft als vaknaam ”AT”.
3.3
Trimestercijfers - rapporten
De trimesterrapporten hebben meestal een eenvoudige opbouw. Daarom kunnen ze gebaseerd worden op de dynamische berekening van de rapportresultaten. Om het trimesterrapport van een leerling te presenteren gebruiken we volgende objecten in de databank: Functie - r trimesterRapportCijfers en r trimesterRapportTotaal: Deze functies geven alle gegevens weer die gebruikt worden in het trimesterrapport van elke leerling. De berekeningen gebeuren on the fly. De juiste vorm van deze functie kan verschillen van school tot school. 7
3.4
Jaarcijfers
De objecten voor het berekenen en presenteren van de jaarresultaten zijn volledig analoog met de objecten voor de berekening van de trimesterresultaten. De periode moet nergens gespecifieerd worden, omdat de berekening over alle resultaten van alle periodes loopt.
8
3.5
Samenhang functies trimestercijfers en jaarcijfers
Als de lay-out van trimester- en jaarrapporten eenvoudig is, zal de rechtstreekse werkvorm volstaan. We presenteren de dataflow voor de trimestercijfers, de jaarcijfers worden op analoge manier opgebouwd.
' PuntCentraal &
Tabel
$ -
r trimestercijfers
% r totaal
r procent
? Functies r trimesterProcenten r trimesterLlnTotaal
r trimesterVakGemiddelde r trimesterKlasTotaal ¡@
¡ ª ¡
@ @ R
Functies
Functies
r trimesterRapportCijfers r trimesterRapportTotaal
r trimesterOverzichtBlad r trimesterGemiddeldeBlad
? Access-interface
? Access-interface
Rapporten
Klasoverzichten
9
3.5.1
Trimestercijfers - via tussentabel
De vorige werkvorm is niet geschikt voor ingewikkelde Access-rapporten, die subformulieren bevatten. Als de cijfers van een klas v´o´or elke afdruk eenmaal bijgewerkt worden in een tussentabel kunnen ze wel met grote performantie afgedrukt worden.
' PuntCentraal &
Tabel
$ -
r trimesterCijfers
% r procent
r totaal
? Functies r trimesterProcenten r trimesterLlnTotaal
r trimesterVakgemiddelde r trimesterKlasTotaal ¢@
¢
¢
Functie
@ @ R Functies
¢
¢
r vulTrimesterCijfersVoorRapport r vulTrimesterTotaalVoorRapport
¢ ¢
r trimesterOverzichtBlad r trimesterGemiddeldeBlad
¢
¢ ¢®¢ Tabel
? Access-interface
r trimesterCijfersVoorRapport r trimesterTotaalVoorRapport
Klasoverzichten
? Functies r trimesterRapportCijfers2 r trimesterRapportTotaal2 ? Access-interface
Rapporten
10