2009-09-18 8 views
0

Je veux la meilleure solution possible pour le problème ci-dessous. J'utilise SQL Server 2005 et asp.net 2.0.Concevoir une base de données

J'ai une table principale où tous les scripts de test de différents projets sont stockés. À partir des scripts de test de la table principale, je dois créer un module et ajouter les scripts de test requis au module. La conception de l'interface utilisateur est: Créer un nouveau module. Sélectionnez les cas de test requis dans la table principale. Ajoutez les cas de test au module.

L'utilisateur peut créer autant de modules qu'il le souhaite avec différentes combinaisons de cas de test de la table principale.

Par ex-Master table a 100 cas de test. Je crée 2 modules. Module1 a 40 cas de test sélectionnés dans la table principale. Module2 a 20 cas de test sélectionnés dans la table principale.

Comment concevoir une base de données dans un tel scénario?

Répondre

4

Lire Rules of Data Normalization

RÉSUMÉ:

  1. 1FN Éliminez Groupes Répétition - Faire un tableau distinct pour chaque ensemble d'attributs connexes, et donner à chaque tableau une clé primaire.
  2. 2NF Elimination des données redondantes - Si un attribut dépend uniquement d'une partie d'une clé à plusieurs valeurs , supprimez-le dans une table distincte .
  3. 3NF Éliminez les colonnes qui ne dépendent pas sur clé - Si les attributs ne le font pas contribuent à une description de la clé , retirez-les à une table séparée. .......
1

Pour arriver à quelque chose comme 3ème forme normale, vous avez besoin essentiellement 3 tables au moins.

Vous avez la table de test (qui est votre table principale qui contient tous les cas de test). Ensuite, vous avez une table de modules, qui crée une entrée pour chaque module créé par un utilisateur. Ensuite, vous avez une table test_modules, avec une clé étrangère à la table des modules et la table de test. Lorsque vous créez un nouveau module, vous allez insérer une nouvelle ligne dans la table des modules. Pour chaque cas de test sélectionné pour ce module, vous allez insérer une ligne dans la table test_modules. Chaque ligne aura un FK dans la table de modules (pour que vous sachiez à quel module elle appartient) et un FK dans la table de test (pour que vous sachiez quel est le cas de test).

testcase Table (Master Table) { 
    id 
    test_case_name 
} 

modules table { 
    id (PK) 
    module_name (varchar) 
    creater (varchar) 
} 

test_modules table { 
    id (PK) 
    testcase_id (FK to testcase.id) 
    module_id (FK to modules.id) 
} 

Donc, pour obtenir les cas de test pour un module spécifique, vous pouvez faire une requête comme ceci:

select * 
from modules m, testcase t, test_modules tmod 
where m.id=tmod.module_id and tmod.testcase_id = t.id 

C'est une question très simplificatrice et inefficace, mais il va travailler pour vous aider à démarrer .

+0

Merci! Cela semble bien. – Sachin

0

«J'ai une table maître »

« Comment puis-je concevoir une base de données? »

Les deux réponses précédentes vous ont donné des détails sur la conception de la table. Ces détails seront utiles lorsque vous allez concevoir les tables pour stocker les données relatives aux modules et aux scripts. Cependant, vous devez être conscient de quelques autres fondamentaux.

La conception de votre table principale fait partie de la conception de la base de données. Si la conception de cette table principale est très regrettable pour le projet que vous entreprenez, une nouvelle conception de la table principale pourrait être la meilleure, selon les circonstances. La normalisation n'est pas la seule façon de découvrir un bon design. En particulier, les règles qui vous sont proposées pour 2NF et 3NF vous aideront à éviter les anomalies lorsque vous allez faire des insertions, des mises à jour et des suppressions sur les tables que vous concevez. Mais la noprmalisation ne vous aidera pas à faciliter les sélections.

Il faut quelques semaines pour apprendre à suivre les règles de normalisation. Il faut beaucoup plus de temps pour savoir quand ne pas tenir compte de ces règles, et comment trouver un bon design quand vous le faites.

+0

Merci. Cela semble être un bon conseil .. – Sachin

Questions connexes