我讀過這是一個禁忌,但我想知道這是否總是這樣。我有一張可以容納一系列座位的「餐桌」。
在MySQL中存儲逗號分隔的數據
您可以在圖像中看到table_num 12將容納2或3個座位。
所以,現在我現在的解決方案是查詢所有的表記錄(根據user_index爲未公開的原因),然後循環查找可以容納3人的表的結果(如果碰巧有三個人在尋找表)。
我這樣做是通過在我的返回數據的'席位'列上使用array_implode()方法(在php中)來實現的。我覺得這比創建一個單獨的「席位」表,然後爲每個席位可能性分配一個table_index和user_index,然後必須運行第二個查詢來查找原始「表」表中的table_num更容易。
基本上,通過使用array_implode()我能夠繞過第二個查詢。但是,我不知道這是不是很重要。或者,可能我錯過了一些很棒的查詢語言(如關係表術語?)
只是好奇。爲什麼座位3的桌子總不能坐2?換句話說,爲什麼不能將該列稱爲「max_seats」? – webbiedave 2012-01-18 19:02:14
@webbiedave,這不是一個真正的世界範例。原因是會有一張桌子可容納5或6人,但我們不希望2人坐在那裏,而'max_seats'會在桌子上分配不需要的人數。還有一些其他的雜項。情況與組合的表號碼。 – 2012-01-18 19:15:35
如果您想在組合字段中查找包含10的記錄,會發生什麼情況?如果您將組合數據放在第二個表中,則不需要第二個查詢,只需在您的查詢中加入一個JOIN – 2012-01-18 19:34:29