Hai bisogno di tre tabelle:
- Una tabella per
articles
- Una tabella per
categories
- Una tabella che collega gli articoli alle categorie, potremmo chiamarla
categories_per_article
. Questa tabella è spesso chiamata tabella di giunzione o tabella di associazione .
Dati di esempio:
ARTICLES
ID | Name | Description
1 | Fuzz | A fuzzy three
2 | Bizz | A five that means bizznezz
CATEGORIES
ID | Name
1 | Prime numbers
2 | Multiples of five
3 | Smaller than four
CATEGORIES_PER_ARTICLE
ID | ARTICLE_ID | CATEGORY_ID
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
Vedrai che l'articolo 1 (Fuzz) ha tre categorie e l'articolo 2 (Bizz) ha solo la categoria 1. Lo chiamiamo relazione molti-a-molti (o n-to-n, ad esempio in ER o UML), perché l'articolo 1 ha più categorie e la categoria 1 è utilizzata da più articoli.
Puoi eseguire tutte le possibili query utilizzando questo schema:sentiti libero di chiedere nei commenti esempi specifici (come How do I get all articles which have categories 1 and 3 but not 2
).