imagine que tu as une table "voiture" et une table "marque".
une marque a un identifiant (numéro) un nom (renault, peugeot, etc.), un logo, un slogan, etc.
une voiture est d'une marque.
si je comprend bien, toi, tu as une table marque comme j'ai décrit, et une table voiture, avec des champs spécifiques à une voiture (nombre de porte, motorisation, etc.) plus tous les champs de la table marque, afin de retrouver le logo de la marque pour une voiture donnée. c'est bien ça ?
donc, ça c'est une ineptie, qui ne peut être valable que dans le cas où tu veux historiser les modifications de la marque (et encore, dans ce cas on utilise une autre conception moins gourmande).
ce qu'il faut faire :
Marque :
id
nom
logo
(données)
ID NOM LOGO
-- -------- ------------
1 Renault Losange.gif
2 Citroën Chevrons.gif
|
Voiture :
id
marque_id
nom
categorie
(données)
ID MARQUE_ID NOM CATEGORIE
-- --------- ------ ---------
1 1 Espace Monospace
2 1 R5 Citadine
3 2 AX Citadine
4 2 BX Berline
|
Puis, tu fais ce type de requête :
select m.nom marque, m.logo, v.nom, v.categorie
from marque m inner join voiture v on v.marque_id = m.id
|
Ce qui retournera :
MARQUE LOGO NOM CATEGORIE
------- ------------ ------ ---------
Renault Losange.gif Espace Monospace
Renault Losange.gif R5 Citadine
Citroën Chevrons.gif AX Citatine
Citroën Chevrons.gif BX Berline
|
L'intérêt de ce système, c'est que mettons que Renault change de logo, pour un carré.
Tu modifies alors dans la table MARQUE, et zou ! Ca impacte direct le résultat de cette requête pour toutes les voitures de la marque Renault. C'est donc là qu'on trouve l'intérêt du SGBD... Si c'est juste pour stocker des données figées et dupliquées, il n'y a aucun intérêt !
Message édité par MagicBuzz le 13-09-2006 à 16:53:58