2014-05-05 5 views
0

Je veux concevoir une base de données simple qui contient des messages. Chaque message a une catégorie. Chaque message peut avoir une ou plusieurs sous-catégories, mais il peut ne pas avoir de sous-catégorie.Conception de base de données simple - stocker des messages

CategoryTable
CategoryKey, Catégorie

SubCategoryTable
SubCategoryKey, CategoryKey, Sous-catégorie,

MessageTable
MessageKey, SubCategoryKey, Message,

Le problème avec cette conception est que si une catégorie de message n'a pas de sous-catégorie, comment puis-je récupérer les messages pour cette catégorie?

Quelle est la meilleure approche pour cela? Devrais-je avoir une sous-catégorie "Aucune"?

Répondre

0

Modifiez la table des messages afin qu'elle pointe vers la table Catégorie. Ajouter un MessageSubcategory Table pour la ou les sous-catégories qu'un message peut avoir.

MessageSubCategoryTable 
----------------------- 
MessageKey 
SubCategoryKey 

Vous pouvez obtenir tout le psudeo Sous-catégories-SQL suivante:

Select Subcategory 
From SubCategoryTable, MessageSubCategoryTable 
Where CategoryKey = CategoryKey from MessageTable 
And SubCategoryKey = SubCategoryKey from MessageSubCategoryTable 
+0

Merci pour cela. Alors, quel serait le pseudo-SQL pour sélectionner tous les messages d'une catégorie donnée? SELECT Message FROM MessageTable WHERE Catégorie = "MaCatégorie" AND SubCategory =? – user3437721

+0

Quelqu'un at-il une réponse à ma requête? – user3437721

+0

Pour une catégorie donnée, le fichier psuedo-SQL serait SELECT Message FROM MessageTable WHERE Catégorie = "MaCatégorie". Si vous voulez inclure les sous-catégories, le psuedo-SQL serait SELECT Message FROM MessageTable WHERE Catégorie = "MaCatégorie" & SELET Sous-catégorie FROM Sous-catégorieTable WHERE Category = "MaCatégorie" –

Questions connexes