baccu: grundsätzliches zur Tabellengöße

Hallo,
ich mache mir gerade Gedanken über die Tabellen meiner Datenbank und finde keine Hilfe zu einem grundsätzlichen Thema:
Ich baue eine Adresstabelle auf in der neben den Grunddaten (Name, Adresse, Tel. usw.) auch andere tiefgreifendere Eigenschaften (Hobbys, Lieblingsfilm usw.) gespeichert werden sollen (insgesammt 85 Spalten).
Da ich nicht bei jeder Abfrage alle Infos benötige, ist es da sinnvoller die Daten in 2, miteinander in Beziehung stehender Tabellen abzuspeichern oder gibt es Vorteile alles in einer Tabelle zu speichern?
Hauptsächlich geht es bei meiner Überlegung um eine möglichst geringe Traffik (wie immer).
Gibt es da irgendwelche Erfahrungswerte?
danke
Baccu

  1. Hallo Baccu,

    erste Tabelle:

    Personal_nr, Name, Vorname, Geburtsdatum

    zweite Tabelle:

    Personal_nr, Wohnort, PLZ, was_weiss_ich

    Gruß

    Hans

    1. Danke,
      aber wie ich 2 Tabellen in Beziehung bringe ist mir klar,
      meine Frage war ist es sinnvoller 1 große Tabelle zu haben oder 5 kleine?
      Baccu

  2. Hallo baccu

    ich mache mir gerade Gedanken über die Tabellen meiner Datenbank und finde keine Hilfe zu einem grundsätzlichen Thema:
    Ich baue eine Adresstabelle auf in der neben den Grunddaten (Name, Adresse, Tel. usw.) auch andere tiefgreifendere Eigenschaften (Hobbys, Lieblingsfilm usw.) gespeichert werden sollen (insgesammt 85 Spalten).

    85 Spalten sind meiner Meinung nach zu viel :-)

    Schauen wir uns Deine (leider spärlichen) Angaben etwas genauer an:

    Name: mindestens zwei Spalten

    • Familienname
    • Vornamen

    Adresse

    • kann eine Person mehr als eine Adresse haben und willst Du dies abbilden?
         Wenn ja, Tabelle für Adressen erforderlich (1:n-Beziehung oder sogar n:m)

    Tel.

    • Hier gilt prinzipiell das gleiche wie für Adresse
         (n:m würd' ich aber weglassen)

    Hobbys

    • kann man grundsätzlich mehrere haben.
    • Das gleiche Hobby haben oft verschiedene Personen
         n:m-Beziehung

    Lieblingsfilm

    • Den gleichen Film können mehrere Personen als Lieblingsfilm haben
         Eigene Tabelle Filme und 1:n-Beziehung

    Da ich nicht bei jeder Abfrage alle Infos benötige, ist es da sinnvoller die Daten in 2, miteinander in Beziehung stehender Tabellen abzuspeichern oder gibt es Vorteile alles in einer Tabelle zu speichern?

    Das was Du hier nennst, kann man gar nicht vernünftig in einer einzigen Tabelle speichern. Hobby1, Hobby2, Hobby3 ist nicht sinnvoll, weil Du eine unnötige künstliche Begrenzung einführst. Gleiches gilt für Filme, ...

    Hauptsächlich geht es bei meiner Überlegung um eine möglichst geringe Traffik (wie immer).

    Die SELECT-Syntax erlaubt auch andere Abfragen als SELECT * FROM ...
    Setze zusätzlich hier an.

    Weiterhin gilt, dass verschiedene Datenbankmanagementsysteme auch Begrenzungen für die Größe eines Datensatzes haben. Welche für Dein System gilt, verrät Dir das Handbuch Deines DBMS, das Du vor uns bisher geheim gehalten hast.

    Freundliche Grüße

    Vinzenz

  3. Hi,

    Gibt es da irgendwelche Erfahrungswerte?

    durchaus. Es hat sich z.B. herausgestellt, dass es sinnvoll ist fuer verschiedene Entitaeten verschiedene Tabellen zu nutzen. Beispiel: Du willst Schauspieler und Spielfilme verwalten, da gibts dann zwischen beiden Entitaeten eine "many to many"-Beziehung. Mit einer Tabelle wirst Du totungluecklich. das Fachwort hier: entity relationship model (ERM)

    In Deinem Beispiel (Addressen und so) koenntest Du andenken alles in eine einzige Tabelle zu pressen: "Personen"
    Fuer den Hausgebrauch waere das m.E. OK. Performanceueberlegungen solltest Du erst einmal nicht anstellen (insbesonders keine Ueberlegungen aus Performancegruenden mehrere Tabellen zu nutzen, das waere wirklich funky).

    Gruss,
    Ludger