2009-12-10 115 views
1

我有一個小型數據庫,我需要幫助設計。我有一個VB.NET程序,它從.csv文件獲取數據並將數據輸入到Access數據庫中。數據來自「跑道摩擦測試」。一臺機器測量跑道上摩擦的程度,因爲飛機着陸時會產生橡膠,並將數據存入.csv文件。我需要幫助設計這些數據的表格,以便我可以根據需要使用這些數據。幫助設計小型數據庫

執行摩擦測試後,我有兩個「跑步」(跑道左側和右側)的「測試」。該測試數據被記錄到兩個.csv文件中,每個文件對應一個「運行」,並提取我想要存儲的數據。我需要從每個文件存儲的數據是:

跑道編號,跑道側,測試日期,測試時間,前三分之一平均摩擦,第二第三平均。摩擦,第三第三平均。摩擦,平均整體摩擦。

我的「測試」之後,我有這個例子的數據進入數據庫:

運行1:「16R,34L」,「16R」號,12/2/09#,#8: 51 AM#,0.75,0.69,0.79,0.78

試驗2:「16R,34L」,「34L」,#12/2/09#,#8:51 AM#,0.70, .72,.76,.70

十進制數字表示摩擦的度量。 我將它輸入到數據庫的方式與上面一樣,但是使用自動PK。

我想要做的是製作另一張表,將兩次運行組合成一條記錄。每個具有相同日期的記錄將作爲一條記錄插入(對每個日期進行一次測試),並將兩條記錄成爲一條記錄的數量進行平均。然後,我將使用這些數據製作幾個月的摩擦水平圖表。我還希望能夠從數據庫中刪除重複項,以防某人多次輸入記錄。

我正在尋找一些關於如何設計這個簡單的數據庫的建議。我應該製作多少張桌子?我應該正常化嗎?我應該不使用自動PK嗎?有了這麼少的數據,我想到將整個測試(兩次運行)放到一個記錄上。我也考慮過正常化製作更多表格。現在我擁有它的方式我無法按照自己想要的數據做什麼(例如創建一個平均兩個「運行」數字的表)。

回答

2

當然,你可以正常化。但是,獲取數據所涉及的工作將會增加。我想你只是需要一些有用的查詢,爲您排憂解難,如:

SELECT [Runway Number], [Test Date], [Test Time], 
    Avg([First Third Avg. Friction]) as First, 
    Avg([Second Third Avg. Friction]) as Second, 
    Avg([Third Third Avg. Friction]) as Third, 
    Avg([Avg. Overall Friction]) as Overall 
FROM yourTable 
GROUP BY [Runway Number], [Test Date], [Test Time] 

或者:

SELECT [Runway Number], 
    Avg([First Third Avg. Friction]) as First, 
    Avg([Second Third Avg. Friction]) as Second, 
    Avg([Third Third Avg. Friction]) as Third, 
    Avg([Avg. Overall Friction]) as Overall 
FROM yourTable 
GROUP BY [Runway Number] 

OR:

SELECT [Runway Number], YEAR([Test Date]) as [Test Year], 
    Avg([First Third Avg. Friction]) as First, 
    Avg([Second Third Avg. Friction]) as Second, 
    Avg([Third Third Avg. Friction]) as Third, 
    Avg([Avg. Overall Friction]) as Overall 
FROM yourTable 
GROUP BY [Runway Number], YEAR([Test Date]) 

我敢肯定你的想法。 ..

+0

謝謝。這有助於我朝着正確的方向前進。你的第一個查詢是最接近我想要的。現在,是否會將我的示例中的運行1和運行2作爲一條記錄返回,因爲它們具有相同的日期和測試日期的查詢組? – ScottK 2009-12-10 03:36:56

+1

是的。由於RunwayNumber,TestDate和TestTime字段相同,因此這些行將在同一組中處理並給出平均值。 – 2009-12-10 04:52:29