Rechercher : dans
Par :

SQL double clé primaire

Dernière réponse le 20 nov 2009 à 21:40:28 kamikaz121, le 3 avr 2008 à 11:40:44 
 Signaler ce message aux modérateurs

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....

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « SQL double clé primaire » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Duplicate entry '127' for key 1 VoirVous tentez de faire une insertion dans une table de votre base de données MySQL et vous obtenez l'erreur MySQL suivante: Duplicate entry '127' for key 1 Ceci provient très probablement du fait que la clé primaire de votre table est de type TINYINT...
SQL - Contraintes d'intégrité VoirExpression de contraintes d'intégrité Une contrainte d'intégrité est une clause permettant de contraindre la modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base soient...
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...
SQL - Création de vues VoirQu'est-ce qu'une vue? Une vue est une table virtuelle, c'est-à-dire dont les données ne sont pas stockées dans une table de la base de données, et dans laquelle il est possible de rassembler des informations provenant de plusieurs tables. On parle...

1

Polux31, le 3 avr 2008 à 11:50:34

Bonjour,

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

;o)

polux

Répondre à Polux31

2

kamikaz121, le 3 avr 2008 à 11:57:49

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?????

Répondre à kamikaz121

3

Polux31, le 3 avr 2008 à 12:13:51

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

Répondre à Polux31

4

setfocus, le 29 avr 2008 à 19:09:10

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.

Répondre à setfocus

5

Polux31, le 30 avr 2008 à 08:36:00

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

Répondre à Polux31

6

Abygae, le 15 mai 2009 à 13:37:43

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 ?

Répondre à Abygae

7

Polux31, le 15 mai 2009 à 19:41:28

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) «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

8

carmen, le 14 oct 2009 à 16:07:53

Comment j'ai compris

Répondre à carmen

9

 paco503, le 20 nov 2009 à 21:40:28

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.

Répondre à paco503