Ajout de TB_Generations_bateau et de la colonne ID_Generation sur TB_Archives_traitees (chantier archivage flotte, cf synthèse §35) - testé sur ship2net_test
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- ============================================================================
|
||||
-- TB_Generations_bateau : suit, pour chaque bateau, la base MariaDB
|
||||
-- actuellement "active" (ship2net_bateau_<ID_Bateau>_<numero>) 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_<ID_Bateau>_<Numero_generation>',
|
||||
`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;
|
||||
Reference in New Issue
Block a user