看板 Database 關於我們 聯絡資訊
※ 引述《danielguo (Daniel Guo)》之銘言: : : 3:使用紀錄 (rec) + 集合資料(collect) : : 紀錄ID 日期 時數(min) 零件集合ID : : 001 20110401 50 01 : : 002 20110402 100 02 : : 集合ID 主元件ID 零件ID : : 01 A 001 : : 01 A 002 : : 01 A 003 : : 02 B 002 : : 02 B 003 : : 這樣的話,統計會方便點、資料量也會比較少。 : : 可是集合的編輯似乎會比較麻煩點,可能會變成同樣的集合重複的出現。 : : 看起來也只是把1的方法更正規化一點。 : : 請問是否還可以有更理想的資料結構呢? : 3 比較適合, 不過這邊欄位不對, 應該是 嗯,因為主元件實體上還是會有一個不可變動的主體在。 零件是裝在主體上,所以我還是意屬把主件ID跟集合ID綁在一起。 : 紀錄ID 日期 時數(min) 主元件ID 零件集合ID : 001 20110401 50 A 01 : 002 20110402 100 B 02 : 集合ID 零件ID : 01 001 : 01 002 : 01 003 : 02 002 : 02 003 : 設定主鍵為 (集合ID, 零件ID), 這樣便一定不會重複 (當然應用程式應該先檢查) : 3 更正了之後基本上和 2 儲存的資料量相同 : 除非有其他額外欄位要考慮, 不然應該這樣用沒錯 既然如此,再順勢問一下相關的判斷法 如果我要做零件的變動,例如把零件01移到主元件B去用。 然後過一陣子又再變動回來主元A時。 在SQL如何判斷這種集合是曾經搭配過的? 主件ID B 集合ID 03 零件ID 001 ==>001調回主件A時,判斷這個組合曾經出現在集合ID 01 002 不用再去新增一筆集合ID。 003 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.131.50
danielguo:想到一個辦法是用 hash, MD5("1,2,4,..") 存起來後比對 04/26 02:58
danielguo:用 sha 應該比 md5 更適合 04/26 03:32
JYHuang:呼..還好MySQL有Group_concat這個函式可以算MD5~ 04/26 10:12