-- ============================================================================ -- Migration 041 — A4 Fase 4.1: Organigramma (org_roles) -- ---------------------------------------------------------------------------- -- Introduce l'organigramma org-wide: ruoli/responsabilita con gerarchia -- (parent_role_id self-FK), titolare (holder_user_id) e il nodo distinto degli -- organi di amministrazione/direttivi (is_governance_body) richiesto dall'Art.23 -- D.Lgs. 138/2024 (responsabilita degli organi di gestione) e da GV.RR-02 -- (ruoli, responsabilita e poteri stabiliti e comunicati). -- -- ADDITIVA: nessuna tabella esistente modificata. isms_roles (SoA SGSI) resta -- invariato e potra in futuro linkare org_roles via una colonna opzionale. -- -- IDEMPOTENTE: CREATE TABLE IF NOT EXISTS. Applicare con la STESSA connessione -- PDO dell'app (host MySQL servito da php-fpm), NON sul DB secondario: -- docker exec nis2-app php /var/www/nis2-agile/scripts/migrate-a4.php -- -- Design: docs/DESIGN_A4_RELATIONAL.md (sez. 2 entita, sez. 4 ancoraggio, sez. 7 fasi). -- ============================================================================ CREATE TABLE IF NOT EXISTS org_roles ( id INT AUTO_INCREMENT PRIMARY KEY, organization_id INT NOT NULL, role_name VARCHAR(150) NOT NULL, parent_role_id INT NULL, -- gerarchia organigramma (self-FK) holder_user_id INT NULL, -- titolare del ruolo (utente dell org) is_governance_body TINYINT(1) NOT NULL DEFAULT 0, -- nodo organi amministrazione/direttivi (Art.23) description TEXT NULL, -- responsabilita e poteri del ruolo (GV.RR-02) sort_order INT NOT NULL DEFAULT 0, -- ordinamento tra fratelli created_by INT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE, FOREIGN KEY (parent_role_id) REFERENCES org_roles(id) ON DELETE SET NULL, FOREIGN KEY (holder_user_id) REFERENCES users(id) ON DELETE SET NULL, FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL, INDEX idx_org_roles_org (organization_id), INDEX idx_org_roles_parent (parent_role_id), INDEX idx_org_roles_holder (holder_user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;