Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/12/2011, 23h48   #1
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 16
Points : 27
Points : 27
Par défaut clé étrangère à NULL

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
Nemon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 08h31   #2
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
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
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 11h14   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 333
Points : 18 333
Envoyer un message via MSN à CinePhil
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 !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 17h52   #4
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 16
Points : 27
Points : 27
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
Nemon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h53.


 
 
 
 
Partenaires

Hébergement Web