Besoin d'aide en bd
jc
-
Samir -
Samir -
j'ai un pb en base e données, j'aimerais savoir si dans une bd il est possible (et logique) de dupliquer les champs de la clé primaire d'une des entités dans les autres entités afin d'accéder à ces autres entités. Je remercie d'avance ceux qui repondront à mon message.
2 réponses
Il faut éviter la redondance des données.
Par contre, ce que tu cites ressemble beaucoup à des clés étrangères.
Exemple:
Table PAYS:
- codePays (clé primaire)
- nomPays
Table CLIENT
- codeClient (clé primaire)
- nomClient
- codePays (clé étrangère vers table PAYS)
Ensuite, pour trouver tous les clients qui sont en france:
SELECT * FROM CLIENT where codePays = 'FR'
Et pour afficher : nomClient et nomPays:
SELECT CLIENT.nomClient, PAYS.nomPays
WHERE CLIENT.codePays = PAYS.codePays
Par contre, ce que tu cites ressemble beaucoup à des clés étrangères.
Exemple:
Table PAYS:
- codePays (clé primaire)
- nomPays
Table CLIENT
- codeClient (clé primaire)
- nomClient
- codePays (clé étrangère vers table PAYS)
Ensuite, pour trouver tous les clients qui sont en france:
SELECT * FROM CLIENT where codePays = 'FR'
Et pour afficher : nomClient et nomPays:
SELECT CLIENT.nomClient, PAYS.nomPays
WHERE CLIENT.codePays = PAYS.codePays
Il ne faut pas le faire a tout va, mais quand cela est necessaire, ca fait partie d'une programmation saine...
Dans l'ideal, tu modelises avant et quand tu fait une association entre deux tables, tu cree une table avec leur 2 cles primaires
Si tu as de plus ample question, n'hesites pas...
En esperant avoir ete utile...
Teebo...
"Le Sage a des questions, l'idiot des réponses..."
Dans l'ideal, tu modelises avant et quand tu fait une association entre deux tables, tu cree une table avec leur 2 cles primaires
Si tu as de plus ample question, n'hesites pas...
En esperant avoir ete utile...
Teebo...
"Le Sage a des questions, l'idiot des réponses..."
dupliquer des clés Primaire c pas conseiller, a moins que c naicessaire, cela depent de quelle normal form tu utilise, il y´a aussi la notion de clée combiné, et la tu peut avoir par exemple le meme ID pour diferente valeur, si la base de donné suporte les clées combiné en Oracle ca marche, peut combiner jusqu´a 16 champs dans une clé,
ex:
create table ETUDIANT
(
ETUDIANT_ID NUMBER(5) NOT NULL,
ETUDIANT_NAME VARCHAR2(10) NOT NULL,
DATE_DINSCRITION DATE NOT NULL,
CONSTRAINT PK_ETUDIANT PRIMARY KEY ETUDIANT_ID,DATE_DINSCRITION
);
la tu peut avoir pour le meme ETUDIANT_ID plusieur DATE_DINSCRITION peut etre pour la 1 er et la 2 emem session, et tu peut avoir aussi pour la meme date d´inscription une liste d´etudiant, le pb c que tu doit controller avant si tes données sont consistant.
);
ex:
create table ETUDIANT
(
ETUDIANT_ID NUMBER(5) NOT NULL,
ETUDIANT_NAME VARCHAR2(10) NOT NULL,
DATE_DINSCRITION DATE NOT NULL,
CONSTRAINT PK_ETUDIANT PRIMARY KEY ETUDIANT_ID,DATE_DINSCRITION
);
la tu peut avoir pour le meme ETUDIANT_ID plusieur DATE_DINSCRITION peut etre pour la 1 er et la 2 emem session, et tu peut avoir aussi pour la meme date d´inscription une liste d´etudiant, le pb c que tu doit controller avant si tes données sont consistant.
);