1. 程式人生 > >資料庫設計-橫表縱表的理解

資料庫設計-橫表縱表的理解

橫表就是普通的建表方式,如一個表結構為:主鍵、欄位1、欄位2、欄位3。。。 如果變成縱表後,則表結構為: 主鍵、欄位程式碼、欄位值。而欄位程式碼則為欄位1、欄位2、欄位3。 具體為電信行業的例子。以使用者帳單表為例一般出賬時使用者有很多費用客戶,其資料一般儲存為:時間,客戶ID,費用科目,費用。這種儲存結構一般稱為縱表,其特點是行數多,欄位少。縱表在使用時由於行數多,統計使用者數或對使用者進行分檔時還需要進行GROUP BY 操作,效能低,且操作不便,為提高效能,通常根據需要將縱表進行彙總,形成橫表,比如:時間、客戶ID,基本通話費、漫遊通話費,國內長途費、國際長途費....。通常形成一個客戶一行的表,這種表統計使用者數或做分檔統計時比較方便。另外,資料探勘時用到的寬表一般也要求是橫表結構。縱表對從資料庫到記憶體的對映效率是有影響的,但細一點說也要一分為二:縱表的初始對映要慢一些;縱表的變更的對映可能要快一些,如果只是改變了單個欄位時,畢竟橫表字段比縱表要多很多。我想這個還是在討論如何優化資料庫資料結構的問題,而我的意見是:如果有可能,還是不要用資料庫的好。