2012-02-15 3 views
3

J'utilise MySQL comme base de données et j'ai quelques questions de conception:

J'ai une table « locations » contenant locID, lat & long & valeurs de nom d'une localité.

J'ai également un tableau categories avec ID et category-name & locID.

Maintenant, je veux m'assurer que les catégories peuvent être assignées à plusieurs emplacements. Comment est-ce que je fais cela correctement? Cela n'a pas vraiment de sens d'avoir la même catégorie stockée plusieurs fois, une fois pour chaque locID, n'est-ce pas? Quel est le chemin pour aller ici?conception de base de données MySql

Merci! Ron

Répondre

2

Vous pouvez utiliser un join table pour modéliser la relation plusieurs-à-plusieurs.

location_category 
location_id category_id 
1    1 
1    2 
2    1 
2    3 
3    4 

Ajouter les clés étrangères pour empêcher les valeurs non valides d'être entré dans la table:

  • De location_category.location_id à locations.locID
  • De location_category.category_id à categories.ID

Assurez-vous également (location_id, category_id) primaire clé pour la table pour éviter d'ajouter une catégorie à la même localisation n fois plusieurs fois.


Lors de la lecture des données de la table, l'utilisation JOIN pour obtenir les données relatives aux tableaux principaux:

SELECT ... 
FROM location_category 
JOIN locations ON location_category.location_id = locations.locID 
JOIN categories ON location_category.category_id = categories.ID 
WHERE .... 
+0

Huh, je ne comprends pas vraiment, quel genre de champs ai-je besoin créer pour lier la catyegorie à l'emplacement? – cerr

+0

Ah, j'ai compris, c'est génial, j'ai juste besoin d'une table (clé étrangère) pour associer une clé à l'autre, génial! Je vous remercie! – cerr

Questions connexes