-- Création de la table PERSONNES
CREATE TABLE PERSONNES (
id_personne INT NOT NULL,
nom VARCHAR(255),
prenom VARCHAR(255),
mail VARCHAR(255),
telephone CHAR(20),
date_de_naissance DATE,
lien_portfolie VARCHAR(512),
PRIMARY KEY (id_personne)
);
-- Création de la table HACKATONS
CREATE TABLE HACKATONS (
id_hackaton INT NOT NULL,
nom VARCHAR(255),
nombre_places INT UNSIGNED,
date_limite DATE,
description VARCHAR(2048),
PRIMARY KEY (id_hackaton)
);
-- Création de la table PHASES
CREATE TABLE PHASES (
id_phase INT NOT NULL,
id_hackaton INT,
heure_debut DATETIME,
heure_fin DATETIME,
description VARCHAR(512),
PRIMARY KEY (id_phase),
FOREIGN KEY (id_hackaton) REFERENCES HACKATONS(id_hackaton)
);
-- Création de la table PROJETS
CREATE TABLE PROJETS (
id_projet INT NOT NULL,
nom VARCHAR(255),
description VARCHAR(1024),
PRIMARY KEY (id_projet)
);
-- Création de la table EQUIPES
CREATE TABLE EQUIPES (
id_equipes INT NOT NULL,
id_coach INT,
id_chef_de_projet INT,
id_hackaton INT,
id_projet INT,
nom VARCHAR(255),
lien_prototype VARCHAR(512),
PRIMARY KEY (id_equipes),
FOREIGN KEY (id_coach) REFERENCES PERSONNES(id_personne),
FOREIGN KEY (id_chef_de_projet) REFERENCES PERSONNES(id_personne),
FOREIGN KEY (id_hackaton) REFERENCES HACKATONS(id_hackaton),
FOREIGN KEY (id_projet) REFERENCES PROJETS(id_projet)
);
-- Création de la table JURYS
CREATE TABLE JURYS (
id_jury INT NOT NULL,
id_hackaton INT,
PRIMARY KEY (id_jury),
FOREIGN KEY (id_hackaton) REFERENCES HACKATONS(id_hackaton)
);
-- Création de la table JURYS_EQUIPES (table de liaison)
CREATE TABLE JURYS_EQUIPES (
id_jury INT NOT NULL,
id_equipes INT NOT NULL,
note INT,
PRIMARY KEY (id_jury, id_equipes),
FOREIGN KEY (id_jury) REFERENCES JURYS(id_jury),
FOREIGN KEY (id_equipes) REFERENCES EQUIPES(id_equipes)
);
-- Création de la table JURYS_PERSONNES (table de liaison)
CREATE TABLE JURYS_PERSONNES (
id_personne INT NOT NULL,
id_jury INT NOT NULL,
PRIMARY KEY (id_personne, id_jury),
FOREIGN KEY (id_personne) REFERENCES PERSONNES(id_personne),
FOREIGN KEY (id_jury) REFERENCES JURYS(id_jury)
);
-- Création de la table PERSONNES_EQUIPES (table de liaison)
CREATE TABLE PERSONNES_EQUIPES (
id_equipes INT NOT NULL,
id_personne INT NOT NULL,
PRIMARY KEY (id_equipes, id_personne),
FOREIGN KEY (id_equipes) REFERENCES EQUIPES(id_equipes),
FOREIGN KEY (id_personne) REFERENCES PERSONNES(id_personne)
);
-- Création de la table PERSONNES_HACKATONS (table de liaison)
CREATE TABLE PERSONNES_HACKATONS (
id_personne INT NOT NULL,
id_hackaton INT NOT NULL,
date_inscription DATETIME,
comptence VARCHAR(255),
PRIMARY KEY (id_personne, id_hackaton),
FOREIGN KEY (id_personne) REFERENCES PERSONNES(id_personne),
FOREIGN KEY (id_hackaton) REFERENCES HACKATONS(id_hackaton)
);
-- 1. Insertion des personnes (150 personnes)
INSERT INTO PERSONNES (id_personne, nom, prenom, mail, telephone, date_de_naissance, lien_portfolie)
VALUES
-- Les 50 premières personnes (développeurs)
(1, 'Martin', 'Jean', 'jean.martin@email.com', '0612345678', '1990-05-15', 'https://portfolio.com/jeanmartin'),
(2, 'Bernard', 'Pierre', 'pierre.bernard@email.com', '0623456789', '1992-08-20', 'https://portfolio.com/pierrebernard'),
-- ... (47 autres développeurs) ...
(50, 'Petit', 'Luc', 'luc.petit@email.com', '0698765432', '1995-11-30', 'https://portfolio.com/lucpetit'),
-- 50 coaches/chefs de projet
(51, 'Durand', 'Marie', 'marie.durand@email.com', '0611223344', '1985-03-10', 'https://portfolio.com/mariedurand'),
(52, 'Leroy', 'Sophie', 'sophie.leroy@email.com', '0622334455', '1988-07-22', 'https://portfolio.com/sophieleroy'),
-- ... (47 autres coaches/chefs) ...
(100, 'Moreau', 'Julie', 'julie.moreau@email.com', '0699887766', '1989-09-05', 'https://portfolio.com/juliemoreau'),
-- 50 membres de jury
(101, 'Lefebvre', 'Thomas', 'thomas.lefebvre@email.com', '0612348765', '1980-01-25', 'https://portfolio.com/thomaslefebvre'),
(102, 'Roux', 'Nicolas', 'nicolas.roux@email.com', '0623459876', '1982-04-18', 'https://portfolio.com/nicolasroux'),
-- ... (47 autres jurys) ...
(150, 'Girard', 'Eric', 'eric.girard@email.com', '0698761234', '1975-12-12', 'https://portfolio.com/ericgirard');
-- 2. Insertion des hackathons (20 hackathons)
INSERT INTO HACKATONS (id_hackaton, nom, nombre_places, date_limite, description)
VALUES
(1, 'Hackathon IA 2023', 100, '2023-03-15', 'Développez des solutions innovantes en intelligence artificielle'),
(2, 'EcoHack 2023', 80, '2023-04-20', 'Trouvez des solutions technologiques pour l\'environnement'),
-- ... (18 autres hackathons) ...
(20, 'FinTech Challenge 2024', 120, '2024-02-10', 'Innovation dans les technologies financières');
-- 3. Insertion des phases pour chaque hackathon (2-5 phases par hackathon)
INSERT INTO PHASES (id_phase, id_hackaton, heure_debut, heure_fin, description)
VALUES
-- Phases pour le hackathon 1
(1, 1, '2023-03-20 09:00:00', '2023-03-20 12:00:00', 'Phase de brainstorming et formation des équipes'),
(2, 1, '2023-03-20 13:00:00', '2023-03-21 18:00:00', 'Développement des projets'),
(3, 1, '2023-03-22 09:00:00', '2023-03-22 12:00:00', 'Présentations et démonstrations'),
-- Phases pour le hackathon 2
(4, 2, '2023-04-25 10:00:00', '2023-04-25 13:00:00', 'Introduction et ateliers'),
(5, 2, '2023-04-25 14:00:00', '2023-04-26 17:00:00', 'Développement des solutions'),
-- ... (phases pour les autres hackathons) ...
(78, 20, '2024-02-15 09:00:00', '2024-02-15 12:00:00', 'Préparation initiale'),
(79, 20, '2024-02-15 13:00:00', '2024-02-16 18:00:00', 'Implémentation technique'),
(80, 20, '2024-02-17 09:00:00', '2024-02-17 12:00:00', 'Tests et optimisation');
-- 4. Insertion des projets (2-5 projets par hackathon)
INSERT INTO PROJETS (id_projet, nom, description)
VALUES
-- Projets pour le hackathon 1
(1, 'AI Helper', 'Assistant intelligent pour la productivité'),
(2, 'DeepVision', 'Solution de vision par ordinateur avancée'),
(3, 'NeuralMed', 'Diagnostic médical assisté par IA'),
-- Projets pour le hackathon 2
(4, 'EcoTrack', 'Suivi de l\'impact environnemental personnel'),
(5, 'GreenAI', 'Optimisation énergétique par IA'),
-- ... (projets pour les autres hackathons) ...
(78, 'PaySecure', 'Solution de paiement sécurisée'),
(79, 'InvestAI', 'Assistant d\'investissement intelligent'),
(80, 'BlockChainPay', 'Paiements en blockchain');
-- 5. Insertion des équipes (5 équipes par hackathon)
-- Nous allons créer 100 équipes (5 par hackathon × 20 hackathons)
INSERT INTO EQUIPES (id_equipes, id_coach, id_chef_de_projet, id_hackaton, id_projet, nom, lien_prototype)
VALUES
-- Équipes pour le hackathon 1
(1, 51, 52, 1, 1, 'Les Génies de l\'IA', 'https://prototype.com/genies-ia'),
(2, 53, 54, 1, 2, 'Neuron Warriors', 'https://prototype.com/neuron-warriors'),
(3, 55, 56, 1, 3, 'Deep Learners', 'https://prototype.com/deep-learners'),
(4, 57, 58, 1, NULL, 'AI Masters', NULL),
(5, 59, 60, 1, NULL, 'Data Scientists', NULL),
-- Équipes pour le hackathon 2
(6, 61, 62, 2, 4, 'Éco-Guerriers', 'https://prototype.com/eco-guerriers'),
-- ... (équipes pour les autres hackathons) ...
(100, 100, 99, 20, 80, 'FinTech Masters', 'https://prototype.com/fintech-masters');
-- 6. Insertion dans PERSONNES_HACKATONS (tous les participants)
-- Pour chaque équipe, nous ajoutons ses membres (3-8 personnes)
-- Exemple pour l'équipe 1 (6 membres)
INSERT INTO PERSONNES_HACKATONS (id_personne, id_hackaton, date_inscription, comptence)
VALUES
-- Membres de l'équipe 1
(1, 1, '2023-03-01 10:00:00', 'Développement Python'),
(2, 1, '2023-03-01 10:05:00', 'Machine Learning'),
(3, 1, '2023-03-01 10:10:00', 'Traitement des données'),
(4, 1, '2023-03-01 10:15:00', 'Interface utilisateur'),
(5, 1, '2023-03-01 10:20:00', 'Backend développement'),
(6, 1, '2023-03-01 10:25:00', 'DevOps'),
-- Membres de l'équipe 2
(7, 1, '2023-03-01 11:00:00', 'Vision par ordinateur'),
-- ... (inscriptions pour toutes les équipes) ...
(150, 20, '2024-01-15 09:00:00', 'Analyse financière');
-- 7. Insertion dans PERSONNES_EQUIPES (liaison personnes-équipes)
INSERT INTO PERSONNES_EQUIPES (id_equipes, id_personne)
VALUES
-- Équipe 1
(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6),
-- Équipe 2
(2, 7), (2, 8), (2, 9), (2, 10),
-- ... (membres pour toutes les équipes) ...
(100, 145), (100, 146), (100, 147), (100, 148), (100, 149);
-- 8. Insertion des jurys (3 jurys par hackathon)
INSERT INTO JURYS (id_jury, id_hackaton)
VALUES
-- Jurys pour le hackathon 1
(1, 1), (2, 1), (3, 1),
-- Jurys pour le hackathon 2
(4, 2), (5, 2), (6, 2),
-- ... (jurys pour les autres hackathons) ...
(58, 20), (59, 20), (60, 20);
-- 9. Insertion dans JURYS_PERSONNES (composition des jurys)
INSERT INTO JURYS_PERSONNES (id_personne, id_jury)
VALUES
-- Jury 1 (3 personnes)
(101, 1), (102, 1), (103, 1),
-- Jury 2 (2 personnes)
(104, 2), (105, 2),
-- ... (composition de tous les jurys) ...
(150, 60);
-- 10. Insertion dans JURYS_EQUIPES (évaluations)
INSERT INTO JURYS_EQUIPES (id_jury, id_equipes, note)
VALUES
-- Évaluations du jury 1
(1, 1, 85), (1, 2, 78), (1, 3, 92),
-- Évaluations du jury 2
(2, 1, 80), (2, 2, 75), (2, 3, 88),
-- ... (évaluations pour tous les jurys) ...
(60, 100, 90);