Re: [請益] 程式架構

看板PHP作者 (kid...)時間15年前 (2009/06/08 01:51), 編輯推噓0(006)
留言6則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《bobju (寶貝豬)》之銘言: : 首先, 我想你所描述的'大分類'跟'子分類'應該就是'分類'及'項目' : 的意思. 假設是如此, 以下我就用'分類'(class)及'項目'(item)來 : 進行描述. : 這問題主要是對於不定數目或不定形態屬性的分類如何做規劃: : 花跟水果這兩種分類的屬性不太一樣, 像花要登記產地, : 水果要登記重量. 如果還有還有n種不同的分類,各有各的屬性群的話, : 除了個別設計資料表外, 是還有另一種規劃方法, 但適不適合要看實際 : 需求. : classes <= + = attributes <= + : | + = attribute_values : + = items <= + : 這種規劃方式有點複雜, 雖可用來應付不定形態/數目屬性之類別的 : 規劃, 但開發初期的增/刪/改/查的操作模組需要花點功夫, 而且實務上 : 未必能夠符合你所要的(要進一步評估才行). : classes : id,name : 1,水果 : 2,花 : items : id,name,classes_id : 1,西瓜,1 : 2,蘋果,1 : 3,櫻花,2 : 4,向日葵,2 : attributes : id,classes_id,name 1,1,名稱 <== : 2,1,重量 3,2,名稱 <== 這兩個抽象概念上完全一樣,連詞都一樣,已經重複了 要把attr分離出來可以,這樣讓attr保留了新增跟刪除 的彈性,但不要重複兩個一樣的東西(don't repeat ur self), 事實上,我覺得跟attr value合併是比較好的做法,因 為attr更像field : 4,2,產地 : attribute_values : id,items_id,attributes_id,value 1,1,1,'紅肉大西瓜' <== 2,1,2,10kg <== sql應該還沒有動態型別的欄位吧,重量通常用integer之 類比較合適,名稱就是text之類的。 : 3,2,1,'富山蘋果' : 4,2,2,100g : 5,3,3,'日本櫻花' : 6,3,4,'日本' : 7,4,3,'美國向日葵' : 8,4,4,'美國' -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.164.131 ※ 編輯: superGA 來自: 140.119.164.131 (06/08 01:52) ※ 編輯: superGA 來自: 140.119.164.131 (06/08 01:56)

06/08 08:58, , 1F
儘管水果跟花都有'名稱'這個屬性,但誰規定有共通屬性
06/08 08:58, 1F

06/08 08:59, , 2F
的類別不能各自維護的? 只要能夠維持資料一致性及完
06/08 08:59, 2F

06/08 09:00, , 3F
整性原則,哪裏違反正規化?
06/08 09:00, 3F

06/08 09:01, , 4F
另外關於欄位動態型別的問題,確實是在採用前就該考慮
06/08 09:01, 4F

06/08 09:01, , 5F
要不要採用這樣的設計方式.工具無罪,端視符不符合你
06/08 09:01, 5F

06/08 09:01, , 6F
的需要.
06/08 09:01, 6F
文章代碼(AID): #1AA_uY3I (PHP)
討論串 (同標題文章)
文章代碼(AID): #1AA_uY3I (PHP)