Ich erstelle eine Datenbank von Studenten in einer school.Here ist, was ich habe, so weit: Wie macht man einen zusammengesetzten Schlüssel einzigartig?
Wenn Sie nicht mögen, Sprung zum „Kurz gesagt“ -Teil Lesen
Das Problem ist, dass ich mit diesem Design nicht glücklich bin. Ich möchte, dass die Kombination grade
, subgrade
und id_class
eindeutig ist und als Primärschlüssel für die Studententabelle dient. Ich kann die student_id
entfernen und einen zusammengesetzten Schlüssel aus der 3 machen, aber das will ich auch nicht. Vielleicht sollte ich eine andere Tabelle machen, sagen combination_id
grade
, subgrade
und id_class
sind Fremdschlüssel und es gibt eine zusätzliche Spalte comb_id
, die als ID für die Tabelle dient. Und alle Spalten werden Primärschlüssel sein. Aber das Problem ist, dass diese 3 Spalten wegen dieser zusätzlichen Spalte immer noch wiederholt werden können (comb_id
). Zum Beispiel kann ich die gleichen haben grade
, subgrade
und class_id
, aber verschiedene comb_id
, die die Zeile wegen der zusammengesetzten Schlüssel der 4 Spalten der Tabelle (combination_id
) gültig machen wird.
Kurz gesagt möchte ich students_id
die einzige Primärschlüssel der Tabelle bleiben aber ein Fremdschlüssel an einen anderen Tisch zu sein, die von grades
, subgrade
und class_id
irgendwie einzigartige Kombination ist.
Wenn ich nicht klar genug war, fragen Sie in den Kommentaren unten und danke im Voraus.
PS Ich bin für den indescriptive Titel leid, aber ich bin schlecht
EDIT 1 Benennung: Um mehr klar: grade
sein kann 1 bis 12 subgrade
sein kann, ein zu j id_class
kann 1 bis 30, und es ist Ihre Nummer in der Klasse
So kann ein Student aus 7b Klasse sein und seine Nummer in der Klasse - 5
Ich verstehe nicht, sind alle Schüler in einer Klasse garaunteed verschiedene Qualitäten zu haben? – Jodrell
Was machen Sie, wenn Schüler den Unterricht wechseln, oder passiert das nie? – Jodrell
Was ist falsch an einer Spalte 'student_id'? – Jodrell