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
這是餐具的簡單例子,其實際上非常長并且人們中的每個人可以分配給他的多個商品,例如汽車,船,糖等沒有一個人可以擁有多少和它完全隨機的限制.我找不到更好的方法來存儲它而不是昏迷分離,例如1,5,3
我有問題做出我需要的選擇,例如
SELECT people.*, goods.name
FROM people
LEFT JOIN goods ON goods.g_id = people.goods_owned
WHERE name = "Sam"
然而問題是goods_owned在單元格中有多個商品ID,他們需要以某種方式分解才能得到答案:
1, Sam, sugar, car, salt
如果您知道在一個單元格中存儲(例如100)多個值昏迷的更好的替代方法,請告訴我.
解決方法:
一個人可以與零,一個或多個商品相關.
好的可以與零,一個或多個人有關.
那是多對多的關系.
通常,我們通過創建第三個表來處理這個問題,這是一個指向其他兩個表的“關系”
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)
) ;
另一種選擇,如果“商品”集是靜態且定義良好的,并且不需要在表中表示,那么您可以使用MySQL SET數據類型,并且只有一個表.但是這種方法只適用于集合是靜態的(不需要更改).
標簽:php,mysql,select
來源: https://codeday.me/bug/20190620/1249739.html
總結
以上是生活随笔為你收集整理的php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chrome不支持showModalDi
- 下一篇: 2022-2028年中国综艺节目市场深度