relation entre tables - SQL/NoSQL - Programmation
Marsh Posté le 16-10-2007 à 10:50:28
une table client, avec clé primaire id_client, clé étrangère id_contrat.
(si un client a plusieurs contrats, tu auras donc plusieurs entrée dans cette table pour ce client)
Une table contrat : Clé primaire id_contrat, clé étrangère id_annexe
Une table annexe : Clé primaire id_annexe, clé étrangère id_service
Une table service : Clé primaire id_service
Après à toi d'ajouter d'autre colonnes pour mettre tes codes C-V1-00001 , C-V1-0002 & co
Marsh Posté le 16-10-2007 à 11:00:08
Sinon tu peux aussi rajouter des table de liaisons au lieu de dupliquer chaque ligne pour un client ayant plusieurs contrats.
Un table client avec un id_client en clé primaire (et des colonnes pour les infos clients)
Une table client_contrat avec en clé primaire id_client ou id_contrat et clé étrangère id_client ou id_contrat (bref suffit d'un index).Cette table contiendra seulement 2 colonnes (id_client, id_contrat), ce qui évite de dupliquer toutes les infos d'un client.
Tu peux faire de même entre toutes les tables.
Marsh Posté le 16-10-2007 à 11:06:34
merci pour la réponse.
en attendant, j'avais raisonné dans l'autre sens :
une table contrat , Clé primaire id_contrat, clé étrangère id-client
Une table annexe : Clé primaire id_annexe, clé étrangère id_contrat
Une table service : Clé primaire id_service ; cles etrangeres: id-annexe, id-contrat, id-client
qu'en penses tu ? ca marche aussi ?
Marsh Posté le 16-10-2007 à 11:49:45
Alisteroid a écrit : une table client, avec clé primaire id_client, clé étrangère id_contrat. |
si j'ai une table client comme tu dis , ne vais je pas me heurter au pb suivant :
ex de table clt :
client0001, contrat00001
client0001, contrat 00002 .
si la table client contient une info contrat , alors la clé ne peut plus etre unique puisque j'ai deux enregistrement avec le meme numéro de client .
c'est pour ca que je me demande si la clé etrangere idclient ne doit pas etre plutot contenue dans la table contrat ???
Marsh Posté le 16-10-2007 à 14:05:56
Excuse moi, je me suis trompé, dans ce cas la, tu auras un index sur id_client et une clé primaire sur un premier champ en autoincrement.
Marsh Posté le 16-10-2007 à 10:34:23
bonjour,
j'ai un probleme assez simple a regler sans doute mais j'ai besoin de vos lumieres éclairées !!!
1) il faut que je monte un systeme de tables sous access pour gérer le probleme suivant :
un client peut souscrire un ou plusieurs contrats.
un contrat peut contenir un ou plusieurs annexes
une annexe peut contenir un ou plusieurs services .
j'ai un tableau excel avec toutes les données que j'integre dans une table nommée base avec toutes les infos.
quelle doit etre la structure de mes tables , mais surtout, comme établir les relations ? (la table services reprend elle les clefs des autres tables ? ou alors reprend elle seulement la cle de la table annexe qui reprend la clef de la table contrat ...
c'est peut etre pas tres clair , un bon schéma valant mieux qu'un long discours .
2)par exemple , pour un contrat, il y a un type (par ex: C-V1) et il faut que je rajoute un numéro pour le codifier.
quelle est la technique ? prendre un champ type et aussi un champ code et les mettre en clefs primaires ?
ca me donnerait un code du type C-V1-00001 , C-V1-0002.
ou alors vaut il mieux que je prenne un code unique par contrat ; l'information type restant dispo ??
merci de vos aides .