2013-04-29 3 views
1

Ok J'ai une table principale qui peut être conçue de deux manières différentes, et je ne suis pas sûr de la meilleure approche. Je fais un premier modèle de programmation en ce qui concerne la mise en place de la base de données.Entity Framework Database Design Clé étrangère et liaison de table

J'ai jusqu'à présent 5 tables.

Master table 
Departments 
Functions 
Processes 
Procedures 

Quelle est la meilleure façon de gérer le design?

Idée # 1:

Maître Tableau

masterId, departmentID, functionID, processID, procedureID, user1, date 

Dois-je faire de cette façon, puis fournir une FK de maître à la table des départements, table fonctions, table processess et table procédures?

Idée # 2

Maître Tableau

MasterID, departmentID, user1, date 

Ce tableau reliera à table Departments, qui reliera alors à des fonctions qui relieront aux processus qui relieront aux procédures.

La table principale aura une liste complète de tout.

A department can have many functions. 
a function can have many processes. 
a process can have many procedures. 

Lequel des moyens est le meilleur ou suis-je juste le faire complètement faux et que quelqu'un peut me dire toi ou près de toi la meilleure façon de créer ce schéma de tables et structure de liaison?

+0

Si toutes les données existent déjà dans d'autres tables, pourquoi avez-vous besoin du maître? – Kami

+0

car la table principale aura des données non disponibles dans d'autres tables. @Kami –

+0

L'idée 1 a du sens pour moi car elle réduit les jointures à long terme, ce qui vous permet de filtrer assez efficacement les ID. Cependant, la conception de la base de données dirait si elles ne se rapportent pas directement, alors l'idée 2 est préférable car vous n'aurez pas de valeurs nulles dans processID, procedureId. De plus, l'idée 1 entraîne plus de duplication de données. La vraie question pour moi est ce qui est connu par l'utilisateur lors de la saisie de ces données? la hiérarchie est-elle connue de l'utilisateur et peut donc être plus facile à parcourir dans l'idée 2 ou traiter toutes les données à un niveau "maître" plus commun à l'utilisateur/groupe? xQbert

Répondre

2

Si vous avez les critères suivants,

A master can have many departments. 
a department can have many functions. 
a function can have many processes. 
a process can have many procedures. 

Ensuite, vous devez utiliser votre deuxième idée de conception. Vous n'avez qu'un seul département, une seule fonction, un seul processus et une seule clé de procédure dans votre première idée de conception.

Master 
------ 
Master ID 
User 
Date 
... 

Department 
---------- 
Department ID 
Master ID 
... 

Function 
-------- 
Function ID 
Department ID 
... 

et ainsi de suite.

La clé primaire de chaque table est un entier incrémentiel automatique ou long.

Les clés étrangères sont identifiées par leur nom.

+0

Ouais, je penche vers # 2. Mais pour # 1 cela pourrait encore fonctionner, cela signifierait simplement que j'aurais une table de référence référençant chacun des 4 identifiants de la table principale. Je pense en fait à se débarrasser de la table principale et à déplacer les données vers des tables plus pertinentes. –

Questions connexes