Einzelnen Beitrag anzeigen

Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

Designfrage - Tabellenlayout

  Alt 22. Nov 2009, 10:07
Datenbank: MySQL • Version: 5 • Zugriff über: php --> mysqli
Hi!

Es geht um ein grundsätzliches Design-Problem für eine Datenbank. Ich versuche mal kurz den momentan Aufbau zu umreißen - vllt. ist dieser schon der bestmögliche, vielleicht aber auch nicht:
Es gibt in dem System Schüler und Lehrer. Für jeden gibt es momentan eine Tabelle - diese sind recht ähnlich, d.h. es gibt 10 gemeinsame Attribute und jeweils ein Attribut, das die andere "Gruppe" nicht hat.
In vielen anderen Tabellen können an gleicher Stelle Schüler oder Lehrer auftauchen, d.h. zum Beispiel der Verfasser einer Nachricht kann ein Schüler oder ein Lehrer gewesen sein. In dieser Nachrichten-Tabelle (und vielen anderen) ist es so gelöst, dass man als Verfasser z.B. "S4711" oder "L1337" drin stehen hat.
Wenn es dann darum geht den Namen des Verfassers zu ermitteln, wird über das erste Zeichen geswitched und abhängig davon entweder aus der Schüler-Tabelle gefetched oder aus der Lehrertabelle.

Die einzige Alternative, die mir jetzt einfällt wäre die folgende:
Alle "Teilnehmer" sind in einer Tabelle mit insgesamt 12 oder 13 Attributen - 12 wenn ich einfach die 10+2*1 nehme und das Vorhandensein des 11. bzw. 12. Wertes als Flag benutze - 13 wenn ich noch ein "ist-Lehrer-Flag" benutzen würde.
Dann hätte ich eine "global" eindeutige Teilnehmer-ID. Im Gegenzug dazu fange ich mir einige tausend NULL-Einträge in der Datenbank ein und die DB-Abfragen werden etwas komplizierter (dafür entfällt vorher der PHP-Aufwand).

Jetzt meine Frage:
Ist Variante 1 besser oder Variante 2?
Oder gibt es gar eine noch bessere Variante 3, die ich noch nicht sehe/kenne?

Danke und liebe Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat