我們的ETL團隊和Data Modeler之間有關於表是否應該規範化的爭論,我希望從網上社區獲得一些觀點。沒有域值的表規範化
目前表設置這樣
MainTable LookupTable PrimaryKey (PK) Code (PK) Code (FK) Name OtherColumns
- 這兩個表是僅了一個週期性的文件(從第三方)被填充 通過ETL作業
- 單記錄在文件中包含兩個表中的所有屬性,對於單個行)
- 填充這些表的文件是一個增量(只有其中有一些更改的行在文件中)
- 對一個記錄(同樣只有第三方)的一個屬性進行一次更改將導致該數據的所有數據文件
- 在記錄中的域值的代碼和名稱都 不知道。
問題:LookupTable是否應該非規範化到MainTable中。
- ETL團隊:是的。使用此設置,文件中的每一行首先必須檢查第二個表以查看它們的FK是否在其中(如果不是,則插入),然後添加MainTable行。更多的代碼,更糟的表現,並且稍微有更多的空間。但是,無論第三方對LookupTable.Name進行更改,週期性文件都會反映受影響的每一行,而且我們仍然需要解析每行。如果集中到MainTable中,它就是一個簡單的更新或插入。 Data Modeler:這是標準的良好數據庫設計。
有什麼想法?
這些表是OLTP還是DW/BI系統的一部分?尺寸建模與3NF建模不同。 –
這些表格是一組虛擬服務器的備份,可用於虛擬環境。數據的主要來源由Web服務提供。如果/當Web服務出現故障(預期維護或其他原因)時,這些表將提供最後一個已知的數據。他們不會經常受到打擊,但是當他們遭受打擊時,他們將受到重創。 – user2210179
第三方的webservice是維護人員。我們的呼叫將被映射到這個數據庫,而不是從他們那裏得到響應。 – user2210179