Aide pour schéma de base de donnée

Aide pour schéma de base de donnée - SQL/NoSQL - Programmation

Marsh Posté le 17-08-2008 à 15:16:34    

Bonjour,
 
Je suis en train de bosser sur un projet de site et j'ai besoin d'une base de données. Mais je n'arrive pas à déterminer le meilleur schéma.
Il s'agit de mettre en relation plusieurs entités :
- des conférences (ayant un nom, un lieu, une date)
- des intervenants (nom, domaine)
- des inscrits aux conférences (nom)
 
Typiquement, je souhaiterai pouvoir retrouver toutes les conférences ou X est intervenu ou tous les intervenants qui sont intervenus à une date D ou encore tous les inscrits ayant assisté à une conférence dans le domaine Y...
 
J'avais d'abord penser faire plusieurs tables mais les requêtes risquent d'être compliquées...
Dans une seule table, ça va être un peu le bazar...
 
Quel est votre avis ?
 
Merci d'avance.


Message édité par BMenez le 17-08-2008 à 15:17:50
Reply

Marsh Posté le 17-08-2008 à 15:16:34   

Reply

Marsh Posté le 18-08-2008 à 11:45:23    

Bonjour,
 
Définir plusieurs tables est une bonne solution.
Par exemple :

Table conference (nom, lieu, date), clé primaire : nom
Table intervenant (nom, prenom, domaine), clé primaire : nom
Table auditeur (nom, prenom), clé primaire nom
Table conf_intervenant (nom_conference, nom_intervenant), clé primaire : nom_conference + nom_intervenant
Table conf_auditeur (nom_conference, nom_auditeur), clé primaire : nom_conference + nom_auditeur


Les requêtes ne sont pas très compliquées, quand on a un tout petit peu d'habitude.
Par exemple, pour retrouver toutes les conférences ou X est intervenu :

Select c.nom
  From conference c,
       conf_intervenant ci
  Where c.nom = ci.nom_conference
    And ci.nom_intervenant = 'X'


Par exemple, pour retrouver tous les intervenants qui sont intervenus à une date D :

Select i.prenom, i.nom
  From conference c,
       conf_intervenant ci,
       intervenant i
  Where c.nom = ci.nom_conference
    And i.nom = ci.nom_intervenant
    And c.date = D

Reply

Marsh Posté le 18-08-2008 à 12:47:12    

Merci pour cette réponse très complète :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed