橫表就是普通的建表方式,如表結(jié)構(gòu)為:主鍵、字段1、字段2、字段3...。 如果變成縱表后,則表結(jié)構(gòu)為: 主鍵、字段代碼、字段值。而字段代碼則為字段1、字段2、字段3...。 具體為電信行業(yè)的例子。以用戶帳單表為例,一般出賬時用戶有很多費用,其數(shù)據(jù)一般存儲為:時間,客戶ID,費用科目,費用。這種存儲結(jié)構(gòu)一般稱為縱表,其特點是行數(shù)多,字段少。縱表在使用時由于行數(shù)多,統(tǒng)計用戶數(shù)或?qū)τ脩暨M行分檔時還需要進行GROUP BY 操作,性能低,且操作不便,為了提高性能,通常根據(jù)需要將縱表進行匯總,形成橫表,比如:時間、客戶ID、基本通話費、漫游通話費、國內(nèi)長途費、國際長途費...。
橫表
優(yōu)點:一行表示了一個實體記錄,清晰可見,一目了然。
缺點:如果現(xiàn)在要給這個表加一個字段,那么就必須重建表結(jié)構(gòu)。
縱表
優(yōu)點:如果現(xiàn)在要給這個表加一個字段,只需要添加一些記錄。
缺點:數(shù)據(jù)描述不是很清晰,而且會造成數(shù)據(jù)庫數(shù)據(jù)很多。另如果需要分組統(tǒng)計,要先group by,較繁瑣。
結(jié)論
應該把不容易改動表結(jié)構(gòu)的設計成橫表,把容易經(jīng)常改動不確定的表結(jié)構(gòu)設計成縱表。
有如下縱表:

將其轉(zhuǎn)為橫表:
[sql] view plain copy PRint?有如下橫表:

將其轉(zhuǎn)為縱表:
[sql] view plain copy print?結(jié)果:
新聞熱點
疑難解答