2010-01-20 6 views
2

Tout d'abord, je tiens à remercier tous ceux d'entre vous qui m'ont aidé à comprendre la normalisation et comment je devrais construire ma base de données.tables de liaison MySQL; quelques questions finales

Maintenant, j'ai quelques questions finales gauche ...

Comment des tables réellement LINKING fonctionne?

que vous avez trois tables:

CATEGORY TABLE: 
cat_id (PK) -> 1 
cat_name -> cars 

CATEGORY_OPTIONS TABLE: 
cat_opt_id (FK) -> 1 
cat_id (FK) -> 1 
option_name -> year 

CATEGORY_OPTIONS_VALUES TABLE: 
cat_opt_val_id (PK) -> 1 
cat_opt_id (FK) -> 1 
value -> 1999 

Fondamentalement, les valeurs devraient ressembler à ceci:

CATEGORY 
(1, cars) 
(2, MC) 

CATEGORY_OPTIONS 
(1, 1, year) 
(2, 1, fuel) 
(3, 2, type) 

CATEGORY_OPTIONS_VALUES 
(1, 1, 2010) 
(2, 1, Petrol) 
(3, 2, Cross) 

Est-ce exact que je l'ai configuration ci-dessus?

Comment est-ce que je chercherais ceci, comment est faite la logique?

Je pense que je besoin d'exemples de requêtes de PHP (SELECT etc)

que vous voulez rechercher une voiture -> = année 2010, le carburant = PETROL comment est la requête alors? ET DITES que vous voulez chercher une voiture -> carburant = PETROL, année = quoi

Enfin, dois-je utiliser AutoIncrement sur l'un de ces champs? Et quand est-ce que AI est utilisé?

Merci

PS: Pour plus d'informations, consultez ce Q: Can this MySQL db be improved or is it good as it is?

Répondre

0

Vous voulez SQL rejoint. La liaison de table est une technique totalement indépendante qui n'a rien à voir avec ce que vous essayez de réaliser (pour plus de détails, voir la documentation de MySQL sur le moteur MERGE). En général:

SELECT f.name, b.value 
FROM foo f 
LEFT JOIN bar b ON b.foo_id = f.id 
WHERE f.age > 10 
HAVING b.value IS NOT NULL 

Afin de comprendre comment les jointures sont effectuée, vous devez comprendre comment le moteur de base de données traite une requête - en particulier l'importance des conditions ON, clauses where et having qui appliquent toutes à différents stades.