Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przypisać wiele identyfikatorów do jednego wiersza w MySQL?

Jak już sugerowali inni, relacja wiele-do-wielu jest reprezentowana w modelu fizycznym przez tabelę skrzyżowań. Wykonam pracę nóg i zilustruję to dla Ciebie:

CATEGORY_ITEM to tabela połączeń. Ma złożoną PK składającą się z FK przeniesionych z pozostałych dwóch tabel. Przykładowe dane...

KATEGORIA:

CATEGORY_ID CATEGORY
----------- --------
1           Apple
2           Orange

ELEMENT:

ITEM_ID     NAME
-------     ----
1           Foo
2           Bar

CATEGORY_ITEM:

CATEGORY_ID ITEM_ID
----------- -------
1           1
2           1
1           2

Powyższe oznacza:„Foo to zarówno Apple, jak i Orange, Bar to tylko Apple” .

PK zapewnia, że ​​dana kombinacja kategorii i przedmiotu nie może istnieć więcej niż raz. Kategoria jest połączona z elementem lub nie jest - nie może być połączona wielokrotnie.

Ponieważ chcesz przede wszystkim wyszukiwać elementy z danej kategorii, kolejność pól w PK to {CATEGORY_ID, ITEM_ID}, więc bazowy indeks może spełnić to zapytanie. Dokładne wyjaśnienie, dlaczego wykracza poza ten zakres - jeśli jesteś zainteresowany, gorąco polecam przeczytanie Use The Index, Luke ! .

A ponieważ InnoDB używa klastrowania , spowoduje to również przechowywanie elementów należących do tej samej kategorii fizycznie blisko siebie, co może być raczej korzystne dla operacji we/wy powyższego zapytania.

(Jeśli chcesz zapytać o kategorie danego elementu, musisz odwrócić kolejność pól w indeksie).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyodrębnić dane json i wstawić do mysql php

  2. Jak mogę dołączyć do wielu stołów w symfony2?

  3. Błąd zbyt wielu otwartych plików na Ubuntu 8.04

  4. Paginacja w nodejs z mysql

  5. mysql SORTUJ WEDŁUG ilości unikalnych dopasowań słów