2012-03-11 6 views
-1

Je développe une base de données qui montre le processus éducatif au collège.
Les étudiants se spécialisent dans les départements et ils ont un superviseur de leur département.
En quatrième année, les étudiants écrivent un travail de baccalauréat, ce qui critique un enseignant d'un autre département.
J'ai identifié plusieurs entités: départements, étudiants, enseignants. Et entité supplémentaire: Travaux
Conception de base de données. Double relation

ÉTUDIANTS Table

  • stud_id
  • Nom
  • dep_id

TRAVAUX Table

  • work_id
  • titre
  • supervisor_id
  • critic_id
  • stud_id

ENSEIGNANTS Table

  • teach_id
  • Nom
  • dep_id

DEPARTMENS Table

  • dep_id
  • titre

Il se trouve que les supervisor_id champs et critic_id lien vers un teach_id sur le terrain dans les ENSEIGNANTS de table. Comment puis-je résoudre ce problème? Merci.

+0

Pourquoi est-ce un problème? –

+0

Pourquoi pensez-vous que c'est un problème? Pour moi, il est logique qu'un enseignant soit superviseur ou réviseur (ma compréhension de critic_id) ou un travail donné. – home

+0

Je ne pense pas que vous ayez besoin d'une table supplémentaire. Ce que vous avez sont des relations 1: 1 et ils sont absolument bien. Assurez-vous de bien référencer les côtés obligatoire et facultatif (c'est-à-dire le cas où l'enseignant ne peut pas être un superviseur) et d'appliquer l'intégrité référentielle. – fn27

Répondre

0

Cela peut être le cas où un enseignant peut ne pas être également un superviseur.

Vous avez besoin d'une table supplémentaire - SUPERVISORS, tout comme les enseignants, cependant, au lieu de "nom" et "dep_id", ces champs vont dans une autre table appelée "STAFF". Ainsi, les SUPERVISORS et les ENSEIGNANTS ont tous les deux un champ appelé "staff_id" qui se joint à STAFF pour leur nom/département, et SUPERVISOR_ID liens à un SUPERVISOR, tandis que CRITIC_ID est lié à un PROFESSEUR.

En résumé, 6 tableaux: ÉLÈVES, PERSONNEL, TRAVAUX, ENSEIGNANTS, SUPERVISEURS, DÉPARTEMENTS.

inscription Travaux aux étudiants par stud_id, aux superviseurs par supervisor_id et aux enseignants par critic_id

Joignez-vous aux superviseurs de personnel par Nom employé

Joignez-vous enseignants au personnel par Nom employé

Joignez-vous à du personnel aux ministères dep_id

Avez-vous du sens?

+0

Je pense que la table superviseur serait redondante. Mieux vaut avoir des relations 1: 1 et assurez-vous que le côté optionnel est référencé – fn27

+0

J'évite d'avoir 2 champs reliés à la même table de sorte que vous puissiez avoir un ensemble d'Enseignants différent de l'ensemble des Superviseurs (en supposant que vous ne puissiez que critiquer un enseignant). Chacune de ces tables est simplement liée à un membre du personnel. – DanRedux

0

En passant par votre scénario, la clé primaire et clé étrangère doit être référencée bien .... Comme critic_id et supervisor_id sont liés à teach_id, ils devraient être la clef d'teach_id ..... De cette façon, vous auriez normalisé db aussi ....

Questions connexes