Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1006 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  clé étrangère vide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

clé étrangère vide

n°1948635
SV_LVH
Posté le 09-12-2009 à 10:43:46  profilanswer
 

Bonjour à tous,  
 
Une question toute bête gène ma progression sur mon projet (j'en suis au mpd et je crois déceler un problème) On a du apprendre ça au tout début des cours sur la conception mais j'ai zappé l'info...
 
Dans une table peut-on avoir des clés étrangères vides?
 
Par exemple la table 'IDENTITES':
 
Id_Identite          int(10)           <pk>
Id_Coordonnes     int(10)           <fk1>
Id_User_Web       int(10)           <fk3>
Id_Civilite            int(10)           <fk5>
Id_Client             int(10)           <fk2>
Prenom_Identite   varchar(20)     NOT NULL
Nom_Identite       varchar(20)     NOT NULL
Dat_Naiss            date              NOT NULL

 
Pour les clés 'Id_User_Web' et 'Id_CLient' il se peut que la personne ne soit pas utilisateur du site web (dans le cas d'un fournisseur par exemple) ou qu'elle ne soit pas cliente (un employé par exemple).
 
Est-il donc possible que ces clés reste NULL ? En sachant que certaines champs dans leur table  respectives sont NOT NULL, créer un id avec des champs vides me poserait quelques problèmes.
 
A votre avis est-ce correct ou dois-je tout reprendre?
 
Cordialement


---------------
Quand vous demandez sur un forum comment changer un pneu de voiture peu de gens vous répondent. Et ceux qui le font vous expliquent généralement comment rouler sur 3 roues.
mood
Publicité
Posté le 09-12-2009 à 10:43:46  profilanswer
 

n°1948698
macgawel
Posté le 09-12-2009 à 12:57:45  profilanswer
 

Bonjour.
 
Petite question à la con...
Tu as quoi comme relation entre ta table IDENTITES et celles dont proviennent les FK ?

n°1948710
SV_LVH
Posté le 09-12-2009 à 13:48:14  profilanswer
 

'IDENTITES'  0,1 | 1,1  'USER_WEB'
'IDENTITES'  0,1 | 1,1  'CLIENTS'
 
Je ne peux pas changer les cardinalités si c'est ce que tu veux dire. J'ai bien sur pensé à les modifier pour virer les FK de ma table, mais cela revient a donner de faux paramètres. Cela risque de poser d'autres problèmes pour plus tard. Et puis je ne cherche pas un moyen de bricoler pour que ma table fonctionne mais plutôt à apprendre des trucs qui me serviront après et que je saurais être juste.
 
Non vraiment ce que je veux savoir c'est : Est-ce qu'on peut avoir des clés étrangères vides dans une table ?
 
Mais merci quand même macgawel  :)


---------------
Quand vous demandez sur un forum comment changer un pneu de voiture peu de gens vous répondent. Et ceux qui le font vous expliquent généralement comment rouler sur 3 roues.
n°1948764
macgawel
Posté le 09-12-2009 à 15:35:15  profilanswer
 

SV_LVH a écrit :

Non vraiment ce que je veux savoir c'est : Est-ce qu'on peut avoir des clés étrangères vides dans une table ?


Citation :

Contrainte d’intégrité référentielle : toute valeur d’une clé étrangère est égale à la valeur nulle ou à la valeur de la clé primaire à laquelle la clé étrangère se réfère

Oui. C'est de la logique, et ça dépend du modèle que tu choisis.
Exemple :
J'ai une table PAYS, et une table USERS. Un USER réside dans un pays, donc clé étrangère.
Dans le cadre de mon application, il n'est pas indispensable de connaître le pays des utilisateurs. Du coup, je décide que les utilisateurs n'ont pas besoin de renseigner ce champ (NULL). Mais s'ils le renseignent, le pays doit correspondre à un des pays de la table PAYS...
=> Clé étrangère (relation 1,n) avec possibilité de NULL (pour matérialiser la relation 0,n).

SV_LVH a écrit :

'IDENTITES'  0,1 | 1,1  'USER_WEB'
'IDENTITES'  0,1 | 1,1  'CLIENTS'
 
Je ne peux pas changer les cardinalités si c'est ce que tu veux dire. J'ai bien sur pensé à les modifier pour virer les FK de ma table, mais cela revient a donner de faux paramètres. Cela risque de poser d'autres problèmes pour plus tard. Et puis je ne cherche pas un moyen de bricoler pour que ma table fonctionne mais plutôt à apprendre des trucs qui me serviront après et que je saurais être juste.

Dans ce cas, revoie les relations...
Sauf cas particulier (dénormalisation), il n'y a aucune raison de faire plusieurs tables quand la cardinalité est 1.
Exemple caricatural :
Un utilisateur a un unique mail. Un mail doit correspondre à un seul utilisateur.
Tu vas faire quoi ?

Code :
  1. USERS (id_user<PK>, nom, id_mail<FK> ) et MAILS(id_mail<PK>, adresse_mail)

ou

Code :
  1. USERS(id_user, nom, mail)


Dans ton cas c'est pareil :
Une identité peut correspondre à un et un seul user_web, et un user_web doit correspondre à une et une seule identité.
=> Une seule table qui regroupe les trois, et les champs actuellement dans USER_WEB ou CLIENTS peuvent être NULL.

n°1948825
SV_LVH
Posté le 09-12-2009 à 18:00:21  profilanswer
 

Merci pour la réponse à ma première question.
 
Pour ce qui est du reste... c'est assez logique ce que tu dis, je vais donc devoir modifier ma table encore une fois   :whistle:  


Message édité par SV_LVH le 09-12-2009 à 18:00:51

---------------
Quand vous demandez sur un forum comment changer un pneu de voiture peu de gens vous répondent. Et ceux qui le font vous expliquent généralement comment rouler sur 3 roues.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  clé étrangère vide

 

Sujets relatifs
test d'un retour de la commande for /f videformulaire/recherche de case vide/message
Formulaire HTML:Ne pas ouvrir la page suivante si le champ est videProblème de clé étrangère [RESOLU]
problème fenètre videça existe un ostream vide/bidon ?
[SQL] Indiquer ou pas la présence de clé étrangèreExecuter une fonction quand on clique dans le vide
count =>vide + selection sur 2 tables[SQL] SELECT sur une table avec clé étrangère sur cette même table
Plus de sujets relatifs à : clé étrangère vide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR