Visual Dataflex
Zur Startseite Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen
Datenbank RSS Feed Selector Zur User-Map

 
Boardmenü
» Forum
» Portal

» Registrieren
» Suche
» Statistik
» Mitglieder
» Team
» Kalender
» Sponsoren
» Partner

» F.A.Q

Portalmenü
» Datenbank anlegen
» Datenbank Entwicklung
» Empfehlungen
» Portal
» Programm erstellen
» Über visual Dataflex

» Statistik

Dataflex Empfehlungen

Englisches Dataflex Forum


Anzeigen

Sponsoren
Kostenloser Linktausch

Antivirus Software

Foren Verzeichnis

HP Color Laserjet 1600

Windows 7 Forum


Social Bookmark Script

Visual Dataflex » VDF Anfänger » Master child / indizes » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Master child / indizes
Autor
Beitrag
Remo
Jungspund


Dabei seit: 25.09.2007
Beiträge: 11

Master child / indizes Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo zusammen,

ich hab gleich mal zu Beginn des neuen Jahres wiedereinmal VDF gestartet und kämpfe wiedereinmal mit Dingen die aus meiner Sicht alles andere als intuitiv umgesetzt wurden.

Persönlich würde ich es toll finden, wenn es einen "Best practice Guide bezüglich Indizes" geben würde, da es bei diesem Thema einige Dinge gibt, die in den Details ganz anders funktionieren als man es sich von den restlichen SQL System gewohnt ist.

Ich hab schon an einigen Stellen nach solchen Informationen gesucht, sie aber nur punktuell in der Knowledge Base und in den Newsgroups gefunden..

Auch wenn vielleicht wiedereinmal der eine oder andere Satz in meiner direkten Art etwas unfreundlich erscheinen mag, so betrachtet dies bitte als konstruktiven Input...

Ich hab einige Punkte die mir als ungewohnt erscheinen anbei aufgelistet.. Ich hoffe ich bin nicht die einzige Person die dies als ungewohnt betrachtet ;-)

Besten Dank und einen guten Start ins 2008!
Remo


Unique Index

Wieso muss bei VDF ein Index zwingend eindeutig sein? Dies macht doch überhaupt keine Sinn, das kostet nur Performance und Speicherplatz?

Ich hatte vor später auf eine andere DB umzusteigen, während der Entwicklung ist es aber ganz praktisch mit der integrierten DB zu arbeiten.. Wenn ich nun aber dabei die Indizes in dieser Art und Weise definieren muss.. hmm.. Muss ich dann gleich alles mit VDFQuery erledigen?

Reihenfolge

Spielt es eine Rolle in welcher Reihenfolge die Felder innerhalb eines Index abgelegt werden?

ReIndex

Wann muss ich einen ReIndex Vorgang manuell starten?
Und wieso überhaupt? Wäre es nicht möglich zu erkennen, dass der Index nicht mehr gültig ist und dann halt einen langsameren Fullscan zu starten? Lieber eine langsame Performance als keinen Zugriff auf die Daten..

Master-Child Relationships

Wieso kann ich eine Beziehung definieren, welche dann später wenn ich eine Master-Child Maske erstellen will gar nicht funktioniert?

Warning: Relationship were found in file projects that are not represented in your DD class files...

Was bringt eine Relationship wenn sie nicht im DD ist?

Primary key index doesn't match relationship columns

Der Check Relationship Report sagt mir dies, aber die Spalten sind identisch definiert (numeric 6.0).

Was ist eigentlich ein Primary Key? "Column Settings" - "Key Field"?
Im Relationship Wizard kann ich diese Spalte nicht auswählen wenn nach dem Primary Key verlangt wird...?

Recnum

Was hat es mit Recnum auf sich? Gewisse Leute haben an der Kurzpräsentation in Luzern gesagt, man könne damit der Index eindeutig ist, recnum hinzufügen. Dies führt aber soweit ich dies verstehe dazu, dass VDF den key nicht mehr als solchen erkennt?!

Selbstbezug

Im Wizard für die Relationships kann ich die Tabelle in der ich mich befinde nicht auswählen. Manuell hingegen geht dies..
Gibt es Gründe dafür? Wie sollte man einen Selbstbezug (z.B für eine Rekursion) am besten machen?

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Remo: 04.01.2008 10:57.

04.01.2008 10:44 Remo ist offline E-Mail an Remo senden Beiträge von Remo suchen Nehmen Sie Remo in Ihre Freundesliste auf
Michael Michael ist männlich
Grünschnabel


Dabei seit: 11.12.2007
Beiträge: 6
Einsatzart von VDF: gewerblich
Anwenderstatus: Programmierer
Herkunft: MH
Betriebssystem: Vista

RE: Master child / indizes Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Remo,

