Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Wizards & Builders GmbH Datenbankcontainer Datenbankcontainer in Microsoft Visual FoxPro.

Ähnliche Präsentationen


Präsentation zum Thema: "Wizards & Builders GmbH Datenbankcontainer Datenbankcontainer in Microsoft Visual FoxPro."—  Präsentation transkript:

1 Wizards & Builders GmbH Datenbankcontainer Datenbankcontainer in Microsoft Visual FoxPro

2 Wizards & Builders GmbH Diese Schulung dient zur Einführung der Schulungsteilnehmer in die Arbeit mit Datenbankcontainer (im Vergleich zu Einzeltabellen) in Visual FoxPro

3 Wizards & Builders GmbH Themenübersicht Datenbankcontainer (Sinn/Struktur) Datenbankcontainer (Sinn/Struktur) Arbeiten mit dem Datenbankcontainer Arbeiten mit dem Datenbankcontainer Grundbefehle des Datenbankcontainers Grundbefehle des Datenbankcontainers Tabellen und Felder im DBC Tabellen und Felder im DBC Buffering und Buffermode Buffering und Buffermode Transaktionen Transaktionen Referentielle Integrität Referentielle Integrität Trigger (Insert, Update, Delete, Fehler) Trigger (Insert, Update, Delete, Fehler)

4 Wizards & Builders GmbH Datenbankcontainer Datenbankcontainer fassen freie Tabellen zu einer Datenbank zusammen und verwalten die Metadaten

5 Wizards & Builders GmbH Datenbankcontainer Ein DBC ist kein Data-Dictionary! Ein DBC ist kein Data-Dictionary! Tabellenstrukturen im DBF-Header Tabellenstrukturen im DBF-Header Indexstrukturen im CDX-Header Indexstrukturen im CDX-Header Verwaltet Zusatzinformationen Verwaltet Zusatzinformationen zu Feldern und Tabellen (nicht freie Tabellen) zu Feldern und Tabellen (nicht freie Tabellen) Verwaltet persistente Relationen Verwaltet persistente Relationen Verwaltet referentielle Integrität Verwaltet referentielle Integrität

6 Wizards & Builders GmbH Logische Bestandteile tables local views remote views connections indexes relations rules / triggers stored procedures

7 Wizards & Builders GmbH Physische Bestandteile DBC DCT DCX DBC DCT DCX DBF1 FPT1 CDX1 DBFn FPTn CDXn DBF2 FPT2 CDX2

8 Wizards & Builders GmbH Arbeiten mit dem DBC Anlegen einer Tabelle Anlegen einer Tabelle Feldeigenschaften Feldeigenschaften Anlegen einer Relation (Drag & Drop) Anlegen einer Relation (Drag & Drop) Anlegen einer Ansicht (View) Anlegen einer Ansicht (View) Feldeigenschaften Feldeigenschaften Anlegen einer Verbindung (Connection) Anlegen einer Verbindung (Connection) Anlegen einer Remote Ansicht (View) Anlegen einer Remote Ansicht (View)

9 Wizards & Builders GmbH Tabellen im DBC CREATE TABLE CREATE TABLE ALTER TABLE ALTER TABLE ADD TABLE ADD TABLE REMOVE TABLE REMOVE TABLE FREE TABLE (!) FREE TABLE (!) CLOSE TABLE CLOSE TABLE INDBC( ) INDBC( ) VALID RULE VALID RULE VALID TEXT VALID TEXT CAPTION CAPTION COMMENT COMMENT UPD TRIGGER () UPD TRIGGER () INS TRIGGER () INS TRIGGER () DEL TRIGGER () DEL TRIGGER ()

10 Wizards & Builders GmbH Felder im DBC FORMAT FORMAT MASK MASK CAPTION CAPTION VALID RULE VALID RULE VALID TEXT VALID TEXT DEFAULT DEFAULT CLASS CLASS CLASSLIBS CLASSLIBS COMMENT COMMENT Optionen beachten! Optionen beachten!(Klassenzuordnung)

