2010-11-25 70 views
0

我一直在研究MS 2010 Access數據庫以計算CSV輸入的貨運費率。基於多變量計算費率的數據庫設計

價格通常以出發城市,出發國家,目的地城市,目的地國家,可能的中途目的地城市,重量,體積和數量爲特徵。這些變量的獨特組合將指定另一個變量列表,用於通過將這些變量與權重,體積或數量相乘並將它們相加來計算最終比率。

一個問題是城市和國家/地區名稱/拼寫不一致。我的另一個擔憂是,我覺得我可以從將數據分割成多個表格中受益,但不確定如何最好地完成這一點。

編輯: 謝謝你的批評。我的問題是,構建這個數據庫的最佳方式是什麼?這是我的表中的一個簡化的例子:

(startCity,startCountry,西蒂,midCountry,endCity,endCountry,類型,重量,體積,baseRate,feeA,feeB,FEEC,交付,燃料)

一切都在一張桌子上,它並沒有真正的唯一標識符/關鍵字。相反,每一行都是唯一的,因爲至少有一個位置或類型是不同的。

CSV輸入: shipmentID,startCity,startCountry,西蒂,midCountry,endCity,endCountry,類型,重量,體積,數量

查詢輸出: shipmentID,{數量* [baseRate +重量*(交費+燃料]}

+0

你的問題到底是什麼?你在表達關切和討論問題,但實際上並沒有提問_問題。 – Oded 2010-11-25 20:16:19

+0

唯一真正的問題似乎是你在城市和國家數據中有變體,需要弄清楚如何解決這個問題。對?最後一段沒有幫助,因爲我們不知道你腦子裏有什麼,所以甚至不能提出任何替代方案。 – 2010-11-25 22:39:13

回答

1

我不知道我理解你的問題。如果你正在尋找一個數據庫結構我會拿出以下3個表:

位置(ID,城市名,郵政編碼,COUNTRY_ID)

國家(ID,COUNTRYNAME)

路線(id,startlocation_ID,midlocation_ID,endlocation_ID,ratefactor)

最終速率可能基於公式。公式的路線依賴部分需要作爲「費率因子」放入「路線」表中。無論您是否需要將公式的其他部分放在表格中,都取決於公式本身(您沒有充分說明它)。輸入城市/國家名稱應該在下拉列表中完成,用戶只能在已經輸入的列表中進行選擇。我想大多數時候你的用戶可能會使用已經輸入常規路由的路由表。如果你的公司確實服務於世界上的任何地方,當然,你無法避免讓他們自己一直輸入新的城市名稱。

更新:編輯完成後,我建議您深入探討database normalization的主題。例如,您的「費率」表格看起來像許多相同的路線只有重量不同。所以按照我的建議分開保存路線信息是有道理的。附加信息應放在單獨的表格中(報價:id,route_ID,類型,重量...)。

「(feeA + feeB)」和「feeC」似乎是我在我的建議中提到的比率因子。但是我沒有看到既有feeA也有feeB的原因,因爲它們在使用之前總是加在一起。如果他們提及連接到城市的價格,並且您需要將這些信息分開,則最好將價格信息保存在不同的表格中(connectionprice:id,locationA_ID,locationB_ID,定價)並查找它而不是每次重新輸入。

雖然有人可能會說你不需要單獨的PK,如果你有不同的字段的組合使得唯一的標識符,我會養成爲每個表創建一個(「id」)的習慣。幾乎總是會使編程訪問和信息檢索變得更加容易。