Problème d'implémentation (FK qui référence deux colonnes)

Problème d'implémentation (FK qui référence deux colonnes) - SQL/NoSQL - Programmation

Marsh Posté le 11-06-2005 à 17:20:20    

En fait j'ai une clé étrangère qui référence une table dont la clé primaire est elle même composée de deux clé étrangères.  
 
Ca pose un gros prob parcequ'en principe une clé primaire ne référence qu'une colonne  :sweat:  
 
Comment résoudre ça ?


Message édité par Leuen le 11-06-2005 à 19:13:02
Reply

Marsh Posté le 11-06-2005 à 17:20:20   

Reply

Marsh Posté le 11-06-2005 à 19:13:07    

[:yoyoz]

Reply

Marsh Posté le 11-06-2005 à 19:31:17    

Leuen a écrit :

En fait j'ai une clé étrangère qui référence une table dont la clé primaire est elle même composée de deux clé étrangères.  
 
Ca pose un gros prob parcequ'en principe une clé primaire ne référence qu'une colonne  :sweat:  
 
Comment résoudre ça ?

Ah bon :??:  
Sur certains SGBD, on peut définir une clé sur 2 colonnes [:figti]

Reply

Marsh Posté le 11-06-2005 à 19:37:52    

mrbebert a écrit :

Ah bon :??:  
Sur certains SGBD, on peut définir une clé sur 2 colonnes [:figti]


 
Une FK ?  
 
Je vois mal comment en fait parcequ'il faudrait qu'elle référence les deux valeurs qui composent la PK. Ca fait un concatenation ?  

Reply

Marsh Posté le 11-06-2005 à 19:53:08    

Leuen a écrit :

Une FK ?  
 
Je vois mal comment en fait parcequ'il faudrait qu'elle référence les deux valeurs qui composent la PK. Ca fait un concatenation ?


ben non la FK sera aussi sur deux champs...

Reply

Marsh Posté le 11-06-2005 à 19:56:30    

Ah ouais pourquoi pas, il me semble pas qu'on peut le faire dans Postgres  [:jkley]

Reply

Marsh Posté le 11-06-2005 à 20:02:15    

Leuen a écrit :

En fait j'ai une clé étrangère qui référence une table dont la clé primaire est elle même composée de deux clé étrangères.  
 
Ca pose un gros prob parcequ'en principe une clé primaire ne référence qu'une colonne  :sweat:  
 
Comment résoudre ça ?


 
Tu ajoutes dans ta 2ème table une colonne que tu utilises commme PK et voilà, faut pas chercher midi à 14h.


Message édité par thecoin le 11-06-2005 à 20:02:32
Reply

Marsh Posté le 11-06-2005 à 21:26:17    

Sûr et certain, ça marche sans problème...
 
Tu peux même, au sein d'une même table avec plusieurs FK qui pointent sur les mêmes champs, ou un champ qui est référencé comme FK de deux tables différentes.
Ca ne pose aucun problème.
 
Un petit exemple de FK multiples sur SQL Server :
 

Code :
  1. ALTER TABLE [dbo].[Citizen] ADD
  2. CONSTRAINT [FK_Citizen_Profession] FOREIGN KEY
  3. (
  4.  [idOccupation]
  5. ) REFERENCES [dbo].[Profession] (
  6.  [idProfession]
  7. ),
  8. CONSTRAINT [FK_Citizen_ProfessionProduction] FOREIGN KEY
  9. (
  10.  [idProfession],
  11.  [lvlProfession]
  12. ) REFERENCES [dbo].[ProfessionProduction] (
  13.  [idProfession],
  14.  [lvlProfession]
  15. ),
  16. CONSTRAINT [FK_Citizen_TerrainGround] FOREIGN KEY
  17. (
  18.  [idSolarSystem],
  19.  [idPlanet],
  20.  [xTerrain],
  21.  [yTerrain],
  22.  [groundType]
  23. ) REFERENCES [dbo].[TerrainGround] (
  24.  [idSolarSystem],
  25.  [idPlanet],
  26.  [xTerrain],
  27.  [yTerrain],
  28.  [groundType]
  29. ),
  30. CONSTRAINT [FK_Citizen_Users] FOREIGN KEY
  31. (
  32.  [owner]
  33. ) REFERENCES [dbo].[Users] (
  34.  [id]
  35. )
  36. GO


 
http://magicland.manga-torii.com/pict/fk.PNG


Message édité par Arjuna le 11-06-2005 à 21:28:45
Reply

Sujets relatifs:

Leave a Replay

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