Potrzebujesz trzech stołów:
- Jedna tabela na
articles
- Jedna tabela dla
categories
- Jedna tabela łącząca artykuły z kategoriami, możemy ją nazwać
categories_per_article
. Ta tabela często nazywana jest Tabelą połączeń lub tabelą skojarzeń .
Przykładowe dane:
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
Zobaczysz, że artykuł 1 (Fuzz) ma trzy kategorie, a artykuł 2 (Bizz) ma tylko kategorię 1. Nazywamy to relacja wiele-do-wielu (lub n-do-n, na przykład w ER lub UML), ponieważ artykuł 1 ma wiele kategorii, a kategoria 1 jest używana przez wiele artykułów.
Możesz wykonać wszystkie możliwe zapytania za pomocą tego schematu - możesz śmiało pytać w komentarzach o konkretne przykłady (takie jak How do I get all articles which have categories 1 and 3 but not 2
).