SQL Server : Foreign Key ... {pour les bons}

SQL Server : Foreign Key ... {pour les bons} - Programmation

Marsh Posté le 05-04-2002 à 11:15:19    

Comment faire une clef etrangere qui pointe sur 3 clefs primaires de 3 tables differentes ?
 
Je m'explique :
On a une table EXEMPLAIRE(num, reftitre)
Une table CD(num, titre ...)
Une table Film(num, titre ...)
Une table Livre(num, titre ...)
 
Les 3 dernieres tables sont differentes.
 
Je veux une contrainte qui me permette d'allé verifié si le reftitre existe soit dans la table CD, soit dans film, soit dans livre.
Moi il verifie les 3 en meme temps.
J'ai essayé avec l'analyseur de requete et avec Entreprise manager, mais le resultat est le meme.
Vous savez comment faire ?

Reply

Marsh Posté le 05-04-2002 à 11:15:19   

Reply

Marsh Posté le 05-04-2002 à 11:18:09    

a part mettre 3 colonnes dans EXEMPLAIRE (avec une valeur null ou une valeur d'une autre table), je ne vois pas comment
 
on sort de la définition classique du SGBD là!

 

[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 05-04-2002 à 11:18:58    

comprend pas trop ?
 
Mais heu je dirai avec un trigger (mais je sais pas si ça existe sous SQL server) lors d'une insertion : tu cherches dans chacune des tables si le titre existe non ?

Reply

Marsh Posté le 05-04-2002 à 11:21:12    

petoulachi a écrit a écrit :

comprend pas trop ?
 
Mais heu je dirai avec un trigger (mais je sais pas si ça existe sous SQL server) lors d'une insertion : tu cherches dans chacune des tables si le titre existe non ?  




 
éventuellement, mais ce n'est plus une contrainte alors


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 05-04-2002 à 11:22:41    

Je vois pas trop ce que tu veux faire, je vais essayer de devinner :
 
Un EXEMPLAIRE.reftitre DOIT pointer sur un titre de CD ou de Film ou de Livre.
 
Donc :
 
On a une table EXEMPLAIRE(num, IDtitre)  
Une table CD(num, IDtitre ...)  
Une table Film(num, IDtitre ...)  
Une table Livre(num, IDtitre ...)  
 
et une table Titre(ID, titre)


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-04-2002 à 11:28:35    

jupiler a écrit a écrit :

 
 
éventuellement, mais ce n'est plus une contrainte alors  




 
ouais. Et ça existe les triggers avec SQL server ?

Reply

Marsh Posté le 05-04-2002 à 11:29:06    

Oui y'a des triggers en SQL server !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-04-2002 à 12:04:24    

Mara's dad a écrit a écrit :

Donc :
 
On a une table EXEMPLAIRE(num, IDtitre)  
Une table CD(num, IDtitre ...)  
Une table Film(num, IDtitre ...)  
Une table Livre(num, IDtitre ...)  
 




 
C tt ce ki y a, pas plus !
Par exemple, tu ajoute un exemplaire du film "terminator". T daccord ke il doit y avoir le film "terminator dans la table film? mé pas dans livre ni CD
Donc, fo trouver un moyen pour allé verifié si l'exemplaire existe soit dans l'un soit dans l'autre soit dans le 3eme
 
Le trigger, oui, g pas etudié la question, fo ke je vois comment ca marche
 
Help :sweat:

Reply

Marsh Posté le 05-04-2002 à 15:44:40    

Je vois toujours pas bien ce que tu veux faire ! ! !
 
Ton truc me parait super compliqué pour rien et en plus çà t'empèche d'avoir un film ayant le même titre qu'un CD ou qu'un livre.
 
Que penses-tu d'une structure due genre :
 
EXEMPLAIRE( ID, IDMedia )
 
MEDIA( ID, Titre, IDType, ...)
 
TYPEMEDIA( ID, Libelle ) avec par exemple :
1, Film
2, CD
3, Livre
...
 
Ou bien j'ai rien compris !
 
Au fait, elle sert à quoi la table EXEMPLAIRE ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

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