2011-03-03 88 views
0

好的。所以在我的工作地點,我們的sql數據庫中有一個產品表,用於保存我們產品的信息(如圖)。然而,創建該表的公司(我們以前的Web供應商)顯然不相信使用多個表來保存數據。所以,這相當於一個201列表,其中包含幾乎所有您可以想到的相關和不相關數據的列。顯然,我不希望它再那樣。我創建了邏輯表將數據分成包含原始列的數據。我如何使用原始數據填充新表格?我知道這是一個普遍的問題,我正在尋找一個普遍的答案。我不需要具體的東西,我只需要指出正確的方向。謝謝數據庫標準化注意事項

+0

如果你可以指出一個這樣的樣本數據如何存儲在產品表中,以及如何存儲在其他邏輯表中,人們可以幫助你。 – 2011-03-03 17:01:44

+0

@Sachin Shanbhag這是201列,所以可能有點多張貼樣本,但例如有不同的服裝類型,每種類型都有不同的測量組合,我需要將它們分開。 – Nick 2011-03-03 17:06:12

+0

是的,那麼你想出了什麼樣的邏輯結構,以及這個服裝類型是如何存儲在主表中的。只有一列?或者一些相關的列呢? – 2011-03-03 17:10:22

回答

1

查找網絡上的數據庫重構。

基本上,不要創建任何表或移動任何數據。相反,除了SQL視圖之外,還創建執行該作業的SQL腳本,以便虛擬地重新創建原始表格佈局。還有一些驗證該視圖的代碼,可能是通過逐行比較原始表。然後運行該腳本,檢查數據,並在完全正確時刪除怪物表並重命名該視圖以取代它。

希望您知道SELECT INTO將數據導入新表格。你會做的事情如SELECT DISTINCT clothingtype FROM bigtable INTO clothingtypes;

+0

謝謝你的提示。我發現了一個名爲Sql Prompt的Red Gate產品,它完全符合我的需要,我想我之前並沒有在Google上搜索正確的單詞;)。但是我知道如何做簡單的sql語句我只是需要一些東西來使這個任務不那麼令人生畏,我的問題的措辭很糟糕。 – Nick 2011-03-03 18:11:07

0

您可以爲原始表中的所有或部分行選擇要插入的列,並將此組插入到目標表中。你熟悉SQL UPDATE和INSERT語句嗎?編輯:你只想重新定位那些不涉及每列行的列;如果該列僅適用於某些行,那麼如果規範化是目標,那麼這些行/列就是重定位的候選對象。