帮助设计小型数据库

时间:2009-12-10 01:19:16

标签: sql database database-design

我有一个小型数据库,我需要帮助设计。我有一个VB.NET程序,它从.csv文件中获取数据并将数据输入Access数据库。数据来自“跑道摩擦测试”。机器测量由于飞机着陆时橡胶积聚而在跑道上产生的摩擦力,并将数据放入.csv文件中。我需要帮助设计这些数据的表,以便我可以根据需要使用数据。

在进行摩擦测试后,我有一个“测试”,有两个“跑”(跑道的左侧和右侧)。这个测试数据被记录到两个.csv文件中,每个“Run”一个,我提取我想要存储的数据。我需要从每个文件存储的数据是:

跑道号,跑道侧,测试日期,测试时间,前三档平均值。摩擦,第二平均值摩擦,三分之三平均摩擦,平均整体摩擦。

在我的“测试”之后,我将此示例数据输入数据库:

运行1:“16R,34L”,“16R”,#12/2/09#,#8:51 AM#,。75,.69,.79,.78

运行2:“16R,34L”,“34L”,#12/2/09#,#8:51 AM#,。70,。72,.76,.70

十进制数表示摩擦力的测量值。 我将其输入数据库的方式与上面一样,但具有自动PK。

我想要做的是创建另一个表,将两个运行组合成一个记录。每个具有相同日期的记录将作为一个记录插入(每个日期一个测试),并且两个记录成为一个的记录的数量将被平均。然后我将使用这些数据制作几个月内摩擦水平的图表。我还希望能够删除数据库中的重复项,以防有人多次输入记录。

我正在寻找有关如何设计这个简单数据库的一些建议。我应该制作多少张桌子?我应该正常化吗?我不应该使用自动PK吗?有了这么少的数据,我想到把整个测试(两次运行)放到一条记录上。我也考虑过规范化以制作更多表格。现在的方式我现在无法用数据做我想做的事情(例如创建一个平均两个“运行”数字的表)。

1 个答案:

答案 0 :(得分: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])

我相信你明白了......