11 Wizards & Builders GmbH Validierungen Feld-Ebene: VALID-Funktion VALID-Funktion Fehlermeldung Fehlermeldung Wahlweise Funktion oder Konstante Wahlweise Funktion oder Konstante Default-Wert dazu! Default-Wert dazu!Satz-Ebene: für Validierung über mehrere Felder für Validierung über mehrere Felder ansonsten siehe Feld- Validierung ansonsten siehe Feld- Validierung Trigger kommen als separates Thema

12 Wizards & Builders GmbH Gespeicherte Prozeduren (1) Gehören imanent zu den Tabellen und wird als Prozedur-Datei gesetzt! Gehören imanent zu den Tabellen und wird als Prozedur-Datei gesetzt! Werden auch über ODBC ausgeführt! Werden auch über ODBC ausgeführt! Verwendet für: Verwendet für: Feld-Validierung, Feld-Fehlermeldung Feld-Validierung, Feld-Fehlermeldung Satz-Validierung, Satz-Fehlermeldung Satz-Validierung, Satz-Fehlermeldung Feld-Default-Wert Feld-Default-Wert Trigger-Aufrufe Trigger-Aufrufe

13 Wizards & Builders GmbH Gespeicherte Prozeduren (2) Kompilate in DBC-Datensatz sind versionsabhängig (VFP 3.0, 5.0 / 6.0) - d.h. Neukompilieren (!) Kompilate in DBC-Datensatz sind versionsabhängig (VFP 3.0, 5.0 / 6.0) - d.h. Neukompilieren (!) ggf. ausgelagerte Prozedurdatei verwenden ggf. ausgelagerte Prozedurdatei verwenden Tabellen/Felder finden richtige Prozedurdatei - eigene Anwendung verwendet aber nur aktiven DBC! Tabellen/Felder finden richtige Prozedurdatei - eigene Anwendung verwendet aber nur aktiven DBC! Set database to Set database to Namenskonventionen für DBC-Funktionen! Namenskonventionen für DBC-Funktionen!

14 Wizards & Builders GmbH Views im DBC Felder (Ausdrücke) Felder (Ausdrücke) Verknüpfung Verknüpfung Filter Filter Sortierung Sortierung Gruppierung Gruppierung Aktualisierung Aktualisierung Verschiedenes Verschiedenes Schlüssel setzen Schlüssel setzen Felder setzen Felder setzen SQL-Update setzen SQL-Update setzen Where-Klausel Where-Klausel Schlüssel änderbar! Schlüssel änderbar! Feldeigenschaften! Feldeigenschaften!

15 Wizards & Builders GmbH Struktur des DBC OBJECTID OBJECTID PARENTID PARENTID OBJECTTYPE => OBJECTTYPE => OBJECTNAME OBJECTNAME PROPTERY (M) PROPTERY (M) CODE (M) CODE (M) RIINFO RIINFO USER (M) USER (M)Objekt-Typen: DATABASE DATABASE TABLE TABLE FIELD FIELD INDEX INDEX VIEW VIEW CONNECTION CONNECTION

16 Wizards & Builders GmbH Grundbefehle DBC (1) CREATE DATA CREATE DATA OPEN DATA OPEN DATA MODIFY DATA MODIFY DATA CLOSE DATA CLOSE DATA DELETE DATA DELETE DATA PACK DATA PACK DATA sortiert Schlüssel neu! sortiert Schlüssel neu! VALIDATE DATA VALIDATE DATA Zeigt manche Fehler nur! Zeigt manche Fehler nur! SET DATA TO SET DATA TO Achtung: Projektmanager kann DBC offenhalten! Achtung: Projektmanager kann DBC offenhalten!Info-Funktionen: DBC() DBC() DBUSED() DBUSED()

17 Wizards & Builders GmbH Grundbefehle DBC (2) Anzeigefunktionen: LIST DATABASE LIST DATABASE LIST TABLES LIST TABLES LIST VIEWS LIST VIEWS LIST CONNECTIONS LIST CONNECTIONS LIST PROCEDURE LIST PROCEDURE Sonstige Funktionen: ADATABASES( ) ADATABASES( ) ADBOBJECTS( ) ADBOBJECTS( ) Eigenschaften ändern: DBGETPROP( ) DBGETPROP( ) DBSETPROP( ) DBSETPROP( )

18 Wizards & Builders GmbH DbGetProp( ) / DbSetProp( ) Datenbanken Datenbanken Tabellen Tabellen Felder in Tabellen Felder in Tabellen Ansichten Ansichten Felder in Ansichten Felder in Ansichten Verbindungen Verbindungen

