Announcement

Collapse
No announcement yet.

Verknüpfungstabellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verknüpfungstabellen

    Hallo zusammen,

    ich grüble derzeit an einem Datenbankdesign für ein kleines Projekt. Ich verwende den Firebird-Server in der Version 2.1, wobei dies wohl keine Rolle spielen wird.

    In der Anwendungen sollen beispielsweise 4 unterschiedliche Informationen, sagen wir Personen, Aufgaben, Termine und Projekte untereinander verknüpft werden. Es gibt also die vier Tabellen und zwischen jeder soll eine n:m Relation möglich sein (Sinn-/Unsinn mal außer acht gelassen).

    Aus meiner bisherigen Sicht gibt es dafür zwei unterschiedliche Herangehensweisen.

    1. Verknüpfungstabelle mit Kennung

    Code:
    create table links (
       id_item1 int,
       id_item2 int,
       type_item1 char(1),
       type_item2 char(2)
    );
    Es gibt also neben den vier bereits genannten Tabellen nur diese weitere in der alle Verknüpfungen eingetragen werden. Dann kann id_item1 beispielsweise eine Person sein, type_item1 wäre dann 'p' und id_item2 eine Aufgabe, type_item2 wäre dann 'a'.
    So ließen sich alle Verknüpfungen mit nur einer Tabelle abbilden.

    Vorteile:
    -Weniger Aufwand
    -Schnell erweiterbar

    2. N:M Tabelle für jede Art von Verknüpfung

    Dies ist wohl die geläufigere Variante. Für jede Verknüpfung, sei es Person zu Aufgabe, Aufgabe zu Termin, Termin zu Projekt usw, gibt es eine weitere Tabelle in der die Verknüpfung hinterlegt wird.

    Vorteile:
    -Foreign-Keys und somit Integritätsprüfung möglich

    Nun stellt sich mir die Frage, welche der beiden Varianten ich am besten nehmen sollte, oder ob es noch andere Herangehensweisen gibt. Vom Aufwand her würde ich zur ersten Variante tendieren.
    Wäre super, wenn mir jemand seine Meinung dazu abgeben könnte.
    Datenbank-Performance spielt außerdem auch eine große Rolle, welche wäre dann zu empfehlen?

    gruß Marco
Working...
X