2017-05-31 6 views
0

Ich denke über den Datenbankentwurf für ein Studentenregistrierungssystem nach. Erstens akzeptiert das System die Registrierung von jeder Person, deren Daten gespeichert werden. Dann überprüft der Administrator die Formulare und wählt die Studenten aus, die akzeptiert werden sollen. Sollte ich die zwei getrennten Tabellen verwenden, ist die erste die Information der registrierten Person zu speichern und die zweite die Informationen der angenommenen Studenten zu speichern? Oder sollte ich nur eine Tabelle verwenden und ein Attribut (confirmedOrNot) verwenden, um (0 oder 1) zu markieren, ob diese Person akzeptiert wurde oder nicht, wie im folgenden Diagramm gezeigt? Die akzeptierte Person sollte die Gebühr auch vor dem Fälligkeitsdatum zahlen. Andernfalls werden sie von der akzeptierten Liste entfernt. Ich habe auch ein Attribut verwendet, um das zu markieren. Nur die Personen, die die Gebühr akzeptiert und bezahlt haben, sind die endgültige Schülerliste des Systems. Ist das Design vernünftig? Was wäre ein besseres Design? Wie wählt man Attribut und Tabelle?

Antwort

1

Ob ein Schüler "akzeptiert" wird oder nicht, klingt wie ein Attribut eines Schülers. Das Natürliche, was zu tun ist, ist, alle Schüler in einen Tisch zu setzen und ein Attribut in dieser Tabelle "akzeptiert" zu machen. Wenn Sie zwei Tabellen erstellen, haben Sie vermutlich zwei Tabellen mit denselben Feldern. Wenn ein Student akzeptiert wird, müssen Sie alle seine Daten von der "ausstehenden" Tabelle in die "akzeptierte" Tabelle kopieren und dann den Datensatz möglicherweise aus der "ausstehenden" Tabelle löschen. Das ist viel mehr Arbeit als nur den Wert in einem Feld zu ändern. Noch wichtiger: Wenn sich die Daten eines Schülers ändern, müssen Sie daran denken, beide Tabellen zu ändern und den Code zu ändern, der die Daten kopiert. Du erschaffst mehr Arbeit für dich selbst. Früher oder später wird jemand einen Fehler machen und die Felder in den beiden Tabellen unterschiedlich groß machen, oder vergessen, ein neues Feld zu kopieren usw., und dann bekommen Sie verlorene Daten.

+0

Ich speicherte Informationen von Studenten in der Register-Tabelle und bestätigtemOrNot-Attribut in der RegisterCourseYear-Tabelle. Ist das richtig? Sollte confirmedOr kein Attribut der Register-Tabelle sein? –

+0

Wenn ein Student ein Jahr bestätigt werden kann und ein anderes Jahr nicht bestätigt wird, dann ist es sinnvoll, das Bestätigungsflag im Jahresrekord zu speichern. – Jay

Verwandte Themen