19 Wizards & Builders GmbH Strukturänderungen Eigenlösungen: Neuen DBC mit geänderten Tabellen versenden Neuen DBC mit geänderten Tabellen versenden SQL Alter Table- Befehl versenden SQL Alter Table- Befehl versenden Keine Primary Keys in VFP 3.0 / VFP 5.0 ! Keine Primary Keys in VFP 3.0 / VFP 5.0 !Fremdlösungen: XCASE-Zusatztool XCASE-Zusatztool SDT-Zusatztool (Stonefield Database Toolkit) SDT-Zusatztool (Stonefield Database Toolkit)

20 Wizards & Builders GmbH Hinweise zum DBC Separates Datadictionary notwendig für Reindizierung od. Neuerzeugung Separates Datadictionary notwendig für Reindizierung od. Neuerzeugung wahlweise Eigenbau, XCase oder Stonefield wahlweise Eigenbau, XCase oder Stonefield wahlweise GENDBCX als Minimal-Lösung wahlweise GENDBCX als Minimal-Lösung Tabellen und DBC sind eine Einheit Tabellen und DBC sind eine Einheit Immer zusammen sichern / ändern Immer zusammen sichern / ändern FREE TABLE mit Vorsicht! FREE TABLE mit Vorsicht!

21 Wizards & Builders GmbH Buffering Buffering dient zur Zwischenspeicherung von Änderungen

22 Wizards & Builders GmbH Prinzip des Buffering OLDVAL- Puffer OLDVAL- Puffer Methode zum automatischen Puffern von Daten zwischen einer Eingabe-Maske und der DBF-Datei auf der Festplatte Eingabe- Maske Eingabe- Maske Daten- Puffer Daten- Puffer DBF- Datei DBF- Datei

23 Wizards & Builders GmbH Tablebuffering TABLEREVERT() TABLEREVERT() TABLEUPDATE() TABLEUPDATE() CURSOR-GETPROP() CURSOR-GETPROP() CURSOR-SETPROP() CURSOR-SETPROP() CURVAL() CURVAL() OLDVAL() OLDVAL() GETNEXT-MODIFIED() GETNEXT-MODIFIED() GETFLDSTATE() GETFLDSTATE() SETFLDSTATE() SETFLDSTATE()

24 Wizards & Builders GmbH Tableupdate / Tablerevert Parameter für Tableupdate( ) ---Einzelsatz ---Einzelsatz.T.bis 1. Fehler.T.bis 1. Fehler 2alle die gehen 2alle die gehen.T.Forced Update.T.Forced Update Parameter für Tablerevert( ) Einzelsatz Einzelsatz Alle Änderungen Alle Änderungen Schließen = Revert! Schließen = Revert!

25 Wizards & Builders GmbH Buffermode Buffermodes: 1-None 1-None 2-Pessimistic Row 2-Pessimistic Row 3-Pessimistic Table 3-Pessimistic Table 4-Optimistic Row 4-Optimistic Row 5-Optimistic Table 5-Optimistic Table Row: Skip = Update (!) Row: Skip = Update (!)Optimistic: Record changed! Record changed! Curval/Oldval() Curval/Oldval() GetFldState() GetFldState()Table-Buffering: Getnextmodified() Getnextmodified()

26 Wizards & Builders GmbH Funktionen im Einsatz Beispiele: Beispiele: ? GetFldState(-1) != Repl(1,Fcount()+1) ? Left( GetFldState(-1),1) != 1 Goto ( GetNextModified( Recno() ) ) ? Field( At( 2, GetFldState(-1) ) ) ? SetFldState( Feld, 1 )&& Views! Achtung: Negative Record-Nummern! Achtung: Negative Record-Nummern!

27 Wizards & Builders GmbH Reihenfolge Tabellenfeld-Valid (alle Felder) Tabellenfeld-Valid (alle Felder) Masken-Valid (aktuelles Element) Masken-Valid (aktuelles Element) Datensatz-Valid(ierung) Datensatz-Valid(ierung) Primary/Candidate-Schlüssel Primary/Candidate-Schlüssel Trigger Trigger kaskadierend über alle Childs kaskadierend über alle Childs Achtung: _TRIGGERLEVEL kann hoch werden Achtung: _TRIGGERLEVEL kann hoch werden

