Necesitas tres tablas:
- Una tabla para
articles
- Una tabla para
categories
- Una tabla que vincula artículos a categorías, podríamos llamarla
categories_per_article
. Esta tabla a menudo se denomina Tabla de unión o Tabla de asociación .
Datos de ejemplo:
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
Verá que el artículo 1 (Fuzz) tiene tres categorías, y el artículo 2 (Bizz) solo tiene la categoría 1. A esto lo llamamos relación de muchos a muchos (o n-to-n, por ejemplo en ER o UML), porque el artículo 1 tiene varias categorías y la categoría 1 es utilizada por varios artículos.
Puede realizar todas las consultas posibles utilizando este esquema. No dude en solicitar ejemplos específicos en los comentarios (como How do I get all articles which have categories 1 and 3 but not 2
).