第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

需要設(shè)計(jì)數(shù)據(jù)庫表的指導(dǎo) - (混淆 1 列)

需要設(shè)計(jì)數(shù)據(jù)庫表的指導(dǎo) - (混淆 1 列)

PHP
函數(shù)式編程 2023-04-21 15:19:17
我有兩張桌子。1.產(chǎn)品 2.組合產(chǎn)品表有像 (product_id, product_name) 這樣的列。組合表有像這樣的列 (combo_id, combo_name, combo_included_products /* combo 可能有來自產(chǎn)品表的 2 個(gè)或更多產(chǎn)品 */)規(guī)則:1個(gè)Combo可以有多個(gè)產(chǎn)品。Product Tableproduct_id  product_name1           Pen2           Pencil3           Pen Holders4           Sharpeners-Combo Table     combo_id    combo_name    this_combo_includes_below_products1           Big_combo     (1,2,3,4) => big combo includes all products2           Small_combo   (2,4) => this combo only includes product 2,43           test_combo    (1,2)4           Other_combo   (1,4)那么如何在組合表的第三列中插入多個(gè)產(chǎn)品 ID?我正在考慮存儲(chǔ) 1,2,3,4 和 2,4 等數(shù)據(jù)。然后問題將是編寫連接查詢。IEselect combo.combo_id, combo.combo_name, product.product.id from combo join product ON combo.this_combo_included_products_id = product.product_id <= 因?yàn)闀?huì)有多個(gè)產(chǎn)品id,這是不可能的。我也在考慮制作一個(gè)腳本,我將首先按原樣獲取組合表,然后我將第三個(gè) cloumn 拆分為“,”并將運(yùn)行迭代(選擇 * from combo where product id=this_combo_included_item_id[i]) <=我是不確定這是個(gè)好主意,但這可能是一個(gè)替代解決方案,之后需要一些編碼。(無論如何我都使用 phpmysql 來獲取數(shù)據(jù) - 所以我可以在獲取后處理它。)$sql = "SELECT *  FROM combo";$result = $conn->query($sql);while($row = $result->fetch_assoc()) {  // I can run other query here  $child_query = "select combo.combo_id, combo.combo_name, product.product.id from combo join product                  ON combo.this_combo_included_products_id = product.product_id";}但是,在設(shè)計(jì)數(shù)據(jù)庫表時(shí)我還能做些什么嗎?謝謝。
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

不要在一行中存儲(chǔ)多個(gè)值。不要將數(shù)字存儲(chǔ)為字符串。

產(chǎn)品和組合之間存在多對(duì)多關(guān)系:每個(gè)產(chǎn)品可能出現(xiàn)在多個(gè)組合中,每個(gè)組合可能包含許多產(chǎn)品。從規(guī)范化的角度來看,表示它的正確方法是創(chuàng)建另一個(gè)表,稱為橋接表,以存儲(chǔ)關(guān)系。

create table product_combo (

? ? product_id int references product(product_id),

? ? combo_id int references combo(combo_id),

? ? primary key (product_id, combo_id)

);

對(duì)于您的示例數(shù)據(jù),橋接表將包含:


product_id? ? combo_id

1? ? ? ? ? ? ?1

1? ? ? ? ? ? ?2

1? ? ? ? ? ? ?3

1? ? ? ? ? ? ?4

2? ? ? ? ? ? ?2

2? ? ? ? ? ? ?4

3? ? ? ? ? ? ?1

3? ? ? ? ? ? ?2

4? ? ? ? ? ? ?1

4? ? ? ? ? ? ?4

有了這個(gè)設(shè)置,假設(shè)你想選擇一個(gè)給定的組合及其所有相關(guān)產(chǎn)品,那么你會(huì)去:


select c.*, p.*

from combos c

inner join product_combos pc on pc.combo_id = c.combo_id

inner join products p on p.product_id = pc.product_id

where c.combo_id = ?

如果您真的想要,您甚至可以為每個(gè)組合重建產(chǎn)品的 csv 列表:


select c.combo_id, c.combo_name, group_concat(p.product_name) product_names

from products p

inner join product_combos pc on pc.product_id = p.product_id

inner jon combos c on c.combo_id = pc.combo_id

group by c.combo_id, c.combo_name


查看完整回答
反對(duì) 回復(fù) 2023-04-21
  • 1 回答
  • 0 關(guān)注
  • 106 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)