28 Wizards & Builders GmbH CursorGetProp( ) / CSetProp( ) Allgemein: Allgemein: Buffering (ein- /ausschalten, abfragen, Wert 1-5) Buffering (ein- /ausschalten, abfragen, Wert 1-5) Caption (Auslesen Text für Feldlabel zur Laufzeit) Caption (Auslesen Text für Feldlabel zur Laufzeit) nur für Views (Auch im View-Designer): nur für Views (Auch im View-Designer): CompareMemo CompareMemo Updatable Updatable Updatable Field List Updatable Field List Where Type Where Type

29 Wizards & Builders GmbH Vorsicht Falle! Allgemeine Probleme: GETNEXTMODIFIED / GETFIELDSTATE() => erst Feld verlassen! GETNEXTMODIFIED / GETFIELDSTATE() => erst Feld verlassen! SetFldState( ) bei Views mit Requery() SetFldState( ) bei Views mit Requery() Table changed im View-Designer sofern alle Felder gewählt wurden (*) Table changed im View-Designer sofern alle Felder gewählt wurden (*)Sonderfall: Buffered Views auf Buffered Tables! Row: Fehler erst beim nächsten Satz! Row: Fehler erst beim nächsten Satz! Tablerevert: Revert im View versagt Tablerevert: Revert im View versagt Primary Key doppelt: Letzter gilt! Primary Key doppelt: Letzter gilt!

30 Wizards & Builders GmbH Transaktionen Transaktionen dienen dem vollständigen Abspeichern einer Gruppe von Datensätzen

31 Wizards & Builders GmbH Transaktionen BEGIN TRANS BEGIN TRANS *-- Datenzugriff *-- Datenzugriff END TRANS END TRANS ROLLBACK ROLLBACK Absturz = Rollback Absturz = Rollback Rollback bei Öffnen! Rollback bei Öffnen! TXNLEVEL() TXNLEVEL() bis 5 Ebenen tief! bis 5 Ebenen tief! Äußerste Ebene zählt! Äußerste Ebene zählt! Experimente mit Transaktionen: 1 Tabelle 1 Tabelle 2 Tabellen aus DBC 2 Tabellen aus DBC Verschiedene DBCs Verschiedene DBCs Freie Tabellen Freie Tabellen Geschachtelt Geschachtelt Task-Manager! Task-Manager!

32 Wizards & Builders GmbH Probleme bei Transaktionen Buffering eingeschaltet = Transaktion läuft nur auf Buffer und nicht auf Platte! Buffering eingeschaltet = Transaktion läuft nur auf Buffer und nicht auf Platte! Buffering ausgeschaltet = Transaktion läßt Einschalten Buffering nicht zu! Buffering ausgeschaltet = Transaktion läßt Einschalten Buffering nicht zu! Dadurch ggf. neue Sätze nicht anlegbar (Valid) Dadurch ggf. neue Sätze nicht anlegbar (Valid) Lösung möglicherweise Buffering mit Tableupdate und dann END TRANS Lösung möglicherweise Buffering mit Tableupdate und dann END TRANS Freie Tabellen ohne Meldung! Freie Tabellen ohne Meldung! Deadlocks möglich - Zugriffsreihenfolge! Deadlocks möglich - Zugriffsreihenfolge!

33 Wizards & Builders GmbH Zugriffsreihenfolge (Deadlocks!) Tabellen nach Parent->Child Tabellen nach Parent->Child Immer erst den Parent sperren Immer erst den Parent sperren notfalls per SQL-Select erst die Parents holen notfalls per SQL-Select erst die Parents holen Datensätze nach Primärschlüssel Datensätze nach Primärschlüssel notfalls per SQL-Select umsortieren notfalls per SQL-Select umsortieren Mehrere Parents ggf. alphabetisch Mehrere Parents ggf. alphabetisch sofern Parents nicht in Parent-Child-Beziehung sofern Parents nicht in Parent-Child-Beziehung

34 Wizards & Builders GmbH Referentielle Integrität RI dient zur Wahrung der inhaltlichen Konsistenz Beziehungen zwischen Tabellen

