Je dois créer une base SQL dont une table possède des références à d’autres tables, références qui doivent donc être des clés. Seulement, il y a plusieurs tables à prendre en compte.
Quelqu’un sait comment faire???
Ton problème n’est pas très claire. La clé primaire migre et devient une clé étrangère.
Donc, ta table recevra 2 clés étrangères.
Les 2 clés étrangères sont ton identifiant unique dans ton cas.
Tu peux crée une clé composé, qui ne sers a rien autrement si tu veux forcément 1 champ qui les concatène.
Edité le 29/12/2010 à 16:57
Heu si tu as besoin d’une clef étrangère entre deux tables, c’est que ton modèle est faux et archi faux … et ce n’est de toute façon pas possible (ouf).
Par contre, si tu fais références à N autres tables, tu auras N clefs étrangères. C’est tout.
Je pense cependant que tu confonds avec la clef primaire où là ça dépend simplement de ce que tu stockes dans la table, et si c’est logique ou non. Pour moi ton client peut réserver n’importe quand, la même chambre, mais pas deux fois à la même période. Du coup, il me semble logique que ta clef primaire soit (id, num_apprt, num_sem, annee).
Mais d’un autre côté, tu ne peux pas avoir deux clients dans le même appartement, donc tu peux aussi bien dire que la clef primaire c’est (num_appart, num_sem, annee) => ça interdit un appartement d’être réservé par plus d’un client sur la même période.
C’est à toi de décider si c’est logique ou non : on peut envisager que la chambre est partagée entre deux clients, et dans ce cas la première clef primaire est valide…
Au boulot, on fait assez souvent une clef primaire de type numérique et technique, et une clef fonctionnelle (un index + contrainte d’unicité). Personnellement, je n’ai rien contre mais dans ton cas, tu peux faire de (num_appart, num_sem, annee) la clef primaire sans problème.
Pour le reste, le fait que ces colonnes fassent partie de clefs étrangères est indépendant du fait que cela fasse partie de la clef primaire de la table
Moi, je voiot tojours pas ou est le problème
C’est juste du merise, la relation est du 1,n / 1,n.
Un APPARTEMENT est RESERVER a une ou plusieurs DATE.
A une DATE, un ou plusieurs APPARTEMENT sont RESERVER.
Au passage du MLD au MCD l’association “Reserver” devient au table qui a pour clé primaire les clés étrangères qui migrent.
Donc la clé primaire est k6 ET k7, num_appart ET num_sem, annee