hier ein Paar Anmerkungen von mir ohne Anspruch auf Vollständigkeit:

Unique Index

Ein Index muss nicht zwingend eindeutig sein. Duch hinzufügen des "Feldes" Recnum am Ende der Indexkette ist er das dann nicht mehr.
Gehört der Index allerdings zu einer Elterndatei muss er natürlich eindeutig sein, damit der Kinddatensatz seinen Elterndatensatz eindeutig findet.

Reihenfolge

In _der_ Reihenfolge wird dann sortiert. Wenn ich z.B. zuerst das Feld PLZ angebe und danach NACHNAME kann ich für ein PLZ-Bereich in alphabetischer Reihenfolge durch die Adressen blättern. Umgekehrt würde es kaum Sinn machen, für einen bestimmten Nachnamen eine Sortierung in PLZ-Reihenfolge zu erhalten.

ReIndex

Bei mir ist schon lange kein Index mehr kaputt gegangen. Das passiert höchstens, wenn DataFlex einen Datensatz gespeichert hat, und dann z.B. der Strom ausfällt oder das Netzwerk zusammenbricht und das Programm keine Zeit mehr hat, den Index zu aktualisieren.

Master-Child Relationships

Wenn die Relationen gesetzt sind, solltest Du im DataBaseBuilder auf der TabPage "Structures" bei Delete- und SaveStructure auf den "Zauberstab", dann werden die Relationen auch im DD bekannt.

KeyField

bedeutet, das der Wert nachträglich nicht mehr geändert werden darf,
weil darüber z.B. eine Relation erstellt worden ist, d.h. ein Kinddatensatz könnte bereits angelegt worden sein.

Recnum // VDF-Eigenheit

ist ein virtuelles Feld (Datensatz-Nr), das automatisch verwaltet wird.
Darüber ist jeder Datensatz eindeutig adressierbar - auch ohne dass dafür ein Index angelegt werden muss.

Selbstbezug

Das Stichwort hierzu lautet ALIAS-Datei, ist in der Hilfe ausführlich beschrieben und eine tolle Möglichkeit von VDF.

hth

__________________
Michael Trucksess
04.01.2008 19:33 Michael ist offline E-Mail an Michael senden Beiträge von Michael suchen Nehmen Sie Michael in Ihre Freundesliste auf
Remo
Jungspund


Dabei seit: 25.09.2007
Beiträge: 11

Themenstarter Thema begonnen von Remo
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke Michael..

Unique Index

Doch der Index ist ja dann wieder eindeutig weil recnum's ja eindeutig sind. Diese recnum einzubinden ist genau das was ich nicht verstehe, das kostet nur Speicherplatz und Performance..

Reihenfolge

Da hab ich mich wohl unklar ausgedrückt, ich meinte nicht diese Reihenfolge, sondern die der Felder innerhalb eines Composite Index.. Ich hatte zB Probleem als recnum die erste Spalte innerhalb des Index war..

ReIndex

Tja keine Ahnung ;-)

Master Child

Okay diesen Zauberstab muss ich mir mal anschauen..

Recnum

Für sowas hab ich doch einen Primary Key?

Selbstbezug

Hmm okay muss ich mal durchlesen.. Was wäre so schlimm wenn man einen Selbstbezug direkt anlegen könnte ohne noch eine Tabelle anzulegen? Naja ich les mal die Hilfe durch, vielleicht kann ich es dann ja selber beantworten ;-)

Danke!
Remo
05.01.2008 12:29 Remo ist offline E-Mail an Remo senden Beiträge von Remo suchen Nehmen Sie Remo in Ihre Freundesliste auf
Roman Köhler Roman Köhler ist männlich
Administrator


images/avatars/avatar-4.jpg

Dabei seit: 29.08.2007
Beiträge: 202
Einsatzart von VDF: gewerblich
Anwenderstatus: VDF-Entwickler
Herkunft: Mannheim
Betriebssystem: Windows XP

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Remo,

Unique Index
Strenggenommen hast Du natürlich recht, dass durch das Hinzufügen der Recnum ein Index nicht mehrdeutig wird, da die Recnum ja auch eindeutig ist.

Aber jede Datenbank, egal ob DF oder SQL muss einen Datensatz wieder finden können. Dazu muss er eindeutig identifizierbar sein. Dazu benutzt DF die automatisch generierte recnum = Record Number. Auf diese Recnum hast Du als Anwender oder Programmierer keinerlei Einfluss. Sie wird einfach automatisch mit der nächsten Datensatzneuanlege weitergezählt. In einer SQL-Datenbank muss es einen solchen eindeutigen Datensatzidentifikator auch geben, keine Ahnung wie er dort heißt, ob er unter SQL überhaupt ersichtlich oder auf ihn zugegriffen werden kann. Aber anders kann ein Datensatz ja auch gar nicht eindeutig gefunden werden.

