From f78769476124f0cc2b3281101b40653d5a95a51d Mon Sep 17 00:00:00 2001 From: Morph01 <145839520+Morph01@users.noreply.github.com> Date: Fri, 5 Apr 2024 01:51:37 +0200 Subject: [PATCH] Add SQL scripts for dataset migration 23/31 75% --- FAIT.pdf | Bin 0 -> 37371 bytes sql/script_creation_dataset.sql | 533 ++++++++++++++++++-------------- sql/script_migration_data.sql | 298 +++++++++++++++--- 3 files changed, 555 insertions(+), 276 deletions(-) create mode 100644 FAIT.pdf diff --git a/FAIT.pdf b/FAIT.pdf new file mode 100644 index 0000000000000000000000000000000000000000..201b21f59aedb06f561a344946ada7bed4cbf37b GIT binary patch literal 37371 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 literal 0 HcmV?d00001 diff --git a/sql/script_creation_dataset.sql b/sql/script_creation_dataset.sql index 4aea543..1bb42cd 100644 --- a/sql/script_creation_dataset.sql +++ b/sql/script_creation_dataset.sql @@ -1,285 +1,340 @@ -CREATE TABLE classement ( - PRIMARY KEY (idclassement), - idclassement INTEGER AUTO_INCREMENT, - nom VARCHAR(42), - portee VARCHAR(42) -); +-- Generated by Mocodo 4.2.4 +CREATE TABLE + carte ( + PRIMARY KEY (idcarte), + idcarte INTEGER NOT NULL, + niveau VARCHAR(42), + img VARCHAR(42), + points VARCHAR(42) + ); -CREATE TABLE classement_equipe ( - PRIMARY KEY (idclassement), - idclassement INTEGER AUTO_INCREMENT -); +CREATE TABLE + choisit_main ( + PRIMARY KEY (idjoueur, idpartie, num_tour), + idjoueur INTEGER NOT NULL, + idpartie INTEGER NOT NULL, + num_tour INTEGER NOT NULL, + nb_de_rouge VARCHAR(42), + nb_de_jaune VARCHAR(42), + nb_de_bleu VARCHAR(42) + ); -CREATE TABLE classement_individuel ( - PRIMARY KEY (idclassement), - idclassement INTEGER AUTO_INCREMENT -); +CREATE TABLE + classement ( + PRIMARY KEY (idclassement), + idclassement INTEGER AUTO_INCREMENT, + nom VARCHAR(42), + portee VARCHAR(42) + ); -CREATE TABLE equipe ( - PRIMARY KEY (idequipe), - idequipe INTEGER AUTO_INCREMENT, - nom VARCHAR(42) -); +CREATE TABLE + classement_individuel ( + PRIMARY KEY (idclassement, idjoueur), + idclassement INTEGER AUTO_INCREMENT, + idjoueur INTEGER NOT NULL, + rang INTEGER DEFAULT NULL + ); -CREATE TABLE est_classe ( - PRIMARY KEY (idjoueur, idclassement), - idjoueur INTEGER NOT NULL, - idclassement INTEGER NOT NULL, - rang VARCHAR(42) -); +CREATE TABLE + comprend ( + PRIMARY KEY (idpartie, num_tour, idlancer), + idpartie INTEGER NOT NULL, + num_tour INTEGER NOT NULL, + idlancer INTEGER NOT NULL + ); -CREATE TABLE est_lie_a ( - PRIMARY KEY (idclassement_composee, idclassement_composante), - idclassement_composee INTEGER, - idclassement_composante INTEGER, - quantite VARCHAR(42) -); +CREATE TABLE + contrainte ( + PRIMARY KEY (idcontrainte), + idcontrainte INTEGER NOT NULL, + couleur VARCHAR(42) + ); -CREATE TABLE joueur ( - PRIMARY KEY (idjoueur), - idjoueur INTEGER AUTO_INCREMENT, - nom VARCHAR(42), - prenom VARCHAR(42), - pseudo VARCHAR(42), - annee_nais YEAR, - email VARCHAR(80), - idequipe INTEGER NULL DEFAULT NULL -); +CREATE TABLE + de_lance ( + PRIMARY KEY (idlancer, rang_couleur_valeur), + idlancer INTEGER NOT NULL, + rang_couleur_valeur VARCHAR(42) NOT NULL + ); -CREATE TABLE participe ( - PRIMARY KEY (idtournoi, niveau, idjoueur), - idtournoi INTEGER NOT NULL, - niveau VARCHAR(42) NOT NULL, - idjoueur INTEGER NOT NULL, - a_joue VARCHAR(42), - est_qualifie VARCHAR(42) -); +CREATE TABLE + effectue ( + PRIMARY KEY (idjoueur, idlancer), + idjoueur INTEGER NOT NULL, + idlancer INTEGER NOT NULL + ); -CREATE TABLE phase ( - PRIMARY KEY (idtournoi, niveau), - idtournoi INTEGER AUTO_INCREMENT, - niveau VARCHAR(42) NOT NULL, - date_p DATE -); +CREATE TABLE + equipe ( + PRIMARY KEY (idequipe), + idequipe INTEGER AUTO_INCREMENT, + nom VARCHAR(42) + ); -CREATE TABLE sont_classes ( - PRIMARY KEY (idequipe, idclassement), - idequipe INTEGER NOT NULL, - idclassement INTEGER NOT NULL, - rang VARCHAR(42) -); +CREATE TABLE + classement_equipe ( + PRIMARY KEY (idclassement, idequipe), + idclassement INTEGER AUTO_INCREMENT, + idequipe INTEGER NOT NULL, + rang INTEGER DEFAULT NULL + ); -CREATE TABLE tournoi ( - PRIMARY KEY (idtournoi), - idtournoi INTEGER AUTO_INCREMENT, - nom VARCHAR(42), - date_deb DATE, - date_fin DATE -); +CREATE TABLE + est_classe ( + PRIMARY KEY (idjoueur, idclassement), + idjoueur INTEGER NOT NULL, + idclassement INTEGER NOT NULL, + rang VARCHAR(42) + ); -ALTER TABLE - classement_equipe -ADD - FOREIGN KEY (idclassement) REFERENCES classement (idclassement); +CREATE TABLE + est_compose ( + PRIMARY KEY (idcarte, idplateau), + idcarte INTEGER NOT NULL, + idplateau INTEGER NOT NULL, + rang VARCHAR(42) + ); -ALTER TABLE - classement_individuel -ADD - FOREIGN KEY (idclassement) REFERENCES classement (idclassement); +CREATE TABLE + est_contrainte ( + PRIMARY KEY (idcarte, idcontrainte), + idcarte INTEGER NOT NULL, + idcontrainte INTEGER NOT NULL + ); -ALTER TABLE - est_classe -ADD - FOREIGN KEY (idclassement) REFERENCES classement_individuel (idclassement); +CREATE TABLE + est_en_lien ( + PRIMARY KEY (idclassement_1, idclassement_2), + idclassement_1 INTEGER NOT NULL, + idclassement_2 INTEGER NOT NULL, + rang VARCHAR(42) + ); -ALTER TABLE - est_classe -ADD - FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); +CREATE TABLE + est_en_position ( + PRIMARY KEY (idjoueur, idcarte, idpartie, num_tour), + idjoueur INTEGER NOT NULL, + idcarte INTEGER NOT NULL, + idpartie INTEGER NOT NULL, + num_tour INTEGER NOT NULL, + position VARCHAR(42) + ); -ALTER TABLE - est_lie_a -ADD - FOREIGN KEY (idclassement_composante) REFERENCES classement (idclassement); +CREATE TABLE + est_lie_a ( + PRIMARY KEY (idclassement_composee, idclassement_composante), + idclassement_composee INTEGER, + idclassement_composante INTEGER, + quantite VARCHAR(42) + ); -ALTER TABLE - est_lie_a -ADD - FOREIGN KEY (idclassement_composee) REFERENCES classement (idclassement); +CREATE TABLE + face_de_de ( + PRIMARY KEY (idcontrainte), + idcontrainte INTEGER NOT NULL, + valeur VARCHAR(42) + ); -ALTER TABLE - joueur -ADD - FOREIGN KEY (idequipe) REFERENCES equipe (idequipe); +CREATE TABLE + joue ( + PRIMARY KEY (idjoueur, idpartie), + idjoueur INTEGER NOT NULL, + idpartie INTEGER NOT NULL, + couleur_pion VARCHAR(42), + rang VARCHAR(42) + ); -ALTER TABLE - participe -ADD - FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); +CREATE TABLE + joueur ( + PRIMARY KEY (idjoueur), + idjoueur INTEGER AUTO_INCREMENT, + nom VARCHAR(42), + prenom VARCHAR(42), + pseudo VARCHAR(42), + annee_nais YEAR, + email VARCHAR(80), + idequipe INTEGER NULL DEFAULT NULL + ); -ALTER TABLE - participe -ADD - FOREIGN KEY (idtournoi, niveau) REFERENCES phase (idtournoi, niveau); +CREATE TABLE + meme_au_choix ( + PRIMARY KEY (idcontrainte), + idcontrainte INTEGER NOT NULL, + nombre VARCHAR(42), + couleur VARCHAR(42) + ); -ALTER TABLE - phase -ADD - FOREIGN KEY (idtournoi) REFERENCES tournoi (idtournoi); +CREATE TABLE + participe ( + PRIMARY KEY (idtournoi, niveau, idjoueur), + idtournoi INTEGER, + niveau VARCHAR(42), + idjoueur INTEGER NOT NULL, + a_joue tinyint (1) DEFAULT NULL, + est_qualifie tinyint (1) DEFAULT NULL + ); -ALTER TABLE - sont_classes -ADD - FOREIGN KEY (idclassement) REFERENCES classement_equipe (idclassement); +CREATE TABLE + partie ( + PRIMARY KEY (idpartie), + idpartie INTEGER NOT NULL, + date_partie VARCHAR(42), + horaire VARCHAR(42), + duree VARCHAR(42), + etat VARCHAR(42), + idplateau INTEGER, + idtournoi INTEGER, + niveau VARCHAR(42), + UNIQUE (idtournoi, niveau) + ); -ALTER TABLE - sont_classes -ADD - FOREIGN KEY (idequipe) REFERENCES equipe (idequipe); +CREATE TABLE + phase ( + PRIMARY KEY (idtournoi, niveau), + idtournoi INTEGER AUTO_INCREMENT, + niveau VARCHAR(42), + date_p DATE + ); -CREATE TABLE comprend ( - PRIMARY KEY (idpartie, num_tour, idlancer), - idpartie INTEGER NOT NULL, - num_tour INTEGER NOT NULL, - idlancer INTEGER NOT NULL -); +CREATE TABLE + plateau ( + PRIMARY KEY (idplateau), + idplateau INTEGER AUTO_INCREMENT, + taille VARCHAR(42) + ); -CREATE TABLE effectue ( - PRIMARY KEY (rang_couleur_valeur, idjoueur, idlancer), - rang_couleur_valeur VARCHAR(42) NOT NULL, - idjoueur INTEGER NOT NULL, - idlancer INTEGER NOT NULL -); +CREATE TABLE + serie_au_choix ( + PRIMARY KEY (idcontrainte), + idcontrainte INTEGER NOT NULL, + nombre VARCHAR(42) + ); -CREATE TABLE partie ( - PRIMARY KEY (idpartie), - idpartie INTEGER AUTO_INCREMENT, - date_partie DATE, - horaire VARCHAR(42), - duree VARCHAR(42), - etat VARCHAR(42) -); +CREATE TABLE + seuil_de_des ( + PRIMARY KEY (idcontrainte), + idcontrainte INTEGER AUTO_INCREMENT, + valeur VARCHAR(42), + sens VARCHAR(42) + ); -CREATE TABLE tour ( - PRIMARY KEY (idpartie, num_tour), - num_tour INTEGER NOT NULL, - idpartie INTEGER NOT NULL -); +CREATE TABLE + sont_classes ( + PRIMARY KEY (idequipe, idclassement), + idequipe INTEGER NOT NULL, + idclassement INTEGER NOT NULL, + rang VARCHAR(42) + ); -ALTER TABLE - comprend -ADD - FOREIGN KEY (idpartie, num_tour) REFERENCES tour (idpartie, num_tour); +CREATE TABLE + tente_validation ( + PRIMARY KEY (idpartie, num_tour, idjoueur, idcarte), + idpartie INTEGER NOT NULL, + num_tour INTEGER NOT NULL, + idjoueur INTEGER NOT NULL, + idcarte INTEGER NOT NULL, + nb_tentatives VARCHAR(42) + ); -ALTER TABLE - effectue -ADD - FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); +CREATE TABLE + tour ( + PRIMARY KEY (idpartie, num_tour), + idpartie INTEGER NOT NULL, + num_tour INTEGER NOT NULL + ); -ALTER TABLE - tour -ADD - FOREIGN KEY (idpartie) REFERENCES partie (idpartie); +CREATE TABLE + tournoi ( + PRIMARY KEY (idtournoi), + idtournoi INTEGER AUTO_INCREMENT, + nom VARCHAR(42), + date_deb DATE, + date_fin DATE + ); -CREATE TABLE carte ( - PRIMARY KEY (idcarte), - idcarte INTEGER AUTO_INCREMENT, - niveau VARCHAR(42), - img VARCHAR(42), - points VARCHAR(42) -); +CREATE TABLE + valide ( + PRIMARY KEY (idcontrainte, idlancer), + idcontrainte INTEGER NOT NULL, + idlancer INTEGER NOT NULL + ); -CREATE TABLE est_compose ( - PRIMARY KEY (idcarte, idplateau), - idcarte INTEGER NOT NULL, - idplateau INTEGER NOT NULL, - rang VARCHAR(42) -); +ALTER TABLE choisit_main ADD FOREIGN KEY (idpartie, num_tour) REFERENCES tour (idpartie, num_tour); -CREATE TABLE plateau ( - PRIMARY KEY (idplateau), - idplateau INTEGER AUTO_INCREMENT, - taille VARCHAR(42) -); +ALTER TABLE choisit_main ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); -ALTER TABLE - est_compose -ADD - FOREIGN KEY (idplateau) REFERENCES plateau (idplateau); +ALTER TABLE classement_equipe ADD FOREIGN KEY (idclassement) REFERENCES classement (idclassement); -ALTER TABLE - est_compose -ADD - FOREIGN KEY (idcarte) REFERENCES carte (idcarte); +ALTER TABLE classement_equipe ADD FOREIGN KEY (idequipe) REFERENCES equipe (idequipe); -CREATE TABLE choisit_main ( - PRIMARY KEY (idjoueur, num_tour), - idjoueur INTEGER NOT NULL, - num_tour INTEGER NOT NULL, - nb_de_rouge VARCHAR(42), - nb_de_jaune VARCHAR(42), - nb_de_bleu VARCHAR(42) -); +ALTER TABLE classement_individuel ADD FOREIGN KEY (idclassement) REFERENCES classement (idclassement); -ALTER TABLE - choisit_main -ADD - FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); +ALTER TABLE classement_individuel ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); -CREATE TABLE tente_validation ( - PRIMARY KEY (num_tour, idjoueur, idcarte), - num_tour INTEGER NOT NULL, - idjoueur INTEGER NOT NULL, - idcarte INTEGER NOT NULL, - nb_tentatives VARCHAR(42) -); +ALTER TABLE comprend ADD FOREIGN KEY (idpartie, num_tour) REFERENCES tour (idpartie, num_tour); -ALTER TABLE - tente_validation -ADD - FOREIGN KEY (idcarte) REFERENCES carte (idcarte); +ALTER TABLE effectue ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); -ALTER TABLE - tente_validation -ADD - FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); +ALTER TABLE est_classe ADD FOREIGN KEY (idclassement) REFERENCES classement_individuel (idclassement); -CREATE TABLE contrainte ( - PRIMARY KEY (idcontrainte), - idcontrainte INTEGER AUTO_INCREMENT, - couleur VARCHAR(42) -); +ALTER TABLE est_classe ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); -CREATE TABLE face_de_de ( - PRIMARY KEY (idcontrainte), - idcontrainte INTEGER AUTO_INCREMENT, - valeur VARCHAR(42) -); +ALTER TABLE est_compose ADD FOREIGN KEY (idplateau) REFERENCES plateau (idplateau); -CREATE TABLE serie_au_choix ( - PRIMARY KEY (idcontrainte), - idcontrainte INTEGER AUTO_INCREMENT, - nombre VARCHAR(42) -); +ALTER TABLE est_compose ADD FOREIGN KEY (idcarte) REFERENCES carte (idcarte); -CREATE TABLE seuil_de_des ( - PRIMARY KEY (idcontrainte), - idcontrainte INTEGER AUTO_INCREMENT, - valeur VARCHAR(42), - sens VARCHAR(42) -); +ALTER TABLE est_contrainte ADD FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); -ALTER TABLE - face_de_de -ADD - FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); +ALTER TABLE est_contrainte ADD FOREIGN KEY (idcarte) REFERENCES carte (idcarte); -ALTER TABLE - serie_au_choix -ADD - FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); +ALTER TABLE est_en_lien ADD FOREIGN KEY (idclassement_2) REFERENCES classement (idclassement); -ALTER TABLE - seuil_de_des -ADD - FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); \ No newline at end of file +ALTER TABLE est_en_lien ADD FOREIGN KEY (idclassement_1) REFERENCES classement (idclassement); + +ALTER TABLE est_en_position ADD FOREIGN KEY (idpartie, num_tour) REFERENCES tour (idpartie, num_tour); + +ALTER TABLE est_en_position ADD FOREIGN KEY (idcarte) REFERENCES carte (idcarte); + +ALTER TABLE est_en_position ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); + +ALTER TABLE est_lie_a ADD FOREIGN KEY (idclassement_composante) REFERENCES classement (idclassement); + +ALTER TABLE est_lie_a ADD FOREIGN KEY (idclassement_composee) REFERENCES classement (idclassement); + +ALTER TABLE face_de_de ADD FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); + +ALTER TABLE joue ADD FOREIGN KEY (idpartie) REFERENCES partie (idpartie); + +ALTER TABLE joue ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); + +ALTER TABLE joueur ADD FOREIGN KEY (idequipe) REFERENCES equipe (idequipe); + +ALTER TABLE meme_au_choix ADD FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); + +ALTER TABLE participe ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); + +ALTER TABLE participe ADD FOREIGN KEY (idtournoi, niveau) REFERENCES phase (idtournoi, niveau); + +ALTER TABLE partie ADD FOREIGN KEY (idtournoi, niveau) REFERENCES phase (idtournoi, niveau); + +ALTER TABLE partie ADD FOREIGN KEY (idplateau) REFERENCES plateau (idplateau); + +ALTER TABLE phase ADD FOREIGN KEY (idtournoi) REFERENCES tournoi (idtournoi); + +ALTER TABLE serie_au_choix ADD FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); + +ALTER TABLE seuil_de_des ADD FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); + +ALTER TABLE sont_classes ADD FOREIGN KEY (idclassement) REFERENCES classement_equipe (idclassement); + +ALTER TABLE sont_classes ADD FOREIGN KEY (idequipe) REFERENCES equipe (idequipe); + +ALTER TABLE tente_validation ADD FOREIGN KEY (idcarte) REFERENCES carte (idcarte); + +ALTER TABLE tente_validation ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur); + +ALTER TABLE tente_validation ADD FOREIGN KEY (idpartie, num_tour) REFERENCES tour (idpartie, num_tour); + +ALTER TABLE tour ADD FOREIGN KEY (idpartie) REFERENCES partie (idpartie); + +ALTER TABLE valide ADD FOREIGN KEY (idcontrainte) REFERENCES contrainte (idcontrainte); \ No newline at end of file diff --git a/sql/script_migration_data.sql b/sql/script_migration_data.sql index 44306f7..5f3774f 100644 --- a/sql/script_migration_data.sql +++ b/sql/script_migration_data.sql @@ -1,27 +1,71 @@ INSERT INTO - `partie`( - `idpartie`, - `date_partie`, - `horaire`, - `duree`, - `etat` - ) -SELECT - DISTINCT id_partie, - dateP, - heureP, - ROUND(durée_secondes / 60), - CASE - état - WHEN 'T' THEN 'terminée' - WHEN 'AV' THEN 'a venir' - WHEN 'EC' THEN 'en cours' - END + `contrainte` (`idcontrainte`, `couleur`) +SELECT DISTINCT + id_contrainte, + couleur FROM - donnees_fournies.instances1; + donnees_fournies.instances2; INSERT INTO - `joueur`( + `carte` (`idcarte`, `niveau`, `img`, `points`) +SELECT DISTINCT + `id_carte`, + `niveau`, + `fichier`, + `points` +FROM + donnees_fournies.instances2; + +INSERT INTO + `classement` (`idclassement`, `nom`, `portee`) +SELECT DISTINCT + `idC`, + `nom`, + `portée` +FROM + donnees_fournies.classement; + +INSERT INTO + `equipe` (`idequipe`, `nom`) +SELECT DISTINCT + `idE`, + `nom` +FROM + donnees_fournies.équipe; + +INSERT INTO + `tournoi` (`idtournoi`, `nom`, `date_deb`, `date_fin`) +SELECT + `idT`, + `nom`, + `dateDeb`, + `dateFin` +FROM + donnees_fournies.tournoi; + +INSERT INTO + `joueur` ( + `idjoueur`, + `nom`, + `prenom`, + `pseudo`, + `annee_nais`, + `email`, + `idequipe` + ) +SELECT DISTINCT + idJ, + nom, + prénom, + pseudo, + YEAR (date_naiss), + email, + id_équipe +FROM + donnees_fournies.joueur; + +INSERT INTO + `joueur` ( `idjoueur`, `nom`, `prenom`, @@ -29,32 +73,212 @@ INSERT INTO `annee_nais`, `email` ) -SELECT - DISTINCT id_joueur, +SELECT DISTINCT + id_joueur, nom, prénom, pseudo, - YEAR(date_naiss), + YEAR (date_naiss), email +FROM + donnees_fournies.instances1 +WHERE + id_joueur > 10; + +INSERT INTO + `phase` (`idtournoi`, `niveau`, `date_p`) +SELECT + `idT`, + `niveau`, + `dateP` +FROM + donnees_fournies.phase; + +INSERT INTO + `classement_equipe` (`idclassement`, `idequipe`, `rang`) +SELECT + `idC`, + `idE`, + `rang` +FROM + donnees_fournies.classement_equipe; + +INSERT INTO + `partie` ( + `idpartie`, + `date_partie`, + `horaire`, + `duree`, + `etat`, + `idplateau`, + `idtournoi`, + `niveau` + ) +SELECT DISTINCT + id_partie, + dateP, + heureP, + ROUND(durée_secondes / 60), + CASE état + WHEN 'T' THEN 'terminée' + WHEN 'AV' THEN 'a venir' + WHEN 'EC' THEN 'en cours' + END, + NULL, + NULL, + NULL FROM donnees_fournies.instances1; INSERT INTO - `contrainte`(`idcontrainte`, `couleur`) + `participe` ( + `idtournoi`, + `niveau`, + `idjoueur`, + `a_joue`, + `est_qualifie` + ) SELECT - DISTINCT id_contrainte, - couleur + `idT`, + `niveau`, + `idJ`, + `a_joué`, + `est_qualifié` +FROM + donnees_fournies.participe; + +INSERT INTO + `est_en_lien` (`idclassement_1`, `idclassement_2`, `rang`) +SELECT + `idC1`, + `idC2`, + `type_lien` +FROM + donnees_fournies.est_en_lien; + +INSERT INTO + `tour` (`idpartie`, `num_tour`) +SELECT DISTINCT + `id_partie`, + `numTour` +FROM + donnees_fournies.instances3; + +INSERT INTO + `choisit_main` ( + `idjoueur`, + `idpartie`, + `num_tour`, + `nb_de_rouge`, + `nb_de_jaune`, + `nb_de_bleu` + ) +SELECT DISTINCT + `id_joueur`, + `id_partie`, + `numTour`, + `main_nb_rouge`, + `main_nb_jaune`, + `main_nb_bleu` +FROM + donnees_fournies.instances3; + +INSERT INTO + `classement_individuel` (`idclassement`, `idjoueur`, `rang`) +SELECT + `idC`, + `idJ`, + `rang` +FROM + donnees_fournies.classement_individuel; + +INSERT INTO + `est_contrainte` (`idcarte`, `idcontrainte`) +SELECT + `id_carte`, + `id_contrainte` FROM donnees_fournies.instances2; --- INSERT INTO --- `face_de_de`(`idcontrainte`, `valeur`) --- SELECT --- id_contrainte, --- valeur --- FROM --- donnees_fournies.instances2 --- WHERE --- nom = 'face_de_dé' --- YA UN GROS PROBLEME DANS LA BASE, QUAND YA PLUSIEURS DES DIFFERENTS L'ID CONTRAINTE QUI NE PEUX ETRE MULTIPLE A CAUSE DU PRIMARY KEY NE PERMET --- PAS DE MODELISER LES CARTES AVEC PLUSIEURS DES DE DIFFERENTES COULEURS (CAR ILS ONT PLUSIEURS CONTRAINTES) \ No newline at end of file +INSERT INTO + `face_de_de` (`idcontrainte`, `valeur`) +SELECT DISTINCT + `id_contrainte`, + `valeur` +FROM + donnees_fournies.instances2 +WHERE + nom = 'face_de_dé'; + +INSERT INTO + `serie_au_choix` (`idcontrainte`, `nombre`) +SELECT DISTINCT + `id_contrainte`, + `valeur` +FROM + donnees_fournies.instances2 +WHERE + nom = 'suite_au_choix'; + +INSERT INTO + `meme_au_choix` (`idcontrainte`, `nombre`, `couleur`) +SELECT DISTINCT + `id_contrainte`, + `valeur`, + `couleur` +FROM + donnees_fournies.instances2 +WHERE + nom = 'meme_au_choix'; + +INSERT INTO + `seuil_de_des` (`idcontrainte`, `valeur`, `sens`) +SELECT DISTINCT + `id_contrainte`, + `valeur`, + `sens` +FROM + donnees_fournies.instances2 +WHERE + nom = 'seuil_de_dé'; + +INSERT INTO + `tente_validation` ( + `idpartie`, + `num_tour`, + `idjoueur`, + `idcarte`, + `nb_tentatives` + ) +SELECT + `id_partie`, + `numTour`, + `id_joueur`, + `carteAvalider`, + COUNT(`numL`) as nb_tentatives +FROM + donnees_fournies.instances3 +GROUP BY + `id_partie`, + `id_joueur`, + `carteAvalider`; + +SET @row_number = 0; + +INSERT INTO `comprend`(`idpartie`, `num_tour`, `idlancer`) SELECT `id_partie`, `num_tour`, @row_number:=@row_number+1 AS idlancers +FROM donnees_fournies.instances3 t; + +SET @row_number = 0; +INSERT INTO `effectue`(`idjoueur`, `idlancer`) + +SELECT inst3.id_joueur, @row_number:=@row_number+1 AS idlancer +FROM donnees_fournies.instances3 inst3; + +SET @idlancer = 0; +INSERT INTO `de_lance`(`idlancer`, `rang_couleur_valeur`) +SELECT @idlancer:=@idlancer+1 AS idlancer, CONCAT('1;', de1) AS rang_couleur_valeur FROM `donnees_fournies`.`instances3` +UNION ALL SELECT @idlancer:=@idlancer+1, CONCAT('2;', de2) FROM `donnees_fournies`.`instances3` +UNION ALL SELECT @idlancer:=@idlancer+1, CONCAT('3;', de3) FROM `donnees_fournies`.`instances3` +UNION ALL SELECT @idlancer:=@idlancer+1, CONCAT('4;', de4) FROM `donnees_fournies`.`instances3` +UNION ALL SELECT @idlancer:=@idlancer+1, CONCAT('5;', de5) FROM `donnees_fournies`.`instances3` +UNION ALL SELECT @idlancer:=@idlancer+1, CONCAT('6;', de6) FROM `donnees_fournies`.`instances3`; \ No newline at end of file