2010-05-29 4 views
1

J'ai une table nommée ActivityRecording. Cette table contient actuellement 500 000 enregistrements. J'ai besoin d'ajouter beaucoup de nouvelles entrées qui se rapportent à la table d'enregistrement d'activité. La relation d'activité avec ces nouveaux champs de saisie est de 1 à 0,1. Donc, ce qui va se passer à l'écran, c'est quand l'utilisateur remplit les données ActivityRecording, il sera ensuite redirigé vers une nouvelle page et cette page affichera un formulaire basé sur l'entrée de l'utilisateur (depuis un service nommé dropdown) dans activityrecording . Il y aura 6 différents types de formulaire (chaque formulaire aura 7-8 entrées qui comprend des zones de texte de taille 5kb, des zones de texte et des cases à cocher). Ainsi, pour une activité, l'utilisateur enregistrant remplira un formulaire sur 6.structure de la base de données

Il y a deux façons je sais (il pourrait y avoir plus), je peux concevoir la structure de données:

  1. Ajouter toutes les entrées de toutes ces 6 formes dans la table de activityrecording. Ainsi, les colonnes appartenant à 5 de ces formes seront nulles dans cette table, seules les colonnes appartenant à l'une des formes auront des valeurs

  2. L'autre façon serait d'ajouter 6 nouvelles tables (une pour chaque formulaire) et d'ajouter 6 colonnes de clé étrangère à la table d'enregistrement d'activité. Donc, sur 6 clés étrangères, 5 sera nul et on pointera effectivement vers une table

Quelle approche est la meilleure conception de structure de données? Veuillez prendre en compte que le nombre de lignes dans ce tableau est de 500 000 et devrait augmenter à un rythme plus rapide maintenant.

Répondre

2

Vous devriez vous demander: «Que se passera-t-il si j'ai besoin d'une autre forme? (vous devriez créer une nouvelle table). A mon avis, la première approche serait la meilleure, car je n'aime pas créer de nouvelles tables (il faudrait mettre à jour vos classes linq etc etc).

Il y en a un troisième aussi, créez une table pour les formulaires et reliez-les à la table d'entrée. formes 1 ----- n entrée

+0

la troisième approche sonne bien à fait, parce que j'aurait une séparation de mes activityrecording et formes. –

+0

ouais c'est comme ça que je le ferais, après tout c'est un peu mvc, vous avez la vue séparée de la table si vous changez la vue, vous n'aurez rien à changer sur le modèle (table) –

+0

Donc, si je fais une table séparée avec tous ces champs (de toutes les 6 formes), alors c'est un bon design car pour chaque ligne, je vais toujours avoir 80% de colonnes nulles. –

2

formes et interfaces utilisateur ont rien à voir avec la conception de base de données sonore.

Soyez guidé par les règles de conception de base comme la forme normale et en comprenant les propriétés de base des données que vous essayez de stocker. Il n'y a presque aucune information sur les données dans votre question - tout est une question de formulaires! Par conséquent, il n'est pas possible de donner une bonne réponse à propos d'un design spécifique.

+0

Voici quelques informations sur les données: J'ai une table ActivityRecording qui stocke actuellement les données sur le service fourni (seulement le code de service), l'heure du service, le membre du personnel qui a fourni le service et ce type d'information. Maintenant, nous devons capturer des détails sur ce service (pour le moment, nous ne capturons aucun détail sur ce service), comme la réponse du client, les commentaires du personnel et certaines cases à cocher, etc. Différents services ont différents types de ils partagent la même forme) et le total que nous avons est de 6 types différents de formes. –

2

Vous avez raté une autre option.

Aucun changement dans la table ActivityRecording. champ de clé étrangère pour ActivityRecording dans chacun des tableaux supplémentaires me

+0

Oui, c'est une autre option, même si cela ne fera aucune différence, je suppose. –

Questions connexes