Nun zum eigentlichen Problem:
Ich will, dass in meiner Datenbank die Kunden nach Nachnamen - Vornamen und Geburtsdatum sortiert werden. In diesem Fall legt man genau einen solchen Index nach Nachnamen, Vornamen und Geburtsdatum an. So konfiguriert, kann als hier Folge pro gleichem Nachnamen, Vornamen und Geburtsdatum nur ein Datensatz erfasst werden. Wenn man den 2. Max Müller, geboren am 01.01.1999 eingeben willst, ist mit einer Fehlermeldung Schluss.
Durch Hinzufügen der Recnum am Ende des Index (und nur dort macht es einen Sinn), läßt man pro gleichem Nachnamen, Vornamen, Geburtsdatum und Recnum auch nur einen Datensatz zu. Da es die Recnum aber ja nur einmal im System gibt, bedeutet dies für Deine manuell gefüllten Felder (Nachnamen, Vornamen und Geburtsdatum), dass es mehrere Kunden mit gleichen Daten geben kann. Innerhalb dieser gleichen Daten wird dann einfach noch nach der Reihenfolge der Erfassung (Recnum) sortiert.

Mag sein, dass dies für einen SQL-Anhänger etwas unlogisch ist, weil dieser Identifikator im Hintergrund arbeitet, aber bei DF bleibt Dir nichts anderes übrig, als Dich damit zu arrangieren.

Zum Argument Speicherplatz kann ich Dir leider nur sagen, dass ich mir darüber seit Jahren keine Gedanken mehr mache. Bei den heutigen HD-Preisen und -Kapazitäten verschwende ich keine Minute mehr damit, Speicherplatz-sparsam zu programmieren.

Und in der Performance, behaupte ich einmal so frei raus, würde ich keinen Unterschied merken, ob meine Datei ein Indexfeld oder 10 Indexfelder hat. Mag natürlich sein, wenn Du mit Millionen von Datensätzen arbeitest, dann ein Unterschied messbar ist, gemerkt habe ich aber noch nie einen. (Unsere größten Dateien haben über 4 Mio. Datensätze.)

Ich hoffe, ich konnte Die etwas weiterhelfen
LG
Roman
07.01.2008 15:15 Roman Köhler ist offline E-Mail an Roman Köhler senden Homepage von Roman Köhler Beiträge von Roman Köhler suchen Nehmen Sie Roman Köhler in Ihre Freundesliste auf
Roman Köhler Roman Köhler ist männlich
Administrator


images/avatars/avatar-4.jpg

Dabei seit: 29.08.2007
Beiträge: 202
Einsatzart von VDF: gewerblich
Anwenderstatus: VDF-Entwickler
Herkunft: Mannheim
Betriebssystem: Windows XP

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Remo,

hier kommt Antwort Teil 2.

Reihenfolge:
Ich denke, Dir erklären zu wollen, dass man die Indexfelder immer in der Reihenfolge im Index stehen haben soll, nach der auch sortiert werden soll. ist schlichtweg überflüssig. Die Recnum entscheidet dann darüber, ob der Index eindeutig oder mehrdeutig ist. Die Recnum wird immer hinten angehängt.

Reindex:
Einen automatischen Fullscan, falls es tatsächlich einmal einen Index erwischt haben sollte, gibt es in VDF nicht. Ich glaube auch nicht, dass dies wirklich einen Sinn macht, da Du dadurch mit Sicherheit vormals schnelle Programme Ruckzuck in eine unmögliche Geschwindigkeit verlangsamen würdest. Stelle Dir einmal eine Großelterndatei vor, die auf eine dann unsortierte Kinddatei mit mehreren Mio. Datensätzen zugreift. Diese hat wiederum mehrere unsortierte Kinddateien mit ein paar Mio Sätzen. Klar, irgendwann bekämst Du ein Ergebnis auf den Schirm, aber ich wette mit Dir, dass Du niemals freiwillig so lange warten würdest. Außerdem gibt es immer wieder Anwendungen, wo es speziell auf die Reihenfolge der Datensätze ankommt. Ein einfaches Finden per Fullscan würde mit Sicherheit in vielen meiner Anwendungen die Ergebnisse verfälschen. Außerdem habe ich, glaube ich, vor mindestens 4 Jahren meinen letzten Reindex gemacht. Und ich arbeite mit 25 Mitarbeitern zusammen an der Original VDF-Datenbank.

Selbstbezug (Alias)
Hier würde ich Dir dringend raten, ausführlich die Online Hilfe zu Rate zu ziehen. Dies ist ein etwas komplexeres Thema, bei dem gerne einzelne Schritte vergessen werden. Und wenn das dann passiert, dann geht meist gar nichts mehr. Falls Du mit der Hilfe nicht zurecht kommst, melde Dich einfach noch einmal.

