2009-12-10 4 views
1

J'ai une petite base de données que j'ai besoin d'aide pour la conception. J'ai un programme VB.NET qui obtient des données à partir d'un fichier .csv et entre les données dans une base de données Access. Les données proviennent d'un "test de frottement de piste". Une machine mesure le niveau de frottement sur une piste en raison de l'accumulation de caoutchouc à partir de l'atterrissage des avions et place les données dans un fichier .csv. J'ai besoin d'aide pour concevoir les tableaux pour ces données afin que je puisse utiliser les données comme je le dois. Après avoir effectué un test de frottement, j'ai un «test» avec deux «courses» (côté gauche et côté droit de la piste). Ces données de test sont enregistrées dans deux fichiers .csv, un pour chaque "Exécuter", et j'extrais les données que je veux stocker. Les données dont j'ai besoin de stocker à partir de chaque fichier sont:Aide à la conception de petite base de données

Numéro de piste, côté piste, date de test, temps de test, premier tiers Avg. Friction, deuxième tiers Friction, troisième tiers Friction, Avg. Friction globale.

Après mon « Test », j'ai cet exemple des données pour entrer dans la base de données:

Run 1: « 16R, 34L », « 16R », n ° 12/2/09 #, # 8: 51 AM#, .75, .69, .79, .78

Run 2: « 16R, 34L », « 34L », n ° 12/2/09 #, # 8: 51 AM#, .70, .72, .76, .70

Les nombres décimaux représentent une mesure du frottement. La façon dont je l'entre dans la base de données est juste comme ci-dessus, mais avec un PK automatique.

Ce que je veux être en mesure de faire est de faire une autre table qui combine les deux courses en un seul enregistrement. Chaque enregistrement qui a la même date sera inséré comme un enregistrement (un test à chaque date) et les nombres des deux enregistrements devenant un seront moyennés. Je vais ensuite utiliser ces données pour faire des graphiques des niveaux de friction sur plusieurs mois. Je souhaite également pouvoir supprimer les doublons de la base de données au cas où quelqu'un entrerait un enregistrement plus d'une fois.

Je cherche des suggestions sur la façon de concevoir cette base de données simple. Combien de tables devrais-je faire? Devrais-je normaliser? Ne devrais-je pas utiliser un PK automatique? Avec de telles données minimales, j'ai pensé à mettre le test entier (les deux courses) sur un seul enregistrement. J'ai également considéré la normalisation pour faire plus de tables. La façon dont je l'ai maintenant, j'ai du mal à faire ce que je veux avec les données (comme la création d'une table qui fait la moyenne des deux numéros "runs").

Répondre

2

Bien sûr, vous pourriez normaliser. Mais le travail impliqué pour obtenir les données serait augmenté. Je pense que vous avez juste besoin de quelques questions utiles pour vous aider, par exemple:

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] 

Ou:

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] 

OU:

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]) 

Je suis sûr que vous avez l'idée. ..

+0

Merci. Cela m'aide dans la bonne direction. Votre première requête est la plus proche de ce que je veux. Maintenant, est-ce que cela retournera Run 1 et Run 2 à partir de mon exemple en tant qu'un enregistrement, car ils ont la même date et les groupes de requêtes par date de test? – ScottK

+1

Oui. Étant donné que les champs RunwayNumber, TestDate et TestTime sont identiques, ces lignes seront traitées dans le même groupe et vous donneront les moyennes. –

Questions connexes