Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#24

AW: Wie würdet Ihr das lösen?

  Alt 16. Jan 2015, 09:52
Wenn ich das Konzept von Datenbanken richtig verstehe, dann werden die Daten dadrinnen über Ihren Index verwaltet.
Könnte man so sagen (umgangsprachlich) ist aber nicht richtig.
Der Index auf eine oder mehrere Felder in einer Tabelle ist ein Hilfsmittel zur Beschleunigung des Zugriffs auf gesuchte Werte / Feldinhalte. Eine Datenbank kann komplett ohne Index arbeiten und tadellos funktionieren, ist dann aber um ein Vielfaches langsamer, als eine halbwegs ordentlich indizierte DB. Die Indizierung ist extra nahezu unabhängig von der Logik im Datenmodell, teilweise legt eine DB Indizes automatisch an, ansonsten kann man das alles aber selbst definieren oder automatische Indizierungen ändern. Vergiß erstmal den Index.
Der richtige Begriff ist hier Schlüssel. Schlüsselfelder werden meist in Primär-/Sekundär- und Fremdschlüssel unterteilt. Entscheidend ist zu Anfang der Primärschlüssel, ein eindeutiger Wert, mit dessen Hilfe jeder Datensatz in einer Tabelle eindeutig gefunden werden kann.
Die Erzeugung dieser Werte wird idR durch den Datenbankserver vorgenommen, der weiß, wie er das machen muss. Fortlaufend sind diese Werte nicht notwendiger Weise, das ist unnötig (für die Eindeutigkeit und damit den Sinn dieses Feldes) und wird meist nicht so gemacht.
Jeden Index-Wert gibt es solange wie die DB existiert nur einmal - richtig?
Ja, aber dieser Indexwert, den ich oben beschrieben habe, kann Dir wurscht sein. Ein Datenbank-Index wird niemals direkt durch Abfragen oder so angesprochen. Er wird sofern definiert automatisch vom Server verwaltet, existiert nur einmal, kann aber auf mehrere Werte in der Tabelle zeigen. (Bspw. ein Indexwert 'Meier' zeigt auf viele Datensätze)

Wenn ich jetzt 5 Werte von TabSheet1 in die DB schreibe, dann erhalten die den Index 1-5 - soweit richtig?
Nein, Du würdest einen Primärschlüssel definieren (anstelle des Index), die Werte werden vom Server eingetragen. Du musst sie ggF. nach dem Anlegen eines Datensatzes auslesen, um sie weiterverwenden zu können. Das hängt von den Möglichkeiten des verwendeten Datenbank Clients ab.
Wenn ich die Werte von TabSheet2 Dann von Index 10-15 schreiben will, dann geht das nur solange gut, wie der Anwender nicht 5 mal etwas in TabSheet1 löscht und neu anlegt.
Denn wenn er Index5 löscht und dann doch wieder anlegt, wird daraus Index6 und dann 7, 8, 9, und dann würde Index 16 folgen - richtig?
Nein, nein, nein,.. Ausgehend davon, dass in Deinen Tabsheets nicht die gleiche Datenstruktur vorliegt, hättest Du hinter Tab1 Tabelle A und hinter Tab2 Tabelle B. In beide schreibst Du und jeder andere nach herzenslust rein.
Damit das bei mehreren Nutzern Sinn macht, werden solche Daten idR mit einem Bezug zu einem übergeordneten Objekt (Tabelle C) geschrieben und dargestellt. In Tabelle A und B wird jeweils dieser Bezug auf C mitgeführt. Das nennt man einen Fremdschlüssel (der idR auch über einen Index verfügt - zur Beschleunigung- aber egal).
Wenn ich obiges richtig verstanden habe, ist eine DB für mich nicht nutzbar.
Vielleicht bist Du mittlerweile auf der richtigen Spur, aber Du solltest Dir vielleicht mal ein paar Datenbankgrundlagen aneignen.
Wie auch immer Du Deine Daten bis jetzt verwaltest und abspeicherst, ein Datenbanksystem tut das auch und zwar standardisiert, zuverlässig und schnell. (Und noch mehr, ließ dazu über Transaktionen usw.)
Gruß, Jo
  Mit Zitat antworten Zitat