Précédent   Forum du club des développeurs et IT Pro > Bases de données > Décisions SGBD > Autres
Autres Autres sujets sur les SGBD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/01/2009, 20h23   #1
el_pablo
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 2
Points : 2
Par défaut Nom de la clé primaire vue par les utilisateurs?

Bonjour,

Quel est le nom que l'on donne à la clé primaire qui peut être modifié par l'utilisateur?

Dans mes schémas, j'utilise toujours une clé primaire invisible à l'utilisateur et qui est celle qui est utilisée pour faire les relations. Parfois, les utilisateurs peuvent voir un champ qui doit être unique qui pourrait être une clé primaire.

Par exemple:
Produits(pkProduitID, UPC, description, ...)
detailFacture(pkDetailProduitID, ..., fkProduitID)

pkProduitID est un numéro de série invisible et qui est la vrai clé.
UPC est le code à barre d'un produit qui est unique et que l'utilisateur peut modifier.

Quel est le nom que l'on donne pour l'UPC?

Merci
el_pablo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2009, 21h32   #2
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 165
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 165
Points : 1 975
Points : 1 975
Citation:
Envoyé par el_pablo Voir le message
... Quel est le nom que l'on donne pour l'UPC?
Une clé candidate, je dirais ... ( "surrogate key" en anglais )

Mais ce n'est pas une clé primaire puisque par définition la clé primaire est toujours unique pour une table donnée ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2009, 00h25   #3
el_pablo
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 2
Points : 2
C'est ce que je croyais, mais après avoir vérifié avant de "poster" la clé candidate semble être un amalgame de plusieurs champs tel une clé composée.

Structurellement parlant, il n'y a pas de problème à ce qu'une table possède plusieurs clés primaire?
el_pablo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2009, 10h23   #4
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 : 13 659
Points : 25 563
Points : 25 563
Envoyer un message via MSN à CinePhil
Il n'y a pas "plusieurs clés primaires" dans une table ! Il n'y en a qu'une qui sert à distinguer chaque ligne de la table.

Par contre, cette clé primaire peut être composée de plusieurs colonnes. Imaginons une table mémorisant le thème du mois :
Themes(T_Annee, T_Mois, T_LibelleTheme)
La clé primaire est ici composée de l'année et du mois.

C'est le cas aussi dans les tables associatives. La clé primaire est alors composée des clé étrangères issues des clés primaires des tables entrant en jeu dans l'association.
Exemple :
"Une personne peut travailler à plusieurs projet et un projet fait travailler de une à plusieurs personnes"
Personne -0,n----Travailler----1,n- Projet

Personne (P_Id, P_Nom, P_Prenom...)
Projet (Pj_Id, Pj_NomProjet, ...)
Travailler (T_IdPersonne, T_IdProjet, ...)

Dans ton cas, le code barre est unique pour un produit mais n'est pas la clé primaire, c'est donc une clé candidate.

La démarche normale serait de dire dans le cahier des charges que le produit est identifié par son code barre. Le code barre est alors un candidat pour être clé primaire (donc on l'appelle clé candidate) mais c'est la bonne pratique informatique qui justifie la préférence d'un identifiant entier auto-incrémenté et invisible pour l'utilisateur plutôt qu'un code pouvant être alphanumérique (donc moins performant à traiter) et changeant (ce qui impliquerait de modifier les clés étrangères où il serait utilisé). L'exigence du cahier des charges fait qu'on va implémenter une contrainte UNIQUE sur la colonne stockant le code barre.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
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 la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2009, 10h54   #5
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 080
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 080
Points : 21 678
Points : 21 678
Avant le choix de la clef primaire toutes les clés potentielles sont appelées clefs candidates.
Lorsque le choix de la clef primaire est effectué, alors toutes les autres clefs sont nommées clefs subrogées (ce qui signifie "pouvant est substituée à").
En principe toutes les clefs subrogées doivent être transformée en caintraintes d'unicité.

A
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2009, 18h59   #6
el_pablo
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 2
Points : 2
Clé subrogée... première fois que j'entends ce terme! Je présume que c'est la surrogate key en anglais. À rajouter dans mon vocabulaire francophone!

Suite à vos réponses, j'ai une nouvelle question. Comment fait-on pour contraindre l'unicité des clés composés?

Merci

NB
el_pablo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2009, 19h27   #7
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 : 13 659
Points : 25 563
Points : 25 563
Envoyer un message via MSN à CinePhil
Code :
1
2
ALTER TABLE LaTable
ADD CONSTRAINT UNIQUE (Col1, Col2)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
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 la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2009, 23h44   #8
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 080
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 080
Points : 21 678
Points : 21 678
Les clefs subrogées sontparfois aussi mentionnées sous le terme de clefs "alternatives" (alternate key) mais je préfère la subrogation qui indique, avec justesse, un idée de "soumission" !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h21.


 
 
 
 
Partenaires

Hébergement Web