2012-09-17 143 views
1

我需要創建的數據庫保存着一個車輛跟蹤系統的數據。因此,有幾輛車繼續向我的站點發送數據(大約20個參數),這些數據將這些值存儲在數據庫中。如何優化此數據庫設計?

車輛的參數包括車號和硬件ID爲常數,其餘的不斷變化。所以從一輛車來看,這兩個參數總是不變的。

我會在這個數據庫中包含用戶的登錄憑證的另一個表,我想創建一個兩個表之間的鏈接與登錄表中的車輛號碼(主鍵)和表中的車輛號碼包含參數。

由於車號列是多餘的,我不能把它作爲主鍵。 所以事情,我想知道:

  1. 有什麼辦法可以實現表
  2. 之間的聯繫是有一個好辦法,這樣我不存儲此車號和硬件ID這麼多次。
  3. 我應該將每輛車的數據存儲在單獨的表格中而不是全部放在一張表格中嗎?

P.S:這是我第一次設計數據庫,因爲我只去過一個程序員的時候,所以期待好的建議。

+0

看看這篇文章http://www.jacobtomlinson.co.uk/2012/02/23/shrinking-sql-logs/它可以幫助你有效地在你的數據庫中存儲信息。 –

+0

好吧,如果有人想指出這個問題適合SE的DBA網站,我覺得SO是好得多的網站,所以我把它放在這裏。 – Cdeez

+0

@Jacob:謝謝,會給你一個閱讀。 – Cdeez

回答

1

將車輛號碼放入登錄憑證可能是一個非常糟糕的主意。我不知道你的用戶是誰,但我不想使用一個網站,強迫我在購買或出售汽車時改變登錄名。我的歷史呢?我失去了這一切嗎?

主鍵中的業務邏輯意味着糟糕的設計。

創建一個代理主鍵並使用它來加入車輛。一個用戶可能有很多車輛,因此將VEHICLE表中的外鍵放到USER表中。

如果車輛數據爲1:1,則將車輛數據放在單獨的表格中並沒有幫助。它不會改變除兩個值都在變化的事實。

如果您的要求包括保留更改的歷史記錄,您會重新考慮此想法。既然你沒有提到它,我只能在這裏猜測。

您提出的任何問題都不會對效率或應用程序速度產生任何影響。你沒有給出足夠的細節來讓人們對你的設計產生影響。此時您已經犯了過早的優化。

+0

我是一個完整的數據庫設計noob,這些都是你提出的一些好點。 – Cdeez

+1

duffymo:請考慮在http://dba.stackexchange.com/questions/24409/how-do-i-optimize-this-database-design重新發布此答案 – ThiefMaster