php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?
我有兩張桌子
table: people
id name goods_owned
1 john 1,4,3
2 Mike 2,5
3 Sam 1,5,2
4 Andy 5,3,4
–
table goods:
g_id g_name g_class
1 sugar food
2 salt food
3 boat transp
4 house habitation
5 car transp
這是餐具的簡(jiǎn)單例子,其實(shí)際上非常長(zhǎng)并且人們中的每個(gè)人可以分配給他的多個(gè)商品,例如汽車,船,糖等沒(méi)有一個(gè)人可以擁有多少和它完全隨機(jī)的限制.我找不到更好的方法來(lái)存儲(chǔ)它而不是昏迷分離,例如1,5,3
我有問(wèn)題做出我需要的選擇,例如
SELECT people.*, goods.name
FROM people
LEFT JOIN goods ON goods.g_id = people.goods_owned
WHERE name = "Sam"
然而問(wèn)題是goods_owned在單元格中有多個(gè)商品ID,他們需要以某種方式分解才能得到答案:
1, Sam, sugar, car, salt
如果您知道在一個(gè)單元格中存儲(chǔ)(例如100)多個(gè)值昏迷的更好的替代方法,請(qǐng)告訴我.
解決方法:
一個(gè)人可以與零,一個(gè)或多個(gè)商品相關(guān).
好的可以與零,一個(gè)或多個(gè)人有關(guān).
那是多對(duì)多的關(guān)系.
通常,我們通過(guò)創(chuàng)建第三個(gè)表來(lái)處理這個(gè)問(wèn)題,這是一個(gè)指向其他兩個(gè)表的“關(guān)系”
table: goods_owned
people_id goods_id
1 1
1 4
1 3
2 2
2 5
3 1
3 5
3 2
4 5
4 3
4 4
這兩列的組合可以指定為唯一,并可以作為表的主鍵.每列可以定義為父表的外鍵.
CREATE TABLE goods_owned
( people_id INT UNSIGNED NOT NULL
, goods_id INT UNSIGNED NOT NULL
, PRIMARY KEY (people_id, goods_id)
, KEY FK_goods_owned_people (people_id)
, KEY FK_goods_owned_goods (goods_id)
, CONSTRAINT FK_goods_owned_people FOREIGN KEY (people_id) REFERENCES people (id)
, CONSTRAINT FK_goods_owned_goods FOREIGN KEY (goods_id) REFERENCES goods (g_id)
) ;
另一種選擇,如果“商品”集是靜態(tài)且定義良好的,并且不需要在表中表示,那么您可以使用MySQL SET數(shù)據(jù)類型,并且只有一個(gè)表.但是這種方法只適用于集合是靜態(tài)的(不需要更改).
標(biāo)簽:php,mysql,select
來(lái)源: https://codeday.me/bug/20190620/1249739.html
總結(jié)
以上是生活随笔為你收集整理的php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Chrome不支持showModalDi
- 下一篇: 2022-2028年中国综艺节目市场深度