Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

um artigo em várias categorias


Você precisa de três tabelas:
  • Uma tabela para articles
  • Uma tabela para categories
  • Uma tabela vinculando artigos a categorias, podemos chamá-la de categories_per_article . Essa tabela geralmente é chamada de tabela de junção ou tabela de associação .

Dados de exemplo:
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

Você verá que o artigo 1 (Fuzz) tem três categorias e o artigo 2 (Bizz) tem apenas a categoria 1. Chamamos isso de relação muitos-para-muitos (ou n-para-n, por exemplo em ER ou UML), porque o artigo 1 tem várias categorias e a categoria 1 é usada por vários artigos.

Você pode fazer todas as consultas possíveis usando este esquema - sinta-se à vontade para pedir nos comentários exemplos específicos (como How do I get all articles which have categories 1 and 3 but not 2 ).