par
sadeq » 16 juin 2013, 21:44
Bonjour,
Je ne suis pas d'accord avec ton MCD car tu n'as pas à gérer les envois et réception de messages mais les participation à une discussion. De ce fait, tu dois tout centraliser autours d'une entité "discussion" même si on peut dire qu'une discussion est un ensemble de messages. Ton modèle de données doit mettre en avant le fait qu'un utilisateur crée une discussion (sous forme de message initial) qui engendre des participations sous forme de réponses (messages concernant une discussion). Les messages de participation sont associés alors autour d'une discussion.
Ce qui donne le modèle MCD suivant :
http://dl.free.fr/fBCv7rMUH
Ce qui en découle le Modèle Relationnel de Données suivant : (les clés primaires sont en gras/souligné, les clés étrangères préfixées par un
#)
utilisateur (
idUtilisateur, nomUtilisateur, prenomUtilisateur, ...)
Discussion (
idDiscussion, date, sujet, contenu,
#idUtilisateur)
Participer (date, contenu,
#idDiscussion,
#idUtilisateur)
Selon ce modèle, la requête :
récupérer toutes les discussions classées par date de dernier message ce fait comme ça :
SELECT Discussion.idDiscussion, Discussion.date, Discussion.sujet, Discussion.contenu, u1.nomUtilisateur AS nomAuteur, u1.prenomUtilisateur AS prenomAuteur, Participer.date, Participer.contenu, u2.nomUtilisateur AS nomParticipant, u2.prenomUtilisateur AS prenomParticipant
FROM Discussion, utilisateur AS u1, Participer, utilisateur AS u2
WHERE Discussion.idUtilisateur = u1.idUtilisateur
AND Discussion.idDiscussion = Participer.idDiscussion
AND Participer.idUtilisateur = u2.idUtilisateur
GROUP BY Discussion.idDiscussion
ORDER BY Discussion.date DESC, Participer.date DESC;
Bonjour,
Je ne suis pas d'accord avec ton MCD car tu n'as pas à gérer les envois et réception de messages mais les participation à une discussion. De ce fait, tu dois tout centraliser autours d'une entité "discussion" même si on peut dire qu'une discussion est un ensemble de messages. Ton modèle de données doit mettre en avant le fait qu'un utilisateur crée une discussion (sous forme de message initial) qui engendre des participations sous forme de réponses (messages concernant une discussion). Les messages de participation sont associés alors autour d'une discussion.
Ce qui donne le modèle MCD suivant :
[url=http://dl.free.fr/fBCv7rMUH]http://dl.free.fr/fBCv7rMUH[/url]
Ce qui en découle le Modèle Relationnel de Données suivant : (les clés primaires sont en gras/souligné, les clés étrangères préfixées par un [b]#[/b])
utilisateur ([b][u]idUtilisateur[/u][/b], nomUtilisateur, prenomUtilisateur, ...)
Discussion ([u][b]idDiscussion[/b][/u], date, sujet, contenu, [b]#[/b]idUtilisateur)
Participer (date, contenu, [b]#[/b]idDiscussion, [b]#[/b]idUtilisateur)
Selon ce modèle, la requête : [b]récupérer toutes les discussions classées par date de dernier message[/b] ce fait comme ça :
[sql]
SELECT Discussion.idDiscussion, Discussion.date, Discussion.sujet, Discussion.contenu, u1.nomUtilisateur AS nomAuteur, u1.prenomUtilisateur AS prenomAuteur, Participer.date, Participer.contenu, u2.nomUtilisateur AS nomParticipant, u2.prenomUtilisateur AS prenomParticipant
FROM Discussion, utilisateur AS u1, Participer, utilisateur AS u2
WHERE Discussion.idUtilisateur = u1.idUtilisateur
AND Discussion.idDiscussion = Participer.idDiscussion
AND Participer.idUtilisateur = u2.idUtilisateur
GROUP BY Discussion.idDiscussion
ORDER BY Discussion.date DESC, Participer.date DESC;[/sql]