LG
Roman
07.01.2008 15:38 Roman Köhler ist offline E-Mail an Roman Köhler senden Homepage von Roman Köhler Beiträge von Roman Köhler suchen Nehmen Sie Roman Köhler in Ihre Freundesliste auf
Remo
Jungspund


Dabei seit: 25.09.2007
Beiträge: 11

Themenstarter Thema begonnen von Remo
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Roman,

danke für deine ausführlichen Antworten!

Unique Index

Es gibt da einen kleinen Unterschied: Wie du gesagt hast, muss ein Datensatz eindeutig indentifizierbar sein (bei DF recnum, bei Oracle rowid usw.). Der Datensatz ja aber nicht der Index! Ein einzelner BTree Eintrag sollte auch auf mehrere Datensätze zeigen können..

Ich hab da eine kleine Applikation bei der ich Tabellen habe wo ein einzelner Index 5GB Speicher belegt und dies ist redundanter SAN Speicher.. Da spielt das Geld plötzlich wieder eine Rolle ;-)

Dito auch mit der Performance, bei einer Tabelle mit ein paar Mio Einträge ist das egal aber wenn es etwas Grösser wird, sind zu viele Indexierungen schon hinderlich...

Aber wie du wohl richtig gesagt hast, bei DF muss ich mich damit wohl arrangieren..

Reindex

Ich kenne kein SQL System ausser DF das dies nicht tut...

Und ich hab lieber einen langsamen Zugriff als gar keine Daten. Freiwillig warten will ich natürlich nicht aber wenn der User plötzlich seine Buchungen oder sonstwas nicht mehr findet ist das ziemlich fatal..

Denke aber das eigentlich Problem ist mehr: Wieso muss ich dies so oft ausführen.. Werde da etwas Zeit investieren..

Selbstbezug (Alias)

Ja da werd ich mal die Doku durchlesen.. Wit welchem ERD Tool arbeitet ihr? Wüsste nicht wie ich bei Chen, IDEF1X, Bachmann usw. eine Alias Tabelle darstellen kann?
08.01.2008 11:38 Remo ist offline E-Mail an Remo senden Beiträge von Remo suchen Nehmen Sie Remo in Ihre Freundesliste auf
Roman Köhler Roman Köhler ist männlich
Administrator


images/avatars/avatar-4.jpg

Dabei seit: 29.08.2007
Beiträge: 202
Einsatzart von VDF: gewerblich
Anwenderstatus: VDF-Entwickler
Herkunft: Mannheim
Betriebssystem: Windows XP

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Remo,

unique Index
ok, ok, wenn Du natürlich solche Monstertabellen aufbauen willst, verstehe ich Deinen Wunsch Platz zu sparen.

Reindex
Wenn Du mit Tabellen arbeitest, wo die Indexdateien schon 5 G haben, kann ich Dir vesprechen, dass ein Durchsuchen der entsprechenden Datendatei (ohne Benutzung der Indexdatei) bei Dataflex mehrere Stunden, wenn nicht Tage dauern würde. Und so lange wartet garantiert kein Nutzer auf die Ausgabe seiner Daten. (Wie gesagt, keine Ahnung, wie die Sache unter SQL aussähe)

Alias
Was sind denn um Himmels willen ERD, Chen, IDEF1X, Bachmann usw.?

LG
Roman
09.01.2008 07:52 Roman Köhler ist offline E-Mail an Roman Köhler senden Homepage von Roman Köhler Beiträge von Roman Köhler suchen Nehmen Sie Roman Köhler in Ihre Freundesliste auf
Remo
Jungspund


Dabei seit: 25.09.2007
Beiträge: 11

Themenstarter Thema begonnen von Remo
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Als DB kommt schlussendlich nicht die Dataflex DB zum Einsatz, aber während der Entwicklung wäre das einfacher, allerdings müsste ich fähig sein die DB 1:1 zu übernehmen, was aber aufgrund dieser kleinen Probleme nicht ganz so einfach möglich sein wird..


Chen, IDEF1X und Bachmann sind ERD (Entity Relationship Diagram) Notation um eine DB schematisch darzustellen.. UML für Datenbanken halt

http://farm1.static.flickr.com/56/144141318_13160696c4_o.jpg
09.01.2008 12:48 Remo ist offline E-Mail an Remo senden Beiträge von Remo suchen Nehmen Sie Remo in Ihre Freundesliste auf
Gehe zu:
Neues Thema erstellen Antwort erstellen
Visual Dataflex » VDF Anfänger » Master child / indizes

Views heute: 3.157 | Views gestern: 2.869 | Views gesamt: 2.181.878

Impressum

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH | SEO by seo-wbb.de - Sponsored by Rene Urlaub und Reise Infos Frankenthal