La question de M. Sobole m'a fait tilter sur un =E9l=E9ment qui ne m'avait
pas choqu=E9 outre mesure quand j'avais con=E7u une BD : est-ce que
l'utilisation d'un NULL comme cl=E9 =E9trang=E8re est dangereux ? Par
dangereux j'entends qui risque de produire des r=E9sultats erron=E9s lors de
s=E9lection, ajout et mise =E0 jour.
Pour pr=E9senter mon cas, j'ai une table 'consultations', une table
'patients' et une table 'traitements'. Chaque enregistrement de
'consultations' se rapporte =E0 un patient ('consultations.patient' est
une cl=E9 =E9trang=E8re dans la table), et les traitements se rapportent =
=E0 une
consultation (cl=E9 =E9trang=E8re 'traitements.consultation'). Or un
traitement peut avoir =E9t=E9 prescrit hors d'une consultation (cas d'une
prescription par un coll=E8gue, ou autom=E9dication).
Pour pallier =E0 ceci, j'ai pens=E9 rapporter chaque traitement =E0 un pati=
ent
et une consultation, avec la possibilit=E9 d'avoir NULL comme valeur de
'traitements.consultation', mais =E7a me g=E8ne un peu aux entournures. J'ai
bien pens=E9 cr=E9er une entr=E9e bidon dans la table 'consultations' qui
correspond au cas d'un traitement non prescrit, mais =E7a m'a d=E9rang=E9 t=
out
autant (voire plus).
Est-ce qu'il existe une mani=E8re =E9l=E9gante de faire ce genre de choses =
ou
dois-je utiliser un NULL comme valeur de cl=E9 =E9trang=E8re ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jpaulin
Est-ce qu'il existe une manière élégante de faire ce genre de choses ou dois-je utiliser un NULL comme valeur de clé étrangère?
Je dis peut etre une betise, mais il me semble que tu veux creer une relation m vers n, pour cela il faut passer par une table de relation (du coup pas d'enregistrement avec NULL).
gg
Est-ce qu'il existe une manière élégante de faire ce genre de choses ou
dois-je utiliser un NULL comme valeur de clé étrangère?
Je dis peut etre une betise, mais il me semble que tu veux creer une
relation m vers n, pour cela il faut passer par une table de relation (du
coup pas d'enregistrement avec NULL).
Est-ce qu'il existe une manière élégante de faire ce genre de choses ou dois-je utiliser un NULL comme valeur de clé étrangère?
Je dis peut etre une betise, mais il me semble que tu veux creer une relation m vers n, pour cela il faut passer par une table de relation (du coup pas d'enregistrement avec NULL).
gg
Greg
On Sun, 18 Jul 2004 19:00:07 +0200 "jpaulin" wrote:
Je dis peut etre une betise, mais il me semble que tu veux creer une relation m vers n, pour cela il faut passer par une table de relation (du coup pas d'enregistrement avec NULL).
En fait j'ai les rapports suivants entre mes tables :
Vu les cardinalités, je n'ai pas besoin d'une table de relations entre 'traitements' et 'consultations', mais je risque de me retrouver avec des clés étrangères à NULL dans le cas d'un traitement prescrit hors d'une consultation. Vu ma faible expérience dans le domaine des bases de données, je me demande à quel genre d'anomalies je risque me retrouver confronté, et comment faire pour les éviter (en repensant le schéma au besoin).
a+, Greg
On Sun, 18 Jul 2004 19:00:07 +0200
"jpaulin" <jerome.paulin@dic.fr> wrote:
Je dis peut etre une betise, mais il me semble que tu veux creer une
relation m vers n, pour cela il faut passer par une table de relation
(du coup pas d'enregistrement avec NULL).
En fait j'ai les rapports suivants entre mes tables :
Vu les cardinalités, je n'ai pas besoin d'une table de relations entre
'traitements' et 'consultations', mais je risque de me retrouver avec
des clés étrangères à NULL dans le cas d'un traitement prescrit hors
d'une consultation. Vu ma faible expérience dans le domaine des bases de
données, je me demande à quel genre d'anomalies je risque me retrouver
confronté, et comment faire pour les éviter (en repensant le schéma au
besoin).
On Sun, 18 Jul 2004 19:00:07 +0200 "jpaulin" wrote:
Je dis peut etre une betise, mais il me semble que tu veux creer une relation m vers n, pour cela il faut passer par une table de relation (du coup pas d'enregistrement avec NULL).
En fait j'ai les rapports suivants entre mes tables :
Vu les cardinalités, je n'ai pas besoin d'une table de relations entre 'traitements' et 'consultations', mais je risque de me retrouver avec des clés étrangères à NULL dans le cas d'un traitement prescrit hors d'une consultation. Vu ma faible expérience dans le domaine des bases de données, je me demande à quel genre d'anomalies je risque me retrouver confronté, et comment faire pour les éviter (en repensant le schéma au besoin).