Datenstruktur
Lowterm
- datenbank
1 Tom0 Matti Mäkitalo0 Frank (no reg)0 Ilja
Hi,
kann mir bitte jemand den Unterschied zwischen "Datenstruktur" und "Tabellenstruktur" in einer Datenbank kurz erklären.
Danke im Voraus
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
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
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
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
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ß
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
Hi,
nein, das heisst nicht!
Schöne Gruß
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.
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
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
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