Як стварыць табліцу прадуктаў, у якіх кожны прадукт пад некалькі катэгорый у MySQL?

У мяне ёсць 2 табліцы MySQL:

categories (id int, name varchar(1000))

і

products (id int, name varchar(1000))

Кожны прадукт можа быць пад некалькі катэгорый. Я маю на ўвазе, дадаўшы слупок «category_ids» у таблiцы «прадукты» з катэгорыяй ідэнтыфікатарамі, падзеленых кропкай з коскі, але гэты спосаб нязручны для запыту MySQL.

Любыя іншыя магчымыя метады?

0

4 адказы

Стварыце табліцу, адпаведную прадукцыю катэгорый:

product_id category_id
1          1
1          2
2          5
3          5
3          2

і г.д. Спадзяюся, што гэта дапамагае :)

5
дададзена

зрабіць трэцюю табліцу, якая мае Refernce да абодвух табліцы, як у малюнку ніжэй

enter image description here

2
дададзена
аб вялікім, як я мог забыць гэты спосаб адлюстравання паміж 2 табліцамі, ТКСОМ за напамін
дададзена аўтар jondinham, крыніца

Дадаць табліцу пераходу, які злучае два:

**product_categories**
productid (FK ref product.id)
categoryid (FK ref categories)
2
дададзена

Гэта, здаецца, многія да многіх ....

Каб адлюстраваць адносіны многія да многіх, і будзе мець патрэбу ў іншай табліцы

categories_products(id, category_id, product_id) 

таму адзін прадукт можа патрапіць пад шмат катэгорый і гэтак жа адна катэгорыя можа ўтрымліваць шмат прадуктаў.

Табліца прадукту будзе мець адзін-да-шматлікім з табліцай categories_products Катэгорыі табліца будзе таксама мець адзін да многіх relationip са сталом categories_products

вось стандартны спосаб рэалізаваць многія да многіх адносін

1
дададзена
кластарны складовай першасны ключ (category_id, product_id) будзе лепш забяспечваць цэласнасць і быць значна больш прадукцыйным - загубіць бессэнсоўную сурагатнай PK і чытаць на тыпах індэксаў stackoverflow.com/questions/4419499/…
дададзена аўтар Jon Black, крыніца