6. Docentstructuur en leerlingtoegang
Deze pagina is de ERD-inzoomlaag voor het databasehoofdstuk 03_docentstructuur-en-leerlingtoegang.md. De tabeldefinities in dat brondocument blijven leidend; deze pagina biedt een leesbare visuele ingang en een compacte inventaris. Harde ERD-relaties op deze pagina betekenen uitsluitend harde foreign keys binnen dezelfde modulegrens. Cross-module verwijzingen naar bijvoorbeeld Users, Roles, UserRelationships en ExerciseRuns worden als soft link of soft link + snapshot beschreven en niet als harde ERD-relatie getekend.
6.1 Waar dit domein over gaat
Dit domein verbindt onderwijsinhoud met toegang:
- docenten maken en beheren niveaus;
- centrale categorieën worden aan docentniveaus gekoppeld;
- oefeningen hangen onder niveau-categorieën en verwijzen naar technische modules;
- collaborators kunnen op niveau-laag meewerken aan onderwijsinhoud;
- leerlingen krijgen toegang via docent-leerlingrelatie plus niveauautorisatie;
- live meekijken wordt auditbaar geregistreerd, maar wijzigt de oefenrun niet.
Omdat dit domein relatief groot is, wordt het niet als één allesomvattend diagram getoond. De pagina gebruikt meerdere subdiagrammen.
6.2 Overzichts-ERD
Dit overzicht toont alleen de harde relaties binnen het catalogus-/docentstructuurdomein. Verwijzingen naar identity, authorization, relationships, practice en live monitoring zijn soft links en worden in de tekstuele relatie-inventaris uitgewerkt. History, migratie, eigendomsoverdracht en live-audit staan in de subdiagrammen hieronder.
6.3 Subdiagram: niveau, eigenaar en collaborators
Belangrijk onderscheid:
TeacherLevels.OwnerTeacherUserIdis de actuele eigenaar en wordt als soft link naarUsers.Idvastgelegd.TeacherLevelCollaboratorsgeeft samenwerkingsrechten op onderwijsinhoud binnen dat niveau.- Collaboration geeft geen leerling-, resultaat-, geschiedenis- of live-meekijktoegang.
TeacherLevelOwnershipTransfersbewaart overdrachtshistorie en is geen actuele eigenaarbron. De betrokken gebruikersvelden zijn soft links naarUsers.Id.
6.4 Subdiagram: categorieën, oefeningen en modules
Belangrijk onderscheid:
Categoriesis centrale categorie-identiteit en dus geen privé-categorie per docent.TeacherLevelCategoriesbepaalt dat een centrale categorie binnen een docentniveau gebruikt wordt.TeacherLevelCategoryExerciseskoppelt concrete oefeningen aan zo'n niveau-categorie.Exercisesverwijst naar precies éénExerciseModules-record.ParentExerciseIdlegt kopie/afleiding tussen oefeningen vast, maar wijzigingen in een kopie wijzigen de bron niet.CategoryHistory,CategoryMigrations,ExerciseHistoryenExerciseModuleMigrationszijn audit-/onderhoudslagen en geen reguliere leerlingtoegangsbron.
6.5 Subdiagram: leerlingtoegang en live meekijken
Belangrijk onderscheid:
TeacherStudentLevelAccessmaakt geen relatie aan; de relatie moet al bestaan inUserRelationships. De verwijzing is een soft link en wordt applicatief gevalideerd.- Toegang tot een niveau is docentcontextgebonden.
- Een ouder/voogd gebruikt voor resultaten en live meekijken niet deze docentautorisatie, maar de actieve
GuardianStudent-relatie. LiveViewAuditregistreert meekijken, maar is niet de bron van oefenvoortgang. De verwijzing naarExerciseRunsis een soft link; de bron van live voortgang ligt bij de opgeslagen run/progressdata.
6.6 Tabellen in dit domein
| Tabel | Categorie | Doel / verantwoordelijkheid | Brongebruik |
|---|---|---|---|
TeacherLevels | Docentstructuur | Door een docent aangemaakte niveaus met vrije naamgeving en één actuele eigenaar. | Hoofdcontext voor docentinhoud en leerlingautorisatie. |
TeacherLevelCollaborators | Docentstructuur | Actieve samenwerking van extra docenten op een bestaand niveau. | Bewerken van onderwijsinhoud, geen leerlingtoegang. |
TeacherLevelOwnershipTransfers | Docentstructuur | Historie van overdracht van eigenaarschap van een niveau tussen docenten. | Audit/reconstructie van eigenaarschapsoverdracht. |
Categories | Centrale onderwijsinhoud | Centrale categorie-identiteit die door meerdere docentniveaus kan worden hergebruikt. | Gedeelde semantische en visuele categoriebron. |
CategoryHistory | Audit en historie | Vastleggen van beheerwijzigingen op centrale categorieën. | Historische reconstructie van categoriewijzigingen. |
CategoryMigrations | Audit en onderhoud | Registratie van migratie van broncategorie naar doelcategorie. | Onderhoudsactie; herschrijft historische runs niet. |
TeacherLevelCategories | Docentstructuur | Koppeling van centrale categorieën aan een docentniveau. | Bepaalt welke categorie binnen een niveau beschikbaar kan zijn. |
TeacherLevelCategoryExercises | Docentstructuur | Concrete oefeningen binnen een docentniveau-categorie. | Verbindt niveau-categorie met concrete oefening. |
Exercises | Docentstructuur | Concrete, door een docent geconfigureerde oefening op basis van precies één technische module. | Bron voor oefenconfiguratie en modulekoppeling. |
ExerciseHistory | Audit en historie | Append-only audittrail van wijzigingen op oefeningen. | Reconstructie van configuratie-, naam-, icon- en statuswijzigingen. |
ExerciseModules | Technische modules | Door beheer vrijgegeven technische oefenmodules waar oefeningen expliciet naar verwijzen. | Technische strategy/modulebron voor oefeningen. |
ExerciseModuleMigrations | Audit en onderhoud | Registratie van modulemigraties op proef-, docent- of globale scope. | Onderhoudsactie met impact op concrete oefeningen. |
LiveViewAudit | Audit en historie | Audittrail van live meekijksessies. | Registratie van wie wanneer live meekeek. |
TeacherStudentLevelAccess | Autorisatie | Toegang van een leerling tot een of meer niveaus van een docent. | Bron voor docentcontextgebonden leerlingtoegang. |
6.7 Relatiestartpunten binnen dit domein
| Brontabel | Veld | Verwijst naar | Relatietype | Nullable | Betekenis |
|---|---|---|---|---|---|
TeacherLevels | OwnerTeacherUserId | Users.Id | Soft link | N | Actuele eigenaar van het niveau; applicatief gevalideerd via identity/autorisatie. |
TeacherLevelCollaborators | TeacherLevelId | TeacherLevels.Id | Harde FK | N | Niveau waarop collaboration geldt. |
TeacherLevelCollaborators | CollaboratorTeacherUserId | Users.Id | Soft link | N | Docent die collaborator is. |
TeacherLevelCollaborators | GrantedByUserId | Users.Id | Soft link | N | Gebruiker die samenwerking toekende. |
TeacherLevelCollaborators | RevokedByUserId | Users.Id | Soft link | J | Gebruiker die samenwerking introk. |
TeacherLevelOwnershipTransfers | TeacherLevelId | TeacherLevels.Id | Harde FK | N | Niveau waarvan eigenaarschap is overgedragen. |
TeacherLevelOwnershipTransfers | PreviousOwnerTeacherUserId | Users.Id | Soft link | N | Vorige eigenaar. |
TeacherLevelOwnershipTransfers | NewOwnerTeacherUserId | Users.Id | Soft link | N | Nieuwe eigenaar. |
TeacherLevelOwnershipTransfers | TransferredByUserId | Users.Id | Soft link | N | Gebruiker die overdracht uitvoerde. |
Categories | CreatedByUserId | Users.Id | Soft link | N | Actor die categorie aanmaakte. |
Categories | UpdatedByUserId | Users.Id | Soft link | J | Actor die categorie bijwerkte. |
CategoryHistory | CategoryId | Categories.Id | Harde FK | N | Categorie waarop historie betrekking heeft. |
CategoryHistory | ChangedByUserId | Users.Id | Soft link | N | Actor die wijziging uitvoerde. |
CategoryMigrations | SourceCategoryId | Categories.Id | Harde FK | N | Broncategorie bij migratie. |
CategoryMigrations | TargetCategoryId | Categories.Id | Harde FK | N | Doelcategorie bij migratie. |
CategoryMigrations | MigratedByUserId | Users.Id | Soft link | N | Actor die migratie uitvoerde. |
TeacherLevelCategories | TeacherLevelId | TeacherLevels.Id | Harde FK | N | Niveau waarin categorie wordt gebruikt. |
TeacherLevelCategories | CategoryId | Categories.Id | Harde FK | N | Centrale categorie. |
TeacherLevelCategoryExercises | TeacherLevelCategoryId | TeacherLevelCategories.Id | Harde FK | N | Niveau-categoriecontext. |
TeacherLevelCategoryExercises | ExerciseId | Exercises.Id | Harde FK | N | Concrete oefening. |
Exercises | ExerciseModuleId | ExerciseModules.Id | Harde FK | N | Technische moduleversie voor deze oefening. |
Exercises | ParentExerciseId | Exercises.Id | Harde FK | J | Bron/oorsprong van een kopie of afgeleide oefening. |
Exercises | CreatedByUserId | Users.Id | Soft link | N | Actor die oefening aanmaakte. |
Exercises | UpdatedByUserId | Users.Id | Soft link | J | Actor die oefening bijwerkte. |
ExerciseHistory | ExerciseId | Exercises.Id | Harde FK | N | Oefening waarop historie betrekking heeft. |
ExerciseHistory | ChangedByUserId | Users.Id | Soft link | N | Actor die wijziging uitvoerde. |
ExerciseModules | CreatedByUserId | Users.Id | Soft link | N | Actor die moduleversie registreerde. |
ExerciseModules | UpdatedByUserId | Users.Id | Soft link | J | Actor die moduleversie bijwerkte. |
ExerciseModuleMigrations | ExerciseId | Exercises.Id | Harde FK | J | Concrete oefening bij proef- of testmigratie. |
ExerciseModuleMigrations | SourceExerciseModuleId | ExerciseModules.Id | Harde FK | N | Bronmodule bij modulemigratie. |
ExerciseModuleMigrations | TargetExerciseModuleId | ExerciseModules.Id | Harde FK | N | Doelmodule bij modulemigratie. |
ExerciseModuleMigrations | TeacherUserId | Users.Id | Soft link | J | Docent bij docentgerichte migratiescope. |
ExerciseModuleMigrations | MigratedByUserId | Users.Id | Soft link | N | Actor die migratie uitvoerde. |
LiveViewAudit | ViewerUserId | Users.Id | Soft link | N | Gebruiker die meekijkt. |
LiveViewAudit | ViewerRoleId | Roles.Id | Soft link + snapshot | N | Rolcontext van de meekijker; ViewerRoleNameSnapshot bewaart de leesbare rolnaam. |
LiveViewAudit | ObservedUserId | Users.Id | Soft link | N | Leerling/kind waarbij wordt meegekeken. |
LiveViewAudit | ExerciseRunId | ExerciseRuns.Id | Soft link | N | Actieve run waarop meekijken betrekking heeft. |
TeacherStudentLevelAccess | TeacherStudentRelationshipId | UserRelationships.Id | Soft link | N | Actieve docent-leerlingrelatie waaruit autorisatie volgt. |
TeacherStudentLevelAccess | TeacherLevelId | TeacherLevels.Id | Soft link | N | Geautoriseerd niveau. |
TeacherStudentLevelAccess | StudentUserId | Users.Id | Soft link | N | Leerling die toegang krijgt of kreeg. |
TeacherStudentLevelAccess | GrantedByUserId | Users.Id | Soft link | N | Actor die toegang verleende. |
TeacherStudentLevelAccess | RevokedByUserId | Users.Id | Soft link | J | Actor die toegang introk. |
6.8 Brondata versus audit/onderhoud
| Type | Tabellen | Uitleg |
|---|---|---|
| Actuele onderwijsstructuur | TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises, ExerciseModules | Bepaalt welke onderwijsinhoud bestaat en waar die technisch aan gekoppeld is. |
| Actuele samenwerking | TeacherLevelCollaborators | Bepaalt wie op niveau-laag mag meewerken aan onderwijsinhoud. |
| Actuele leerlingtoegang | TeacherStudentLevelAccess plus UserRelationships | Bepaalt welke leerling binnen docentcontext toegang heeft tot welk niveau. |
| Historie en onderhoud | TeacherLevelOwnershipTransfers, CategoryHistory, CategoryMigrations, ExerciseHistory, ExerciseModuleMigrations | Ondersteunt reconstructie, beheeranalyse en onderhoudsacties. |
| Live-audit | LiveViewAudit | Registreert meekijksessies, maar is niet de bron van voortgang of resultaten. |
6.9 Belangrijke cross-domein aandachtspunten
TeacherStudentLevelAccess.TeacherStudentRelationshipIdis een soft link naarUserRelationships; toegang start dus bij relatiebeheer en wordt applicatief gevalideerd.LiveViewAudit.ExerciseRunIdis een soft link naarExerciseRuns; live meekijken volgt een run, maar wijzigt die niet.UserSettings.SelectedTeacherLevelIduit identiteit/autorisatie kan als soft link naarTeacherLevelsverwijzen als gebruikersvoorkeur.ExerciseRunsbewaart later historische verwijzingen naarTeacherLevels,Categories,ExercisesenExerciseModules; die historische runcontext mag niet onbedoeld worden herschreven door categorie- of modulemigraties.ExerciseModulesstaat functioneel dicht bij configuratie/contentbeheer, maar wordt hier getoond omdat concrete oefeningen er direct naar verwijzen.
6.10 Zoompad vanaf deze pagina
| Vervolg | Gebruik wanneer... |
|---|---|
| Relatiebeheer | je wilt controleren of een leerling, docent of ouder/voogd überhaupt een geldige relatiecontext heeft. |
| Oefenruns, delen en voortgang | je wilt zien hoe niveau/categorie/oefening/module in historische runs terechtkomen. |
| Configuratie en contentbeheer | je modulebeheer, featuretoggles of beheerde content rond oefeningen wilt bekijken. |
| Cross-domein relaties | je externe lijnen naar Users, Roles, UserRelationships of ExerciseRuns wilt volgen. |