449 lines
20 KiB
SQL
449 lines
20 KiB
SQL
-- =====================================================================
|
||
-- PIVOT 1.1.0 – database van ÉÉN school (structuur schooljaar 2026-27)
|
||
--
|
||
-- Elke school in PIVOT heeft een eigen database met deze tabellen.
|
||
-- Gebruik: USE <database_van_de_school>; SOURCE school.sql;
|
||
-- of: python beheer.py nieuwe-schooldatabase <database>
|
||
--
|
||
-- Tabellen uit de PDF: Campus, Lokalen, Wifi, Toestellen, Signpost_DB,
|
||
-- Opmerkingen, Signpost_herstellingen_DB, Leerlingen, Eigendom,
|
||
-- Co_accounts, CO2_Metingen.
|
||
-- Aanvullingen die PIVOT nodig heeft staan gemarkeerd met -- [+]
|
||
-- (Scholen, Gebruikers, Logs, Bugs en Status staan in de centrale database.)
|
||
-- =====================================================================
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- Schooljaren [+] (Leerlingen.Schooljaar_ID = beginjaar, bv. 2026 → '2026-27')
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS Schooljaar (
|
||
Schooljaar_ID SMALLINT NOT NULL PRIMARY KEY,
|
||
Schooljaar VARCHAR(9) NOT NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
INSERT IGNORE INTO Schooljaar (Schooljaar_ID, Schooljaar) VALUES
|
||
(2022, '2022-23'), (2023, '2023-24'), (2024, '2024-25'), (2025, '2025-26'),
|
||
(2026, '2026-27'), (2027, '2027-28'), (2028, '2028-29'), (2029, '2029-30'),
|
||
(2030, '2030-31'), (2031, '2031-32'), (2032, '2032-33'), (2033, '2033-34'),
|
||
(2034, '2034-35'), (2035, '2035-36');
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- Campus → Lokalen
|
||
-- School_ID verwijst naar Scholen.School_ID in de CENTRALE database.
|
||
-- (Geen harde foreign key: een schooldatabase kan op een andere server staan.)
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS Campus (
|
||
Campus_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
School_ID INT NOT NULL,
|
||
Campus_naam VARCHAR(255) NOT NULL,
|
||
Adres VARCHAR(255) NULL,
|
||
KEY idx_campus_school (School_ID)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS Lokalen (
|
||
Lokaal_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Naam VARCHAR(100) NOT NULL,
|
||
Campus_ID INT NULL, -- leeg = nog niet aan een campus gekoppeld (bv. nieuw CO2-lokaal)
|
||
Verdieping VARCHAR(20) NULL,
|
||
KEY idx_lokalen_naam (Naam),
|
||
CONSTRAINT fk_lokalen_campus FOREIGN KEY (Campus_ID)
|
||
REFERENCES Campus (Campus_ID) ON DELETE SET NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS Wifi (
|
||
Wifi_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Campus_ID INT NULL, -- [+] op welke campus dit netwerk hoort
|
||
Naam_Netwerk VARCHAR(100) NOT NULL,
|
||
Wifi_ww VARCHAR(255) NULL,
|
||
CONSTRAINT fk_wifi_campus FOREIGN KEY (Campus_ID)
|
||
REFERENCES Campus (Campus_ID) ON DELETE SET NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- Toestellen
|
||
-- Schooleigen_ID = het eigen toestelnummer van de school (vroeger KAMXM_nummer).
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS Toestellen (
|
||
Toestel_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Schooleigen_ID VARCHAR(50) NULL,
|
||
Serienummer VARCHAR(100) NULL, -- [+] nodig om het toestel in Google te (de)blokkeren
|
||
Type VARCHAR(100) NULL, -- [+] model
|
||
Status VARCHAR(20) NOT NULL DEFAULT 'Beschikbaar', -- [+] Beschikbaar / Uitgeleend / Defect
|
||
Geblokkeerd TINYINT(1) NOT NULL DEFAULT 0, -- [+] 1 = geblokkeerd in Google Admin
|
||
Afschrijfdatum DATE NULL,
|
||
Lokaal_ID INT NULL,
|
||
UNIQUE KEY uq_toestellen_schooleigen (Schooleigen_ID),
|
||
KEY idx_toestellen_serienummer (Serienummer),
|
||
KEY idx_toestellen_status (Status),
|
||
CONSTRAINT fk_toestellen_lokaal FOREIGN KEY (Lokaal_ID)
|
||
REFERENCES Lokalen (Lokaal_ID) ON DELETE SET NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- Gegevens van Signpost (1 rij per toestel dat via Signpost aangekocht is)
|
||
CREATE TABLE IF NOT EXISTS Signpost_DB (
|
||
Toestel_ID INT NOT NULL PRIMARY KEY,
|
||
Signpostnummer VARCHAR(50) NULL,
|
||
Aankoopbedrag DECIMAL(10,2) NULL,
|
||
Aankoopdatum DATE NULL,
|
||
Garantie DATE NULL,
|
||
UNIQUE KEY uq_signpost_nummer (Signpostnummer),
|
||
CONSTRAINT fk_signpost_toestel FOREIGN KEY (Toestel_ID)
|
||
REFERENCES Toestellen (Toestel_ID) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS Opmerkingen (
|
||
Opmerking_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Toestel_ID INT NOT NULL,
|
||
Opmerking TEXT NOT NULL,
|
||
Timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
Gebruiker VARCHAR(255) NULL, -- [+] wie de opmerking schreef
|
||
KEY idx_opmerkingen_toestel (Toestel_ID, Timestamp),
|
||
CONSTRAINT fk_opmerkingen_toestel FOREIGN KEY (Toestel_ID)
|
||
REFERENCES Toestellen (Toestel_ID) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- Leerlingen
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS Leerlingen (
|
||
Leerling_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Internnummer VARCHAR(32) NOT NULL,
|
||
Gebruikersnaam VARCHAR(100) NULL,
|
||
Naam VARCHAR(100) NULL,
|
||
Voornaam VARCHAR(100) NULL,
|
||
SS_nummer VARCHAR(255) NULL,
|
||
Google_adres VARCHAR(255) NULL,
|
||
Schooljaar_ID SMALLINT NULL, -- [+] zie tabel Schooljaar
|
||
Vertrokken_op DATE NULL, -- niet meer actief in Informat sinds (NULL = actief)
|
||
UNIQUE KEY uq_leerlingen_internnummer (Internnummer),
|
||
KEY idx_leerlingen_gebruikersnaam (Gebruikersnaam)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS Co_accounts (
|
||
Co_account_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Internnummer VARCHAR(32) NOT NULL,
|
||
Naam VARCHAR(100) NULL,
|
||
Voornaam VARCHAR(100) NULL,
|
||
Laatste_aanmelding DATETIME NULL,
|
||
Emailadres_co_accounts VARCHAR(255) NULL,
|
||
KEY idx_coaccounts_intern (Internnummer),
|
||
CONSTRAINT fk_coaccounts_leerling FOREIGN KEY (Internnummer)
|
||
REFERENCES Leerlingen (Internnummer) ON DELETE CASCADE ON UPDATE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- Eigendom: welk toestel heeft welke leerling (ook de geschiedenis).
|
||
-- Datum_inlevering leeg = de leerling heeft het toestel nu.
|
||
-- (Vervangt de vroegere tabel Eigendom_archief.)
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS Eigendom (
|
||
Eigendom_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Internnummer VARCHAR(32) NOT NULL,
|
||
Toestel_ID INT NOT NULL,
|
||
Status TINYINT NOT NULL DEFAULT 0, -- 0 = actief, 1 = geblokkeerd in Google
|
||
Datum_toekenning DATE NOT NULL,
|
||
Datum_inlevering DATE NULL,
|
||
KEY idx_eigendom_leerling (Internnummer, Datum_inlevering),
|
||
KEY idx_eigendom_toestel (Toestel_ID, Datum_inlevering),
|
||
CONSTRAINT fk_eigendom_leerling FOREIGN KEY (Internnummer)
|
||
REFERENCES Leerlingen (Internnummer) ON UPDATE CASCADE,
|
||
CONSTRAINT fk_eigendom_toestel FOREIGN KEY (Toestel_ID)
|
||
REFERENCES Toestellen (Toestel_ID)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- Herstellingen (via Signpost of intern)
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS Signpost_herstellingen_DB (
|
||
Incident_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Toestel_ID INT NOT NULL,
|
||
Omschrijving TEXT NULL,
|
||
Kostprijs DECIMAL(10,2) NULL,
|
||
Status_herstelling VARCHAR(30) NOT NULL DEFAULT 'geregistreerd',
|
||
Datum DATE NULL, -- [+] datum van de melding
|
||
Leerling_ID INT NULL, -- [+] leerling die het toestel binnenbracht
|
||
KEY idx_herstellingen_toestel (Toestel_ID),
|
||
CONSTRAINT fk_herstellingen_toestel FOREIGN KEY (Toestel_ID)
|
||
REFERENCES Toestellen (Toestel_ID) ON DELETE CASCADE,
|
||
CONSTRAINT fk_herstellingen_leerling FOREIGN KEY (Leerling_ID)
|
||
REFERENCES Leerlingen (Leerling_ID) ON DELETE SET NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- ---------------------------------------------------------------------
|
||
-- CO2-metingen per lokaal
|
||
-- ---------------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS CO2_Metingen (
|
||
Meting_ID BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Lokaal_ID INT NOT NULL,
|
||
ppm INT NOT NULL,
|
||
Timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
KEY idx_co2_lokaal_tijd (Lokaal_ID, Timestamp),
|
||
KEY idx_co2_tijd (Timestamp),
|
||
CONSTRAINT fk_co2_lokaal FOREIGN KEY (Lokaal_ID)
|
||
REFERENCES Lokalen (Lokaal_ID) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- =====================================================================
|
||
-- [+] Tabellen van PIVOT-modules die niet in de PDF staan
|
||
-- (PIVOT maakt ze ook zelf aan bij het eerste gebruik)
|
||
-- =====================================================================
|
||
CREATE TABLE IF NOT EXISTS smartschool_afwezigheden (
|
||
Datum DATE NOT NULL,
|
||
Internnummer VARCHAR(32) NOT NULL,
|
||
Dagdeel CHAR(2) NOT NULL,
|
||
Code VARCHAR(8) NOT NULL,
|
||
PRIMARY KEY (Datum, Internnummer, Dagdeel),
|
||
INDEX idx_intern (Internnummer),
|
||
INDEX idx_code (Code)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS smartschool_afwezigheden_sync (
|
||
Datum DATE NOT NULL PRIMARY KEY,
|
||
Opgehaald DATETIME NOT NULL,
|
||
Aantal INT NOT NULL DEFAULT 0
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS tweestaps_uitzonderingen (
|
||
ID INT AUTO_INCREMENT PRIMARY KEY,
|
||
Email VARCHAR(255) NOT NULL,
|
||
Naam VARCHAR(255) NULL,
|
||
Reden VARCHAR(255) NULL,
|
||
Van DATETIME NOT NULL,
|
||
Tot DATETIME NOT NULL,
|
||
Door VARCHAR(100) NULL,
|
||
Actief TINYINT NOT NULL DEFAULT 1,
|
||
Beeindigd_op DATETIME NULL,
|
||
Beeindigd_door VARCHAR(100) NULL,
|
||
INDEX idx_actief (Actief, Tot),
|
||
INDEX idx_email (Email)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS tweestaps_log (
|
||
ID INT AUTO_INCREMENT PRIMARY KEY,
|
||
Tijdstip DATETIME NOT NULL,
|
||
Door VARCHAR(100) NULL,
|
||
Actie VARCHAR(40) NOT NULL,
|
||
Email VARCHAR(255) NOT NULL,
|
||
Details VARCHAR(255) NULL,
|
||
INDEX idx_tijdstip (Tijdstip)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS gmail_delegatie_log (
|
||
ID INT AUTO_INCREMENT PRIMARY KEY,
|
||
Tijdstip DATETIME NOT NULL,
|
||
Gebruiker VARCHAR(100) NULL,
|
||
Actie VARCHAR(20) NOT NULL,
|
||
Mailbox VARCHAR(255) NOT NULL,
|
||
Gedelegeerde VARCHAR(255) NOT NULL,
|
||
INDEX idx_mailbox (Mailbox),
|
||
INDEX idx_tijdstip (Tijdstip)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS gmail_delegaties (
|
||
Mailbox VARCHAR(255) NOT NULL,
|
||
Mailbox_naam VARCHAR(255) NULL,
|
||
Gedelegeerde VARCHAR(255) NOT NULL,
|
||
Gedelegeerde_naam VARCHAR(255) NULL,
|
||
Status VARCHAR(20) NULL,
|
||
Opgehaald DATETIME NOT NULL,
|
||
PRIMARY KEY (Mailbox, Gedelegeerde),
|
||
KEY idx_gmail_deleg_gedelegeerde (Gedelegeerde)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS gmail_delegaties_scan (
|
||
ID TINYINT NOT NULL PRIMARY KEY,
|
||
Opgehaald DATETIME NULL,
|
||
Mailboxen INT NULL,
|
||
Fouten INT NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS internaat_aanwezigheid (
|
||
Datum DATE NOT NULL,
|
||
Persoon_ID VARCHAR(64) NOT NULL, -- pPersoon/persoonId uit de Internaat-API van Informat
|
||
Moment VARCHAR(10) NOT NULL, -- ochtend | avond
|
||
Status VARCHAR(10) NOT NULL, -- aanwezig | afwezig (geen rij = nog niet gecontroleerd)
|
||
Naam VARCHAR(200) NULL,
|
||
Bijgewerkt DATETIME NOT NULL,
|
||
Door VARCHAR(255) NULL,
|
||
PRIMARY KEY (Datum, Persoon_ID, Moment),
|
||
KEY idx_aanw_persoon (Persoon_ID)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS gmail_label_log (
|
||
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Gestart DATETIME NOT NULL,
|
||
Klaar DATETIME NULL,
|
||
Door VARCHAR(255) NULL,
|
||
Bron VARCHAR(255) NOT NULL,
|
||
Label VARCHAR(255) NOT NULL,
|
||
Doel VARCHAR(255) NOT NULL,
|
||
Modus VARCHAR(12) NOT NULL, -- kopieren | verplaatsen
|
||
Totaal INT NULL,
|
||
Gelukt INT NULL,
|
||
Overgeslagen INT NULL,
|
||
Fouten INT NULL,
|
||
Melding VARCHAR(500) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS gmail_label_items (
|
||
Bron VARCHAR(255) NOT NULL,
|
||
Bron_ID VARCHAR(64) NOT NULL, -- Gmail-id in de bronmailbox
|
||
Doel VARCHAR(255) NOT NULL,
|
||
Doel_ID VARCHAR(64) NULL, -- Gmail-id van de kopie in de doelmailbox
|
||
Gekopieerd DATETIME NOT NULL,
|
||
PRIMARY KEY (Bron, Bron_ID, Doel)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- Gmail-handtekeningen: sjabloon, logo en gekozen OU's (één rij) en wanneer de handtekening per gebruiker gezet werd
|
||
CREATE TABLE IF NOT EXISTS gmail_handtekening (
|
||
ID TINYINT NOT NULL PRIMARY KEY,
|
||
Sjabloon MEDIUMTEXT NULL,
|
||
OUs TEXT NULL,
|
||
Met_sub_ous TINYINT NOT NULL DEFAULT 1,
|
||
Logo MEDIUMBLOB NULL,
|
||
Logo_type VARCHAR(40) NULL,
|
||
Logo_sleutel VARCHAR(40) NULL,
|
||
Logo_url VARCHAR(500) NULL,
|
||
Logo_breedte INT NOT NULL DEFAULT 120,
|
||
Publiek_adres VARCHAR(255) NULL,
|
||
Nachtelijk TINYINT NOT NULL DEFAULT 0,
|
||
Laatste_nacht DATE NULL,
|
||
Nacht_resultaat VARCHAR(500) NULL,
|
||
Bijgewerkt DATETIME NULL,
|
||
Door VARCHAR(255) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS gmail_handtekening_log (
|
||
Email VARCHAR(255) NOT NULL PRIMARY KEY,
|
||
Toegepast DATETIME NOT NULL,
|
||
Ok TINYINT NOT NULL,
|
||
Melding VARCHAR(500) NULL,
|
||
Hash CHAR(40) NULL,
|
||
Door VARCHAR(255) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- Gmail › Contacten: contactlijsten die PIVOT in de mailboxen van de gekozen OU's zet
|
||
CREATE TABLE IF NOT EXISTS contact_lijsten (
|
||
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Naam VARCHAR(100) NOT NULL, -- label in Google Contacten
|
||
OUs TEXT NULL, -- JSON-lijst van OU-paden
|
||
Met_sub_ous TINYINT NOT NULL DEFAULT 1,
|
||
Bijgewerkt DATETIME NULL,
|
||
Door VARCHAR(255) NULL,
|
||
Laatste_sync DATETIME NULL,
|
||
Resultaat VARCHAR(500) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS contact_lijst_items (
|
||
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Lijst_ID INT NOT NULL,
|
||
Voornaam VARCHAR(100) NULL,
|
||
Achternaam VARCHAR(100) NULL,
|
||
Organisatie VARCHAR(150) NULL,
|
||
Functie VARCHAR(150) NULL,
|
||
Email VARCHAR(255) NULL,
|
||
Telefoon VARCHAR(60) NULL,
|
||
Notitie VARCHAR(500) NULL,
|
||
KEY idx_cli_lijst (Lijst_ID)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
|
||
|
||
CREATE TABLE IF NOT EXISTS google_licenties (
|
||
SKU_ID VARCHAR(32) NOT NULL PRIMARY KEY,
|
||
Naam VARCHAR(128) NOT NULL,
|
||
Aangekocht INT NOT NULL DEFAULT 0,
|
||
Bijgewerkt DATETIME NULL,
|
||
Bijgewerkt_door VARCHAR(100) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS personeel_aanvragen (
|
||
ID INT AUTO_INCREMENT PRIMARY KEY,
|
||
Soort VARCHAR(20) NOT NULL,
|
||
Status VARCHAR(20) NOT NULL,
|
||
Email VARCHAR(255) NOT NULL,
|
||
Naam VARCHAR(255) NULL,
|
||
Ingediend_door VARCHAR(255) NULL,
|
||
Titel VARCHAR(255) NOT NULL,
|
||
Omschrijving TEXT NULL,
|
||
Locatie VARCHAR(255) NULL,
|
||
Van_datum DATE NOT NULL,
|
||
Tot_datum DATE NOT NULL,
|
||
Dagdeel VARCHAR(10) NOT NULL DEFAULT 'dag',
|
||
Lesuren VARCHAR(50) NULL,
|
||
Klassen TEXT NULL,
|
||
Begeleiders TEXT NULL,
|
||
Kost DECIMAL(10,2) NULL,
|
||
Vervanging_ok TINYINT NOT NULL DEFAULT 0,
|
||
Vervanging_info VARCHAR(255) NULL,
|
||
Aangemaakt DATETIME NOT NULL,
|
||
Bijgewerkt DATETIME NOT NULL,
|
||
INDEX idx_status (Status),
|
||
INDEX idx_datum (Van_datum, Tot_datum),
|
||
INDEX idx_email (Email)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS personeel_reacties (
|
||
ID INT AUTO_INCREMENT PRIMARY KEY,
|
||
Aanvraag_ID INT NOT NULL,
|
||
Tijdstip DATETIME NOT NULL,
|
||
Email VARCHAR(255) NULL,
|
||
Naam VARCHAR(255) NULL,
|
||
Actie VARCHAR(30) NOT NULL,
|
||
Tekst TEXT NULL,
|
||
INDEX idx_aanvraag (Aanvraag_ID)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
-- Skore-synchronisatie (planning + logboek)
|
||
CREATE TABLE IF NOT EXISTS skore_planning (
|
||
ID TINYINT NOT NULL PRIMARY KEY,
|
||
Frequentie VARCHAR(20) NOT NULL DEFAULT 'uit',
|
||
Uur TINYINT NOT NULL DEFAULT 6,
|
||
Minuut TINYINT NOT NULL DEFAULT 0,
|
||
Weekdag TINYINT NOT NULL DEFAULT 0,
|
||
Dag_van_maand TINYINT NOT NULL DEFAULT 1,
|
||
Laatst_gepland DATETIME NULL,
|
||
Bijgewerkt DATETIME NULL,
|
||
Bijgewerkt_door VARCHAR(255) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
CREATE TABLE IF NOT EXISTS skore_log (
|
||
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||
Gestart DATETIME NOT NULL,
|
||
Door VARCHAR(255) NULL,
|
||
Manier VARCHAR(20) NOT NULL,
|
||
Service_ID VARCHAR(100) NULL,
|
||
Status VARCHAR(30) NOT NULL,
|
||
Melding TEXT NULL,
|
||
Bijgewerkt DATETIME NULL,
|
||
INDEX idx_skore_gestart (Gestart)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
INSERT IGNORE INTO skore_planning (ID) VALUES (1);
|
||
|
||
CREATE TABLE IF NOT EXISTS smartschool_coaccounts (
|
||
Internnummer VARCHAR(32) NOT NULL,
|
||
Nr TINYINT NOT NULL,
|
||
Gebruikersnaam VARCHAR(100) NULL,
|
||
Leerling_naam VARCHAR(100) NULL,
|
||
Leerling_voornaam VARCHAR(100) NULL,
|
||
Klas VARCHAR(50) NULL,
|
||
Voornaam VARCHAR(100) NULL,
|
||
Naam VARCHAR(100) NULL,
|
||
Type VARCHAR(50) NULL,
|
||
Email VARCHAR(255) NULL,
|
||
Laatste_login DATETIME NULL,
|
||
Opgehaald DATETIME NOT NULL,
|
||
PRIMARY KEY (Internnummer, Nr),
|
||
KEY idx_coacc_klas (Klas)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|
||
|
||
CREATE TABLE IF NOT EXISTS gopro_keuzes (
|
||
Person_ID VARCHAR(64) NOT NULL PRIMARY KEY,
|
||
Functie VARCHAR(100) NULL,
|
||
Rol VARCHAR(100) NULL,
|
||
Bijgewerkt DATETIME NOT NULL,
|
||
Door VARCHAR(255) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
|