Skip to content
Snippets Groups Projects
Commit 66334cc9 authored by Othemane KHACHNANE's avatar Othemane KHACHNANE
Browse files

version corriger avec likes

parent 1aa3a0bd
Branches
No related tags found
No related merge requests found
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
DROP TABLE IF EXISTS Abonnement;
DROP TABLE IF EXISTS Message;
DROP TABLE IF EXISTS FilDeDiscussion;
DROP TABLE IF EXISTS Utilisateur;
CREATE TABLE Utilisateur (
email VARCHAR(100) UNIQUE NOT NULL,
nom VARCHAR(100) NOT NULL,
motDePasse VARCHAR(255) NOT NULL,
dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT pk_utilisateur PRIMARY KEY (email)
);
CREATE TABLE FilDeDiscussion (
id SERIAL,
nom VARCHAR(100) NOT NULL,
dateCreation TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
createurEmail VARCHAR(100),
description TEXT,
CONSTRAINT pk_fil PRIMARY KEY (id),
CONSTRAINT fk_createur FOREIGN KEY (createurEmail) REFERENCES Utilisateur(email)
ON DELETE SET NULL
);
CREATE TABLE Message (
id SERIAL,
contenu TEXT NOT NULL,
datePublication TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
filId INTEGER,
auteurEmail VARCHAR(100),
fileName VARCHAR(255),
CONSTRAINT pk_message PRIMARY KEY (id),
CONSTRAINT fk_fil FOREIGN KEY (filId) REFERENCES FilDeDiscussion(id)
ON DELETE CASCADE,
CONSTRAINT fk_auteur FOREIGN KEY (auteurEmail) REFERENCES Utilisateur(email)
ON DELETE SET NULL
);
CREATE TABLE Abonnement (
utilisateurEmail VARCHAR(100),
filId INTEGER,
dateAbonnement TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT pk_abonnement PRIMARY KEY (utilisateurEmail, filId),
CONSTRAINT fk_utilisateur FOREIGN KEY (utilisateurEmail) REFERENCES Utilisateur(email)
ON DELETE CASCADE,
CONSTRAINT fk_fil FOREIGN KEY (filId) REFERENCES FilDeDiscussion(id)
ON DELETE CASCADE
);
-- Insertion des utilisateurs
INSERT INTO Utilisateur (email, nom, motDePasse)
VALUES
('utilisateur1@exemple.com', 'Utilisateur 1', MD5('motdepasse123')),
('utilisateur2@exemple.com', 'Utilisateur 2', MD5('motdepasse123')),
('utilisateur3@exemple.com', 'Utilisateur 3', MD5('motdepasse123'));
-- Insertion des fils de discussion
INSERT INTO FilDeDiscussion (nom, createurEmail, description)
VALUES
('Discussion Générale', 'utilisateur1@exemple.com', 'Un fil pour discuter de tout et de rien.'),
('Tech Talk', 'utilisateur2@exemple.com', 'Discussions sur les dernières technologies.'),
('Sports', 'utilisateur3@exemple.com', 'Discussions sur les sports et les événements sportifs.');
-- Insertion des messages
INSERT INTO Message (contenu, filId, auteurEmail, fileName) VALUES
('Bonjour, ceci est mon premier message !', 1, 'utilisateur1@exemple.com', NULL),
('Quelquun a des nouvelles sur la dernière mise à jour de Java ?', 2, 'utilisateur2@exemple.com', NULL),
('Qui a regardé le match hier soir ?', 3, 'utilisateur3@exemple.com', NULL),
('Bienvenue à tous dans ce fil de discussion !', 1, 'utilisateur2@exemple.com', NULL),
('Je pense que la nouvelle version de Python est géniale.', 2, 'utilisateur3@exemple.com', NULL),
('Le match était incroyable, quelle performance !', 3, 'utilisateur1@exemple.com', NULL);
-- Insertion des abonnements
INSERT INTO Abonnement (utilisateurEmail, filId)
VALUES
('utilisateur1@exemple.com', 1),
('utilisateur1@exemple.com', 2),
('utilisateur2@exemple.com', 1),
('utilisateur2@exemple.com', 3),
('utilisateur3@exemple.com', 2),
('utilisateur3@exemple.com', 3);
-- Lister tous les utilisateurs :
-- SELECT * FROM Utilisateur;
-- Lister tous les fils de discussion avec le nom du créateur :
-- SELECT f.id, f.nom, u.nom AS nomCreateur
-- FROM FilDeDiscussion f
-- JOIN Utilisateur u ON f.createurEmail = u.email;
-- Lister tous les messages d'un fil de discussion spécifique avec le nom de l'auteur :
-- SELECT m.contenu, u.nom AS nomAuteur, m.datePublication
-- FROM Message m
-- JOIN Utilisateur u ON m.auteurEmail = u.email
-- WHERE m.filId = 1
-- ORDER BY m.datePublication;
-- Lister tous les abonnements d'un utilisateur spécifique :
-- SELECT f.nom AS nomFil, a.dateAbonnement
-- FROM Abonnement a
-- JOIN FilDeDiscussion f ON a.filId = f.id
-- WHERE a.utilisateurEmail = 'utilisateur1@exemple.com';
-- Lister les fils de discussion auxquels un utilisateur n'est pas abonné :
-- SELECT f.id, f.nom
-- FROM FilDeDiscussion f
-- LEFT JOIN Abonnement a ON f.id = a.filId AND a.utilisateurEmail = 'utilisateur1@exemple.com'
-- WHERE a.utilisateurEmail IS NULL;
-- Compter le nombre de messages par fil de discussion :
-- SELECT f.nom AS nomFil, COUNT(m.id) AS nombreMessages
-- FROM FilDeDiscussion f
-- LEFT JOIN Message m ON f.id = m.filId
-- GROUP BY f.nom;
-- Trouver les utilisateurs qui ont publié des messages dans un fil spécifique :
-- SELECT DISTINCT u.nom, u.email
-- FROM Utilisateur u
-- JOIN Message m ON u.email = m.auteurEmail
-- WHERE m.filId = 1;
-- Lister les 5 derniers messages publiés dans un fil de discussion :
-- SELECT m.contenu, u.nom AS nomAuteur, m.datePublication
-- FROM Message m
-- JOIN Utilisateur u ON m.auteurEmail = u.email
-- WHERE m.filId = 1
-- ORDER BY m.datePublication DESC
-- LIMIT 5;
-- Compter le nombre d'abonnés par fil de discussion :
-- SELECT f.nom AS nomFil, COUNT(a.utilisateurEmail) AS nombreAbonnes
-- FROM FilDeDiscussion f
-- LEFT JOIN Abonnement a ON f.id = a.filId
-- GROUP BY f.nom;
-- Lister les utilisateurs qui ne sont abonnés à aucun fil de discussion :
-- SELECT u.email, u.nom
-- FROM Utilisateur u
-- LEFT JOIN Abonnement a ON u.email = a.utilisateurEmail
-- WHERE a.utilisateurEmail IS NULL;
\ No newline at end of file
uploads/Abr.png

22.2 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment