2010-05-07 18 views
0

J'ai une table d'étudiant et de faculté. La clé primaire pour l'étudiant est studendID (SID) et la clé primaire de la faculté est facultyID, naturellement. L'étudiant a une colonne de conseiller et une colonne de conseiller demandée, qui sont la clé étrangère à la faculté. C'est assez simple, non?Base de données plusieurs-à-plusieurs relations

Cependant, maintenant je dois jeter des dates. Je veux être en mesure de voir qui était leur conseiller pour un certain trimestre (comme 2009 Hiver) et qui ils avaient demandé.

Le résultat sera une table comme ceci:

Year | Term | SID  | Current | Requested 
------------------------------------------------ 
2009 | Winter | 86| 1  | NULL 
2009 | Winter | 860445566 | 3  | NULL 
2009 | Winter | 860369147 | 5  | 1 

Et puis si je me sens comme ça, je pourrais aussi aller de l'avant et voir une autre année et un autre terme.

Je ne suis pas sûr de savoir à quoi ressembleront ces nouvelles tables. Y aura-t-il une table d'année avec trois colonnes qui sont l'automne, le printemps et l'hiver? Et qu'est-ce que la table Automne, Printemps, Hiver aura?

Je suis nouveau à l'art des tableaux, donc cela me déconcertant ...

De plus, je sens que je dois préciser comment le site fonctionne à ce jour maintenant. L'administrateur peut approuver les demandes des étudiants, et ce qui se passe, c'est que le conseiller actuel de l'étudiant est écrasé par sa demande. Cependant, je pense que je ne devrais plus faire ça, n'est-ce pas?

Répondre

2

Vous avez une relation many-to-many et vous avez besoin d'une troisième table. Au lieu des colonnes Current et Requested existantes dans la table Students, elles doivent exister dans la nouvelle table. Ce tableau pourrait être quelque chose comme ceci:

StudentAdvisors 
StudentAdvisorID, SID, Current, Requested, Year, Term 
0

L'approche typique que j'ai utilisé & été enseigné pendant de nombreuses-plusieurs est ce qui équivaut à une table de translation entre les deux tables.