From d12812e4142dbd4fb740625ef3d875fac45554c6 Mon Sep 17 00:00:00 2001 From: Pierre Date: Wed, 30 Sep 2026 10:14:35 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20TB=5FGenerations=5Fbateau=20et=20d?= =?UTF-8?q?e=20la=20colonne=20ID=5FGeneration=20sur=20TB=5FArchives=5Ftrai?= =?UTF-8?q?tees=20(chantier=20archivage=20flotte,=20cf=20synth=C3=A8se=20?= =?UTF-8?q?=C2=A735)=20-=20test=C3=A9=20sur=20ship2net=5Ftest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/table_generations.sql | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sql/table_generations.sql diff --git a/sql/table_generations.sql b/sql/table_generations.sql new file mode 100644 index 0000000..4d984e4 --- /dev/null +++ b/sql/table_generations.sql @@ -0,0 +1,27 @@ +-- ============================================================================ +-- TB_Generations_bateau : suit, pour chaque bateau, la base MariaDB +-- actuellement "active" (ship2net_bateau__) et l'historique +-- des générations précédentes, jamais supprimées (cf synthèse §35). +-- Même technique qu'TB_Affectations_bateau pour garantir au plus une +-- génération active par bateau, au niveau base. +-- ============================================================================ +CREATE TABLE `TB_Generations_bateau` ( + `Cle_primaire` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `ID_Bateau` INT UNSIGNED NOT NULL COMMENT 'Clé_primaire dans TB_Bateaux', + `Numero_generation` INT UNSIGNED NOT NULL COMMENT 'Démarre à 1 pour chaque bateau, incrémenté à chaque nouvelle génération', + `Nom_base` VARCHAR(80) NOT NULL COMMENT 'ship2net_bateau__', + `Motif` ENUM('creation_initiale', 'factory', 'restauration') NOT NULL, + `Date_debut` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Date_fin` DATETIME NULL DEFAULT NULL COMMENT 'NULL = génération active', + `ID_Bateau_actif` INT UNSIGNED GENERATED ALWAYS AS (IF(`Date_fin` IS NULL, `ID_Bateau`, NULL)) VIRTUAL, + PRIMARY KEY (`Cle_primaire`), + UNIQUE KEY `uniq_bateau_actif` (`ID_Bateau_actif`), + UNIQUE KEY `uniq_bateau_numero` (`ID_Bateau`, `Numero_generation`), + UNIQUE KEY `uniq_nom_base` (`Nom_base`), + CONSTRAINT `fk_generation_bateau` FOREIGN KEY (`ID_Bateau`) REFERENCES `TB_Bateaux` (`Cle_primaire`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- Traçabilité : dans quelle génération une archive a été chargée. +ALTER TABLE `TB_Archives_traitees` + ADD COLUMN `ID_Generation` INT UNSIGNED NULL DEFAULT NULL COMMENT 'Renseigné une fois la génération résolue - cf TB_Generations_bateau' AFTER `ID_Bateau_final`, + ADD CONSTRAINT `fk_archive_generation` FOREIGN KEY (`ID_Generation`) REFERENCES `TB_Generations_bateau` (`Cle_primaire`) ON DELETE RESTRICT ON UPDATE RESTRICT;