35 Wizards & Builders GmbH Referentielle Integrität (RI) Programmatisch: CREATE TRIGGER CREATE TRIGGER DELETE TRIGGER DELETE TRIGGER _TRIGGERLEVEL _TRIGGERLEVEL Arten von Triggern: DELETE DELETE UPDATE UPDATE INSERT INSERT Bedeutung der Referentiellen Integrität einer Datenbank Bedeutung der Referentiellen Integrität einer Datenbank Arbeiten mit dem Referential Integrity Builder Arbeiten mit dem Referential Integrity Builder

36 Wizards & Builders GmbH DELETE-Trigger Auslöser: DELETE-Befehl DELETE-Befehl Nicht bei ZAP (!) Nicht bei ZAP (!) Gefährlich!!! Gefährlich!!! Nicht bei PACK (da Sätze gelöscht) Nicht bei PACK (da Sätze gelöscht)Verhalten: CASCASE CASCASE Cascading Delete Cascading Delete RESTRICT RESTRICT sofern Parent vorh. sofern Parent vorh. IGNORE IGNORE

37 Wizards & Builders GmbH INSERT-Trigger Auslöser: APPEND FROM APPEND FROM APPEND BLANK APPEND BLANK IMPORT IMPORT INSERT-SQL INSERT-SQL RECALL (!) RECALL (!)Verhalten: RESTRICT RESTRICT Child nur zu Parent Child nur zu Parent IGNORE IGNORE INSERT unzulässig INSERT unzulässig

38 Wizards & Builders GmbH UPDATE-Trigger Auslöser: GATHER GATHER REPLACE REPLACE REPLACE FROM REPLACE FROM UPDATE-SQL UPDATE-SQL nicht bei DELETED() (!) nicht bei DELETED() (!)Verhalten: CASCADE CASCADE Schlüssel zu Childs Schlüssel zu Childs RESTRICT RESTRICT Parentschlüssel gesperrt Parentschlüssel gesperrt IGNORE IGNORE

39 Wizards & Builders GmbH Probleme mit Triggern Im Gegensatz zu Feld- Valid und Satz-Valid ist ein Triggerfehler ein endgültiger Fehler! Im Gegensatz zu Feld- Valid und Satz-Valid ist ein Triggerfehler ein endgültiger Fehler! Das heißt: VFP macht Rollback über alle Ebenen VFP macht Rollback über alle EbenenProbleme: Ändern von Daten! Ändern von Daten! Update-Endlosschleife... Update-Endlosschleife... Compound Keys Compound Keys Verschiedene DBCs Verschiedene DBCs Kein Nullify für Delete von Parent Kein Nullify für Delete von Parent Builder nicht ändern Builder nicht ändern

40 Wizards & Builders GmbH Fehlermeldungen 1539 Trigger failed 1539 Trigger failed 1=Ins, 2=Upd, 3=Del 1=Ins, 2=Upd, 3=Del 1581 Field no NULL 1581 Field no NULL 1582 Field Rule 1582 Field Rule 1583 Record Rule 1583 Record Rule 1585 Change by A Change by A Used by A Used by A Unique index 1884 Unique index AERROR( ) AERROR( ) Error() Error() Message() Message() Sys(2018) Sys(2018) Select() Select() Trigger-Art Trigger-Art.NULL..NULL. Weitere Elemente für ODBC- Fehlermeldungen Weitere Elemente für ODBC- Fehlermeldungen

41 Wizards & Builders GmbH Vielen Dank! Das waren die Themen: Datenbankcontainer Datenbankcontainer Arbeiten mit DBC Arbeiten mit DBC Grundbefehle DBC Grundbefehle DBC Tabellen und Felder Tabellen und Felder Buffering Buffering Transaktionen Transaktionen Referentielle Integrität Referentielle Integrität Trigger Trigger

42 Wizards & Builders GmbH Wenn Fragen bestehen: Wizards & Builders Methodische Software- Entwicklung GmbH Frankfurter Str. 21b Kronberg Tel.: Fax: CIS: ,175


Herunterladen ppt "Wizards & Builders GmbH Datenbankcontainer Datenbankcontainer in Microsoft Visual FoxPro."

Ähnliche Präsentationen


Google-Anzeigen