Creation d'une clé primaire avec 2 /3 cle etrangere

Creation d'une clé primaire avec 2 /3 cle etrangere - SQL/NoSQL - Programmation

Marsh Posté le 20-07-2006 à 18:23:59    

Bonjour,
 
J'ai souci sur les relations entre les differents table d'une bdd.
Je m'explique:
 
Une table "fournisseurs" va créer des fiches produits. Ses fiches pourront être sélectionner pour une collection par le grp "managers" . Ses fiches selectionnées seront ensuite choisies par "vendeurs" pour ainsi afficher les meilleurs produits aux groupes "acheteurs".
 
mon idée:
 
Un groupe d'utilisateur a sa propre table.
 
1) J'ai une table "produits" qui est relié avec la table "managers" en cardinalité multiples, ce qui va créer une table intermédiaire qu'on appelle "chx_manages" (choix des managers) qui aura comme clé primaire l'association de id_prod et id_manage. Jusqu'a la je sais faire. (peux-t-on donner un nom a cet assoc?).
 
2) Je mets en relation cette table "chx_manage" avec la table "vendeurs" en cardinalité multiples qui va donc avoir une table appelé "chx_vendeurs" qui aura comme cle primaire l'assoc de id_prod_manage et id_vendeur.
 
3) voila, ici les acheteurs pourront seulement lister les choix du vendeur pour une collection donnée.
 
J'espere que vous m'avez compris. Le cheminement doit rester tel quel.
 
Pour la clé primaire de la table chx_manage, la syntaxe ets bonne?:

Code :
  1. create table chx_manage ( chx_man int not null, man_id int not null, prod_id int not null,
  2. CONSTRAINT nom_contrainte FOREIGN KEY (man_id,prod_id) REFERENCES manage (man_id) and references products (prod_id) )


 
Autre probleme :  
Un fournisseur a 1 ou n usine mais une usine peut etre lui-meme fournisseur, comment le modéliser?
-> C'est une assoc reflexive mais je ne connais pas la syntaxe....et vous?
 
Votre avis?
 
Merci,

Reply

Marsh Posté le 20-07-2006 à 18:23:59   

Reply

Marsh Posté le 21-07-2006 à 14:34:15    

faut faire des contraintes séparée.  
Dans une FK, tu ne peux référencé qu'une table, dans ce cas, tu crées plusieurs FK vers les différentes tables.

Reply

Marsh Posté le 21-07-2006 à 14:39:49    

OK
 
Genre ca:
 

Citation :


      create table chx_manage ( chx_man int not null, man_id int not null, prod_id int not null,
      CONSTRAINT nom_contrainte FOREIGN KEY (man_id) REFERENCES manage (man_id),
      CONSTRAINT nom_contrainte FOREIGN KEY (prod_id) references products (prod_id) )  


 
avec le meme nom de contrainte ou en ayant 2 nom??....en toute logique je dirais 2 noms?
 
Et pour la question sur l'assoc reflexive on fait comment?

Reply

Sujets relatifs:

Leave a Replay

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