-- Toewijzingen: een leerkracht koppelt één van haar eigen borden (via het -- stabiele board-id uit users.data) aan een klas of een individuele leerling. -- Puur additief, leeg bij aanmaak. Precies één van class_id/pupil_id gezet: -- een klas-toewijzing (standaard voor iedereen in de klas) of een leerling- -- toewijzing (uitzondering, voor een leerling op een ander niveau). CREATE TABLE IF NOT EXISTS assignments ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, class_id BIGINT REFERENCES classes(id) ON DELETE CASCADE, pupil_id BIGINT REFERENCES users(id) ON DELETE CASCADE, teacher_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, board_id TEXT NOT NULL, updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), CHECK (num_nonnulls(class_id, pupil_id) = 1) ); CREATE UNIQUE INDEX IF NOT EXISTS idx_assignments_class ON assignments(class_id) WHERE class_id IS NOT NULL; CREATE UNIQUE INDEX IF NOT EXISTS idx_assignments_pupil ON assignments(pupil_id) WHERE pupil_id IS NOT NULL;