|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2010 Messages : 16 ![]() |
Bonsoir,
J'ai fais quelques recherches et je ne trouve pas réponse à ma question. Est-ce qu'il est judicieux de mettre une clé étrangère à NULL dans la cas suivant : - Une table ADRESSES (qui référence les adresses à plusieurs tables). - Une table CLIENTS. - Une table d'association entre les deux : HABITES Je suis obligé de mettre une table d'association car les clients peuvent avoir plusieurs adresses (contrairement au personnel par exemple). Les CLIENTS peuvent avoir une adresse préférée. Je place donc une FOREIGN KEY dans la table CLIENTS qui se réfère à la PRIMARY KEY de ma table ADRESSES. Néanmoins, certains clients n'ont pas d'adresses préférées. De ce fait, est-ce qu'il est mieux de pouvoir placer une FOREIGN KEY qui peut être à NULL ou mettre une valeur par défaut -1 (si la clé est en INT) ? Merci |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Ingénieur développement logiciels Inscription : avril 2009 Messages : 501 ![]() |
Tu peux mettre une valeur à NULL même si elle est clé étrangère. Ce que tu dis est cohérent et respecte les lois du modèle relationnel
|
|
|
00
|
|
|
#3 |
![]() ![]() |
Peupler ses tables de bonshommes NULL est une mauvaise chose qui peut dégrader les performances.
En réalité, tu as les deux associations suivantes : CLIENT -1,n----habiter----0,n- ADRESSE |-----------0,1----préférer----0,n-----| Comme je l'explique dans mon blog, l'association de cardinalités (0,1 - 0,n) entraîne, en toute rigueur, la création d'une table associative dont la clé primaire est une clé étrangère faisant référence à la clé primaire de la table située du côté (0,1) de l'association. Tu as donc les tables suivantes : CLIENT (clt_id, clt_nom...) ADRESSE (adr_id, adr_id_commune, adr_rue, adr_code_postal) clt_habiter_adr (cha_id_client, cha_id_adresse) clt_preferer_adr (cpa_id_client, cpa_id_adresse)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2010 Messages : 16 ![]() |
Un grand merci pour vos réponses, je vais pouvoir continuer.
Je vais aller faire un tour sur ton blog aussi. Merci et résolu |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com