sql >> Databáze >  >> RDS >> Mysql

Jak přiřadit více ID k jednomu řádku v MySQL?

Jak již naznačili jiní, vztah many-to-many je ve fyzickém modelu reprezentován spojovací tabulkou. Udělám práci nohou a ukážu vám to:

CATEGORY_ITEM je spojovací tabulka. Má složený PK sestávající z FK migrovaných z dalších dvou tabulek. Příklad dat...

KATEGORIE:

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

POLOŽKA:

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

CATEGORY_ITEM:

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

Výše uvedené znamená:"Foo je Apple i Orange, Bar je jenom Apple" .

PK zajišťuje, že žádná daná kombinace kategorie a položky nemůže existovat více než jednou. Kategorie je buď spojena s položkou není - nelze ji připojit vícekrát.

Protože chcete primárně hledat položky dané kategorie, pořadí polí v PK je {CATEGORY_ID, ITEM_ID}, takže základní index může tento dotaz uspokojit. Přesné vysvětlení proč je mimo tento rámec – pokud vás to zajímá, vřele doporučuji přečíst Use The Index, Luke ! .

A protože InnoDB používá shlukování , bude to také ukládat položky patřící do stejné kategorie fyzicky blízko sebe, což může být pro I/O výše uvedeného dotazu spíše výhodné.

(Pokud byste se chtěli dotazovat na kategorie dané položky, museli byste otočit pořadí polí v indexu.)



  1. Seznam tabulek ve schématu PostgreSQL

  2. Jak ručně nastavit počáteční hodnotu na 1000 v MySQL

  3. Převeďte datum na název měsíce a rok

  4. Potřebujete pomoc s výpočtem pomocí dvou sad dat pomocí Expression SSRS