將 Excel 電子表格轉換為 MySQL 數據庫表
我在數據庫設計方面相對較新,希望從一開始就做好。我對如何做到這一點有不同的建議,並認為導入所有數據的常見建議是錯誤的,因為數據不會被規範化並且會有很多冗餘的重複數據。我來自 MS Access 背景而不是 MySQL。
這個問題是關於數據庫表的設計,而不是 PHP 處理將其放入表中。
我需要向 Wordpress 網站添加大量自定義數據。該數據目前位於多個 Excel 電子表格中,並且在行和列中都有大量重複數據,在我看來,它非常適合拆分為 4 個表格。主表最初將包含大約一百萬行,並且會定期增長。我打算為某些使用者提供一個前端上傳工具來上傳他們的文件,並希望將其自動化。
每個電子表格包含 10,000 到 15,000 行。許多行具有重複數據,只有兩個欄位與另外兩個欄位轉置,因此可以在數據庫中刪除這些行。
我附上了其中一個電子表格的一部分的圖像。
我目前的想法是為 E 列設置一個表,因為每一行都包含完全相同的數據。列 N 的第二個表,因為這裡有很多重複的數據。列的 ABFGH 的第三個表與前兩個表的連結數據和 CDIJKLM 列的第四個表與其他 3 個表中的連結數據。正如您所看到的,第 2 行和第 3 行是相同的,除了 I 和 J 列與 C 和 D 列之間的轉置數據,但情況並非總是如此,請參見第 8 行和第 9 行)。
這是分解數據的最佳方式還是我應該只看一張大表。將以不同的方式查詢數據(4 個結果集)。一旦輸入數據,它就不太可能需要更新。
在我真正開始建構它之前,我會歡迎任何想法或建議。
我沒有詳細查看數據,因為我相信您可以自己對其進行規範化,但是根據我從您的文章中掌握的資訊,我會說您做的一切都是正確的。
但是有一個警告:您可能會在 excel 工作表中遇到很多現有的不一致。您必須修復這些問題才能正確導入和規範化數據。這構成了很高的初始努力。
替代方案(保持數據原樣)反而會增加應用程序的維護成本。
從長遠來看,我聲稱額外的初始成本將低於定期增加的維護成本。
我會將所有數據載入到一個表中。我發現更容易發現重複項等,關係分析,表的創建和規範化。對於您指出的記錄數,我通常會保留為單個未規範化的表並刪除重複項,同時嘗試辨識和定義適當的表鍵和外鍵以獲得最佳性能。
我發現大多數操作使用 SQL 命令比編寫過多的程式邏輯更容易。對於更複雜的事情,您可能仍然需要一些程式,但大多數都可以使用 HeidiSQL 使用一些簡單的 SQL 命令來完成。我還推薦 Excel2MySQL(我自己設計的軟體)以最小的麻煩準確地創建和載入表。