看板 Database 關於我們 聯絡資訊
其實正規化是易於編輯(Insert/Update)不利於查詢 反正規化則相反,是利於查詢,不利於編輯 所以反/正規化是虛實相生,正反相剋(我在說啥?) 端看你應用場合而已 用正規化的資料表可以透過子查詢作反正規化的查詢, 不過資料量大的話效率會很慢(子查詢又加Union的關係) Select 伸卡球,滑球,變速球........,Count(*) From (select 投手,Max(伸卡球) as 伸卡球,Max(滑球) as 滑球........ from (select 投手,1 as 伸卡球,0 as 滑球,0 as 變速球... from Table where 球路='伸卡球' union all select 投手,0 as 伸卡球,1 as 滑球,0 as 變速球... from Table where 球路='滑球' union all select 投手,0 as 伸卡球,0 as 滑球,1 as 變速球... from Table where 球路='變速球' .......) group by 投手) ※ 引述《xam (聽說)》之銘言: : ※ 引述《flakchen (flak)》之銘言: : : 改一下欄位比較簡單 : : 投手 伸卡球 滑球 變速球 曲球 : : Wang 1 1 1 1 : : Nilson 1 1 : : Santana 1 1 : : Select 伸卡球,滑球,變速球,曲球,投手 : : order By 伸卡球,滑球,變速球,曲球 : : 就是答案1 : : Select 伸卡球,滑球,變速球,曲球,Count(*) : : Group By 伸卡球,滑球,變速球,曲球 : : 就是答案2 : 原本的 schema 比較接近正規化 : 你這樣反而違反正規化原則吧? : 這樣設計除了對現在這個問題剛好比較好解以外 : 似乎不太有利 : 不過如果如果情況不會變得太複雜,也是一個解法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.12.248