sql >> Database teknologi >  >> RDS >> Mysql

Hvordan tildeler man flere id'er til en række i MySQL?

Som andre allerede har foreslået, er mange-til-mange forhold repræsenteret i den fysiske model af en forbindelsestabel. Jeg vil gøre benarbejdet og illustrere det for dig:

CATEGORY_ITEM er krydsningstabellen. Den har en sammensat PK bestående af FK'er migreret fra de to andre tabeller. Eksempeldata...

KATEGORI:

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

VARE:

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

CATEGORY_ITEM:

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

Ovenstående betyder:"Foo er både Apple og Orange, Bar er kun Apple" .

PK sikrer, at enhver given kombination af kategori og vare ikke kan eksistere mere end én gang. Kategorien er enten forbundet med varen er ikke - den kan ikke forbindes flere gange.

Da du primært ønsker at søge efter elementer i en given kategori, er rækkefølgen af ​​felter i PK {CATEGORY_ID, ITEM_ID}, så det underliggende indeks kan opfylde denne forespørgsel. Den nøjagtige forklaring på hvorfor ligger uden for dette omfang - hvis du er interesseret anbefaler jeg varmt at læse Use The Index, Luke ! .

Og da InnoDB bruger clustering , vil dette også gemme varer, der tilhører den samme kategori, fysisk tæt på hinanden, hvilket kan være ret fordelagtigt for I/O i forespørgslen ovenfor.

(Hvis du vil forespørge efter kategorier af det givne element, skal du vende rækkefølgen af ​​felter i indekset.)



  1. Opdater specifikke registreringer af MySQL-tabellen

  2. 5 almindelige fejl at undgå, når du de-duperer dine data

  3. MYSQL:Hvor klausulen er tvetydig

  4. Hvordan NOT LIKE virker i MariaDB