2011-04-04 37 views
0

我想知道是否有人可以提供一些幫助。我正在設計一個數據庫,我想知道這應該如何處理。我的場景涉及一個車輛表,其中存儲有關車隊(例如,品牌,型號,當前里程等)的信息,以便存儲關於在車輛上進行的任何維護的信息。最後是運營成本表,這將存儲與車輛相關的任何成本(例如燃料,維修,修理等)。與另一個表可能相關或不相關的表的關係

我的問題是維護中的某些記錄需要鏈接到維護記錄,有些則不需要。例如,維修是一項運營成本,將記錄在維護日誌中,但燃料是運行成本,因此不會記錄在維護日誌中。

處理這個問題的最佳方法是什麼?

這裏是此刻的表,但是這僅允許經營成本涉及到維護記錄:

車輛(VehicleID,品牌,型號,里程,MOT由於)
維護(MaintenanceID,VehicleID FK,說明)
OperatingCost(OperatingCostID,MaintenanceID FK,成本)

預先感謝。

Ĵ

回答

2

如果我理解正確的,你好像你想要OperatingCost兩個表OperatingCostID是在兩者的主鍵。根據成本的類型,你會填充這些表中的一個或兩個:

OperatingCostMaintenance(OperatingCostID,MaintenanceID)

OperatingCost(OperatingCostID,成本)

+0

是的,我認爲這將做我所需要的。感謝您的幫助! – 2011-04-04 11:13:15

+0

在與某人講話後,他們想出了只有一個OperatingCost表並且有一個允許爲空的MaintenanceID外鍵的想法。你有什麼想法呢? – 2011-04-05 14:14:32

0

以您目前的架構,您可以與維護使用加入記錄到成本記錄,完全如同您以其他方式進行:

select * from OperatingCost where MaintenanceID = ? 

是否每一位維護都有成本?在這種情況下,您可以將維護表視爲OperatingCost上的可選詳細信息表,併爲兩者使用相同的ID。維護的ID列將是一個主鍵和一個引用OperatingCost的外鍵。

+0

我不會說,因爲維護可能像檢查輪胎壓力那樣簡單,而輪胎壓力不會帶來與其相關的成本。 – 2011-04-04 11:17:34