我是使用SQL Server 2012構建操作數據存儲(ODS)數據庫的團隊成員之一,該數據庫將由我們的一些分析師用於執行預測性建模。 ODS將包含我們生產的單一產品的製造生產數據。表設計 - 寬表與列作爲屬性
我們將在ODS中有數百個表格。但是,我們將有一個核心表,其中將包含有關每個製造項目(每年數千萬)的關鍵信息(生命週期信息)。我們的產品在製造工廠製造,並沿生產線的各個流程移動大約2.5小時。我們希望將各種各樣的製造和後期製造信息存儲在此核心表格中。一個示例數據可能是產品進入特定烤箱的時間。
我們決定如何構建此表。我們可以創建一個寬表(多列)或一個窄表,其中大多數列是行(作爲屬性值)。我從來沒有設計和使用非常狹窄的表格結構,並將列視爲表中的行。
我想就寬桌與窄桌的優缺點進行一些反饋。
產品數量每年生產:下面可能會在本次討論幫助是有用的數百萬個(每個產品實例的將是核心表中的行)
請問這個表中經常查詢:是的,很多時候。它將成爲許多子表的父項。
列(或行性)的潛在數量:75到150+
如果有更多的信息是有用的,我很樂意提供。
您或您的同事給出的窄桌設計有什麼理由?例如,您是否計劃頻繁更改正在跟蹤的一組屬性?你是否關心數據存儲(即你想最小化每條記錄未使用的列)? – mbeckish 2013-05-08 18:49:20
是的,當我們開始跟蹤我們以前沒有跟蹤的數據時,我們可能會經常添加屬性(列)。存儲不是一個大問題。我認爲寬表最大的問題就是處理處理大量使用表的問題的效率(缺少?),其中每行可能有數千字節的長度。 – 2013-05-08 18:55:25
我會研究[數據倉庫](http://www.microsoft.com/en-us/sqlserver/solutions-technologies/data-warehousing.aspx)。表格設計往往與交易型數據庫非常不同,其重點在於易於報告和跟蹤通常在交易設計中被覆蓋的歷史值。 – mbeckish 2013-05-08 18:59:36