Petit problème lors de la création d'une table.

Petit problème lors de la création d'une table. - SQL/NoSQL - Programmation

Marsh Posté le 07-11-2010 à 17:41:23    

Bonjour à tous !
 
Je suis en train de faire le schéma d'une base de données, et j'ai un problème que je n'arrive pas à résoudre.
 
Voilà : j'ai ARTICLE, THEME_PRINCIPAL, THEME_SECONDAIRE. Un article a un thème principal et plusieurs thèmes secondaires.
 
Je veux que mon article n'ait qu'un thème principal, donc je relie article à thème principal avec une clé étrangère dans article.  
Je relie article secondaire et primaire avec une clé étrangère dans article secondaire.
 
Mais la question est : comment relier l'article et le thème secondaire ? Car dans cette configuration je vais avoir des tuples dans ma table thème secondaire reliés à aucun article, et je ne peux pas
rajouter un champ thème_secondaire dans article car je ne sais pas à l'avance combien j'en aurai !
 
(je ne suis pas encore à la création en SQL en fait. En espérant avoir été clair :D  
 
Merci d'avance !

Reply

Marsh Posté le 07-11-2010 à 17:41:23   

Reply

Marsh Posté le 07-11-2010 à 18:47:40    

une table theme_secondaire
id,article_id,theme_id

Reply

Marsh Posté le 07-11-2010 à 18:54:49    

si je fais ça je peux avoir comme tuples :  
 
1, article1, SPORTS
2, article1, TECHNOLOGIES
 
or mon article ne doit avoir qu'un thème principal.

Reply

Marsh Posté le 07-11-2010 à 18:59:36    

en gros quand je fais mon graphe de dépendances j'ai :
 
 
 
nomTH_principal <--- numero_article  
nomTH_principal <--- nomTH_secondaire
 
Puisque c'est transitif je simplifie par :  
 
nomTH_secondaire ---> numéro_article ---> nomTH_principal
 
j'obtiens :  
 
THEME_PRINCIPAL(idTheme)
THEME_SECONDAIRE(idTheme, #numero_article)
 

Reply

Marsh Posté le 08-11-2010 à 10:31:14    

Ajoute une table intermediaire entre article et theme_secondaire:
Article-Theme_Secondaire: ID, ArticleID, Theme_SecondaireID (c'est probablement ce que flo850 a voulu dire).

Reply

Sujets relatifs:

Leave a Replay

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