clé "semi" étrangère

Eléphanteau du PHP | 42 Messages

06 déc. 2006, 15:56

Bonjour,

Le titre est pas très clair mais je m'explique...

J'ai

- une table unit : qui comporte des flacons

- une table action : liste des actions que l'on peut effectuer sur les flacons

- une table intermédiare action_unit : relation many to many entre unit et action

Le problème :

j'ai besoin de savoir de quel flacon, un nouveau flacon provient

dans la table unit j'ai les champs:

- unit_accn (clé primaire)
- type (type de flacon)

pour savoir d'où provient un flacon, j'ai pensé créé un champ "from_unit" où je stockerais le unit_accn (clé primaire) du flacon d'origine.

Cela ne pose pas de problème de mettre une clé primaire dans un champ integer comme cela au niveau de la cohérence de la base de données ? On m'a aussi parlé de relation cyclique...

note: j'utilise postgres 8

Merci d'avance de votre aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 déc. 2006, 16:27

Si j'ai bien compris, il s'agit d'une clé étrangère vers la même table, mais ça reste une clé étrangère quand même. Et il n'y a pas de soucis, mais il faut effectivement faire attention que ton flacon A ne provienne pas d'un flacon B qui proviendrait du flacon A (directement ou à travers plusieurs autres) ce qui t'empêcherait de les supprimer (chacun ayant un enregistrement pere existant)

Concernant la clé étrangère, c'est le même principe que sur un forum ou les messages peuvent avoir un idParent, correspondant à l'identifiant d'un message précédent :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...