我正在維護一個專注於銷售服裝的電子商務網站(在LAMP中)。SQL模式設計:在獲取數據時多對多的關係麻煩
數據庫最重要的表格就是服裝表。
此表有一個像「服裝名」,「服裝類」,「服裝風格」
有在數量上佔一些風格領域。
例如,
1 =方式2 =可愛3 =性感4 =休閒..等
每服裝可以有多個樣式(由逗號分隔),所以行可能看起來像這樣的:
'clothing_name' 'clothing_style'
Nice T-shirt 1,3,11,15
Old Jeans 1,2,8
Adida T-shirt 3,4,7
Nike T-shirt 3,4,7
我想要顯示的風格的一個服裝每次
,我做這樣的事情:
<?php
/*
* $clothing['style'] is not usable
* so transform it into array first
*/
$style_numbers = explode(",", $clothing['style']);
$clothing['style_numbers'] = array();
if (!empty($clothing['style'])){
foreach ($style_numbers as $style_number){
$clothing['style_numbers'][] = (int) $style_number;
}
}
// and then mapping the numbers into its corresponding names
?>
這樣,我得到了一個樣式數組,我可以用這個來顯示樣式名稱。
一切都很好,直到我要實現「同類服裝」功能
我不知道如何設置SQL子句甚至還讓所有的「可愛」的衣服(樣式代碼爲可愛的是2)
我有兩個問題
我怎麼能實現在這種情況下,「類似的服裝」功能?
以這種方式實現多對多關係(將所有值存儲在一個由逗號分隔的字段中)是一種不好的做法?如果是這樣,有什麼更好的解決方案?
我很欣賞任何建議。
非常感謝你,對不起我的可憐的英語。
1.請參閱2. 2.這是不好的做法。見正常化。 – Strawberry