Lowterm: Datenstruktur

Hi,

kann mir bitte jemand den Unterschied zwischen "Datenstruktur" und "Tabellenstruktur" in einer Datenbank kurz erklären.

Danke im Voraus

  1. Hello,

    kann mir bitte jemand den Unterschied zwischen "Datenstruktur" und "Tabellenstruktur" in einer Datenbank kurz erklären.

    Irgendein, nicht unbedingt konstantes Datenstrukturmodell liegt der Tabellenstruktur zugrunde. Die Datenstruktur der Tabelle muss sich ohnehin mit jedem Eintrag ändern. In vielen Fällen geschieht dies aber regelmäßig.

    Das bedeutet etwas länger ausgedrückt:

    Speicher ist sowohl im RAM als auch auf Persistentmedien i.d.R. linear verwaltet. Du kannst ihn dir also wie einen Bindfaden vorstellen, auf dem dann die Daten unterzubringen sind.

    Aus den Datentypen, Grundtypen und selbstdefinierten, baut man sich nun eine Struktur für seine Daten. Das nennt man dann Datenstruktur, Record, Struct(ure), (Daten-)satz.

    In einer "Tabelle" nennt man es dann "Zeile".

    In einfachen Systemen bleibt so eine Satzdefinition (Zeilendefinition) über die Lebensdauer der Datei (Tabelle) konstant. Das bedeutet dann, dass man diese Strukturen als genaues Typenabbild (mit jeweils anderen Inhalten) einfach aneinanderreiht, wenn man Daten ansammelt.

    In komplexeren Systemen werden die Daten aber nicht mehr in Sätzen gespeichert, sondern in Typenbäumen oder zumindest Elementbäumen (siehe z.B. "B+Tree"). Außerdem können sich die Strukturen auch von Satz zu Satz ändern, also nicht alle Elemente in die Bäume eingebaut werden. Da wird es dann irgendwann richtig kompliziert.

    Je nachdem, wie die Daten nun angeordnet werden, spricht man von

    • wahlfreiem Zugriff
    • sequenziellem Zugriff (mit fester Satzlänge)
    • vollständig sequentueillem Zugriff
       (Textdatei. Sowohl Satzlänge als auch beteiligte Elemente können unterschiedlich
        viel Platz beanspruchen)
    • Baumstruktur
    • direktgestreuter Zugriff (hier liegt von vornherein fest, welcher Datensatz an
        welcher Stelle abgespeichert wird, wenn er denn erscheint)
    • ...

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      vielen Dank für die ausführlichen Erklärung. Ich weiß aber leider immer noch nicht ganz genau, was ich unter der "Datenstruktur" einer Tabelle vorstellen soll. Sind das eventuell die Datendtypen, die die Spalten aufnehmen können? Z.B.:

      Name String(32) Not Null,
      Vorname String(32) Not Null,
      ...

      Ich muss nämlich etwas über die Datenstruktur einer Tabelle schreiben, ich weiss aber leider nicht genau, was mit "Datenstruktur" an dieser Stelle gemeint ist.

      Danke nochmals

      1. Hello,

        vielen Dank für die ausführlichen Erklärung. Ich weiß aber leider immer noch nicht ganz genau, was ich unter der "Datenstruktur" einer Tabelle vorstellen soll. Sind das eventuell die Datendtypen, die die Spalten aufnehmen können? Z.B.:

        Name String(32) Not Null,
        Vorname String(32) Not Null,
        ...

        Ich muss nämlich etwas über die Datenstruktur einer Tabelle schreiben, ich weiss aber leider nicht genau, was mit "Datenstruktur" an dieser Stelle gemeint ist.

        Wenn man es genau nimmt, kommst Du an die Datenstruktur einer Tabelle eines DBMS gar nicht heran, es sei denn, du schaust mit Hilfsmitteln in die Dateien des DBMS. Die Datenstrukturen eines DBMS gehen dich als DBMS-Benutzer schlichtweg nichts an.

        Die Tabellenstruktur / Tabellendefinition stellt den logischen Aufbau der Tabelle dar, die dahinterliegende Datenstruktur den physischen.

        Darum spricht man bei Tabellen auch nicht von Datentypen, sondern von Spaltentypen und bei den "Datensätzen" spricht man von "Zeilen".

        Im Grunde geht es den User auch nichts an, mit welchem Datentyp das DBMS einen Spaltentyp abbildet. Hauptsache ist nur, dass es dies verlustfrei tut.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi,

          danke. Das ist die Voragebe

          Genaue Darstellung der Datenstruktur?

          Könnte sein, dass damit die Tabellenstruktur und der Aufbau der Tablle gemeint ist? Ich meine, welche Art von Daten in die Tabelle gespeichert werden?

          Gruß

          1. hi,

            Könnte sein, dass damit die Tabellenstruktur und der Aufbau der Tablle gemeint ist? Ich meine, welche Art von Daten in die Tabelle gespeichert werden?

            Kann es sein, dass wir jetzt weiter Raten sollen?

            Hotti

            1. Hi,

              nein, das heisst nicht!

              Schöne Gruß

              1. Schöne Gruß

                Den erwiedere ich gerne ;)

                Tom hat ja schon Einiges zu Datenstrukturen geschrieben.

                Es läuft darauf hinaus, dass Datenstukturen in der Anwendung, im Programmcode oder in einem Script bedeutsam sind, somit auch im Programmcode eines RDBMS. Inwieweit Datenstrukturen in Letzterem intern eine Rolle spielen, interessiert wahrscheinlich nur diejenigen, die entweder das Rad neu erfinden oder ein eigenes RDBMS bauen wollen.

                Möglich ist jedoch eine Beziehung zwischen Datenstrukturen in einer Anwendung und dem RDBMS mit dem die Anwendung arbeitet. Beispiel ORM, Object Relational Mapping, vom Frontend zum Backend:

                • der Benutzer kriegt ein Objekt zu sehen, Objekt "Haselhuhn", mit den Attributen "Vorname" und "Straße",

                • direkt mit dem Code verbunden ist eine Datenstruktur, z.B. ein struct in c oder ein Hash mit Referenzen in Perl, d.h., das Objekt ist in einer Datenstruktur abgebildet, in Perl sieht das so aus:

                  
                $haselhuhn = {  
                  Vorname => 'Horst',  
                  Str => 'Im Felde',  
                };  
                
                
                • die Anwendung möchte die Daten dauerhaft speichern und bedient sich dafür eines ORM-Layers, weil anstelle einer Objektorientierten DB nur ein Relationales DBMS zur Verfügung steht,

                • der ORM-Layer schnappt sich die Datenstruktur und setzt die darin enthaltenen Daten in eine Tabelle um. Im Einfachsten Fall ergibt ein Objekt einen Datensatz in einer Tabelle mit Feldnamen, die genauso heißen wie die Attribute; Tabelle Objects, Feldnamen: Objectname, Vorname, Str.

                • der Benutzer möchte jetzt, dass das Haselhuhn ein Küken bekommt und tippt das ein,

                • die Anwendung reicht die Anfrage an das ORM weiter,

                • das ORM, erzeugt ein neues Objekt, was defaultmäßig von der Henne erbt, um die Vererbung muss sich das ORM kümmern, weil es das RDBMS nicht hergibt. Vom ORM bekommt die Anwendung ein ausgebrütetes Ei zurückgereicht,

                • Im Fehlerfall gibt das ORM ein hartgekochtes Ei zurück.

                In Wirklichkeit ist das alles natürlich viel komplizierter ;)

                Horst H.

  2. Hi,

    kann mir bitte jemand den Unterschied zwischen "Datenstruktur" und "Tabellenstruktur" in einer Datenbank kurz erklären.

    Die Datenstruktur bezeichnet die Daten und die Art und Weise, wie du auf sie zugreifen kannst. Eine Tabellenstruktur beschreibt eine Art, wie eine Datenstruktur gespeichert werden kann.

    Beispiel:
    Ein Auto hat einen Hersteller, Bauteile u.v.m.
    Mit objektorientierter Denkweise würdest du eine Klasse Auto definieren, welche z.B. ein Attribut "Bauteile" hätte, welches ein Array von Bauteilen enthalten würde.

    Um dieses Objekt zu speichern, könntest du eine Tabelle Auto erstellen, und für die Bauteile und die Hersteller jeweils eine Tabelle, welche zur Tabelle Auto eine 1:n- bzw. n:1-Beziehung haben.

    Bis die Tage,
    Matti

    1. Hallo

      Die Datenstruktur bezeichnet die Daten und die Art und Weise, wie du auf sie zugreifen kannst. Eine Tabellenstruktur beschreibt eine Art, wie eine Datenstruktur gespeichert werden kann.

      oder anders herum.

      Gruss, Frank

      1. Hallo

        Die Datenstruktur bezeichnet die Daten und die Art und Weise, wie du auf sie zugreifen kannst. Eine Tabellenstruktur beschreibt eine Art, wie eine Datenstruktur gespeichert werden kann.

        oder anders herum.

        Gruss, Frank

        ich würde noch einen schritt weiter gehen. im kontext von datenbanken ist eine Tabelle wohl nie die art, wie die daten gespeichert werden.....

        Ilja