liaisons entre les tables

Mammouth du PHP | 1511 Messages

31 déc. 2005, 17:21

Slt,
J'utilise dbdesigner pour faire ma table mysql et je me pose une question, a quoi ca sert de lier les tables et quels avantages cela apporte?
@+

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 déc. 2005, 17:40

Dans une base de données relationnelle, a base est de créer des tables avec un minimum de redondance d'informations. Pour çela, les tables sont liées entre elles afin que les informations d'une table soient liée à un seconde table.

Par exemple, tu as des client qui achetent des produits
tu créés une table client, une table produit et une table achete comme suit

Code : Tout sélectionner

+-----------+ +------------+ | Clients | | Achete | +------------+ +-----------+ +------------+ | Produit | | id_client |----| id_client | +------------+ | Nom | | id_produit |----| id_produit | | Prenom | +------------+ | libelle | | num_tel | | prix | +-----------+ +------------+
Le fait de les lier te permet de dire que tel produit est acheté par tel client
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1511 Messages

01 janv. 2006, 02:03

Est-ce que une personne pourra m'aider pour ces liens car j'y comprends vraiment rien, c'est pas faute d'avoir essayé... désolé
@+

Mammouth du PHP | 19672 Messages

01 janv. 2006, 12:40

Qu'est-ce que tu ne comprends pas au juste ?

Regarde l'exemple que te montre Zeus : le lien entre une table et une autre est matérialisé par le fait qu'un des champs se retrouve dans les deux tables. Le champ de la première table est sa clé primaire : dans la seconde table, ce même champ sera une clé étrangère. Ça veut dire quoi ? Tout simplement qu'une ligne précise de la seconde table correspond à une ligne de la première table.

Alors c'est peut-être encore un peu flou pour toi à ce stade. Mais pose toi la question, reprends ces tables et supprime ces clés. Comment pourrais-tu alors faire pour déterminer quelle ligne de la première table correspond à telle ou telle ligne de la seconde ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

02 janv. 2006, 04:17

Ah ok, je comprends mieux d'un coup, ca va me permettre de faire des economis dans ma bdd.
En fait, si je mets a jour le champ post_id de la table 1 qui est lié au champ post_id de la table 2, le champ de la teble 2 sera lui aussi mis a jour?
@+

Mammouth du PHP | 19672 Messages

02 janv. 2006, 08:14

Ce n'est pas tout à fait ça : disons que ça ne se fera pas automatiquement. En revanche, ça te permettra de concevoir des requêtes basées sur la clé de la première table pour mettre à jour les lignes correspondantes de la seconde table.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

02 janv. 2006, 18:45

ok.
merci
@+