2012-05-13 57 views
1

這裏是我已經有:需要MySQL數據庫架構處理複雜的數據導入

PHP/MySQL的Web界面允許您上傳CSV文件。程序掃描文件以確定每列的適當數據類型,然後將文件寫入MySQL中的新表。

然後,「映射」數據,將原始表格(剛剛導入的)中的不同列分配給核心屬性(例如sku,成本,顏色,collection_name,高度,MSRP等)。

我的問題是找出一個好的模式來存儲可以採取的過程。

例子。

原始文件有字段:ITEM_NUMBER,list_price,說明

這些將映射到地圖ITEM_NUMBER到SKU,list_price映射到MSRP還要花費,說明映射到顏色和總彙名。

對於varchar類型字段,我可以使用轉換表來查找要轉換爲的「核心」值。 對於數字類型,如原始文件中的「list_price」,我需要存儲某種數字轉換規則。例如。 'list_price'= 2.0 * core_attribute_cost。

我將如何去存儲和檢索數學運算及其操作數?有沒有簡單的解決方案,我錯過了?因爲我目前正在考慮使用「x + y」,「x/y」,「y/x」,「yx」,「xy」的數學表格,其中x將是輸入字段,y將會是保存的值(如「2.0」)或其他字段。這似乎無限複雜。

感謝

+0

是否有固定數量變量?他們只會形成一個線性系統嗎?如果是這樣,您可以將每個變量的係數存儲在自己的列中...... **編輯**當然,您只是說可能存在諸如x/y等術語,對此解決方案可能並不理想。您可以存儲例如''$ x/$ y「'並使用PHP的['eval()'](http://php.net/manual/en/function.eval.php)函數(假設您*確定*數據是用戶操作「安全」)。 – eggyal

+0

我想我有一個varchar字段的工作模型。我的主要問題是,似乎不可能存儲大量的數學運算關係。利用eval()可能是短期內簡化的重要步驟。目前,傳入的數據完全不受用戶操縱的影響,但可能不會在遙遠的將來(一旦我離開阿爾法)。 –

回答

0

我會建議你導入所有數據到一個單一的平表,你需要的列,並且將包括在CSV文件中。

導入完成後,您可以運行SQL查詢以按照預定義的規則將數據插入標準化數據庫。

因此您的導入過程爲2步,但爲您提供了靈活調整從平表,數據庫架構或者CSV導入文件或業務規則不影響其他