Création
d'entreprise
Posez votre question Signaler

SQL double clé primaire

kamikaz121 8Messages postés 3 avril 2008Date d'inscription - Dernière réponse le 20 mars 2012 à 14:57
Bonjour,
Est ce qu'on peut associer à deux tables différentes la mème clé primaire sachant qu'il ya une table parent d'où on veut extraire sa clé primaire et l'introduire ds la deuxieme table car ds cette table il y'a qu'une seule ligne ki est la clé primaire de la table parent donc puisque c le seul champs existant ça sera aussi sa clé primaire.
Merci....
Lire la suite 

SQL double clé primaire »

10 réponses
Réponse
+1
moins plus
Tiens je suis etonné par ton affirmation Pollux.
Tu as bien raison sur le fait qu'une table n'a qu'une seule clé primaire.
Cependant, et tu le dis subtilement, une clé primaire peut être composé de plusieurs champs (Clé, composée de deux champs, symbolisée par (pk) dans l'exemple au dessus^^).
Donc, non sans erreur, il est habituel de penser à plusieurs clés primaires pour une table.

C'est une bonne precision de ta part, cependant pour les neophytes comme moi ce n'est pas inconcevable de penser de cette manière. Ce qui est souligner pour corriger cet conception de la clé primaire.

Amicalement

Pour repondre à la question initiale, il est donc possible d'avoir une clé primaire champ1(PK) d'une table A pointant sur la clé primaire champ1(pk) d'une table B. C'est d'ailleurs de cette maniere que l'on pourrait trouver les tables representant une généralisation en UML (pour le reverse engineering) meme si on a tendance a les regrouper en une seule table. Par contre je ne pourrais pas te dire quelle sera la reaction lors de l'enregistrement sur la table A, car un enregistrement ayant la meme clé primaire devrait aussi se trouver dans la table B. Faudrait il penser aux trigger pour lever ce problème ?
Polux31- 15 mai 2009 à 19:41
Bonjour,

Je pense que tu confonds contrainte d'unicité et clé primaire. Une clé primaire peut avoir plusieurs formes (numérique, alphanumérique ou toute autre représentation) mais reste un champ unique, déclaré PK, ne pouvant contenir de doublons.

On peut mettre une contrainte empêchant de contenir des doublons dans un champs sans pourtant autant être un champ clé primaire. Cette contrainte est implicite dans un champ déclaré clé primaire. Ce sont 2 choses bien différentes.

il est donc possible d'avoir une clé primaire champ1(PK) d'une table A pointant sur la clé primaire champ1(pk) d'une table B. ... c'est malheureusement faux. Une relation entre deux tables se fait via une clé dite étrangère.



;o)
carmen - 14 oct. 2009 à 16:07
comment j'ai compris
paco503 - 20 nov. 2009 à 21:40
bonjour , j'ai un probleme la pour créer une table en sql avec wamp server version 2.La table est contituée de la concatenation des propriétés de deux autres tables voici le script "CREATE TABLE subir (
`vin` int(11) NOT NULL,
`numrep` int(11) NOT NULL,
KEY `vin` (`vin`),
KEY `numrep` (`numrep`),
CONSTRAINT `fk_vin` FOREIGN KEY (`vin`) REFERENCES `vehicule` (`vin`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_numrep` FOREIGN KEY (`numrep`) REFERENCES `reparation` (`numrep`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1" quant j'exécute sa me dit "#1005 - Can't create table 'gestion_auto.subir' (errno: 150)".aidez s'il vous plait.
Ajouter un commentaire
Réponse
+0
moins plus
bonjour,

Peux-tu être plus explicite, stp ... ?

;o)

polux
Ajouter un commentaire
Réponse
+0
moins plus
on a une table pige_brute où il ya les champs (campagne,support et date) tous des clés primaires c'est la table parent
et une table calendrier où il ya les champs (mois, saison) et le champs date qu'on ve extraire de la table pige_brute
donc c'est une clé étrangere n'est ce pas?
et je veux aussi qu'elle soit la clé primaire de la table calendrier car le mois et la saison ne peuvent pas l'etre
date serais une cle primaire des 2 tables calendrier et pige_brute
comment faire?????
Ajouter un commentaire
Réponse
+0
moins plus
je ne connais pas le principe d'une table "parent" ... pour moi une base est faite de table avec des relations entre-elles de type "1,1" ou "1,n" ou "n,n". Une clé primaire ne peut être qu'unique dans une table et il ne put y en avoir qu'une et une seule ... la table pige_brute ne peut pas avoir 3 clés primaires ... il y a quelque chose qui cloche dans les relations des tables ... une clé étrangère ne peut pas devenir clé primaire de la table.

;o)

polux
Ajouter un commentaire
Réponse
+0
moins plus
Polux,

Il est vrai que sa conception des bases de données est un peu bizarre... (ou je n'ai pas tout compris!... ou c'est peut être une bonne méthode pour qu'un "kamikase" plante une base!lol)
cela dit, il a raison sur un point : Il est possible de créer 2 clés primaires dans une même table. Cela peut être utile, par ex :
Article (pk)
Version (pk)
ligne
description

La table ci-dessus considère un article unique, mais avec des variantes.
Polux31- 30 avril 2008 à 08:36
Ah bon ... c'est nouveau alors ...
Il ne faut pas confondre clé primaire et contrainte d'unicité, un petit rappel est, je pense, nécessaire :

Dans une base de données relationnelle, une clé primaire est une contrainte d'unicité qui permet d'identifier de manière unique un enregistrement dans une table. Une clé primaire peut être composée d'un ou de plusieurs champs de la table. Deux lignes distinctes de la table ne peuvent pas avoir les mêmes valeurs pour les champs définis au niveau de la clé primaire. Il est possible de définir pour une même table plusieurs contraintes d'unicité, mais au plus une seule clé primaire
source : http://fr.wikipedia.org/wiki/Cl%C3%A9_primaire. Mais tous les bons tutos disent la même chose, il ne peut y avoir une et une seule clé primaire par table.

;o)

polux
Me - 20 mars 2012 à 14:57
.. Il y a un amalgame dans ces réponses je pense..

Une clé primaire est en effet toujours unique dans une même table (la contrainte d'unicité dont on a parlé). Cette clé primaire peu aussi si cela est nécessaire être composée de plusieurs champs (soit pour garantir cette unicité soit pour simplement définir des relations différentes ->1;n ou n;n , d'ou la différence entre une clé primaire simple ou composée).

Finalement ces champs qui ensemble forment la clé primaire peuvent être "repris" dans d'autres tables en tant que clé étrangère et vont donc référencer notre clé primaire composée.
Ajouter un commentaire
Ce document intitulé « SQL double clé primaire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?