Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datenbankcontainer in Microsoft Visual FoxPro

Ähnliche Präsentationen


Präsentation zum Thema: "Datenbankcontainer in Microsoft Visual FoxPro"—  Präsentation transkript:

1 Datenbankcontainer in Microsoft Visual FoxPro

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

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

4 Datenbankcontainer Datenbankcontainer fassen „freie Tabellen“ zu einer Datenbank zusammen und verwalten die Metadaten

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

6 Logische Bestandteile
rules / triggers tables relations connections local views stored procedures remote views indexes

7 Physische Bestandteile
FPT1 DBF1 CDX1 DBC DCT DCX CDXn DBFn DBF2 FPTn FPT2 CDX2

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

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

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

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

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

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

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

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

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

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

18 DbGetProp( ) / DbSetProp( )
Datenbanken Tabellen Felder in Tabellen Ansichten Felder in Ansichten Verbindungen

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

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

21 Buffering dient zur Zwischenspeicherung von Änderungen

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

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

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

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

26 Funktionen im Einsatz 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!

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

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

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

30 Transaktionen Transaktionen dienen dem vollständigen Abspeichern einer Gruppe von Datensätzen

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

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

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

34 Referentielle Integrität
RI dient zur Wahrung der inhaltlichen Konsistenz Beziehungen zwischen Tabellen

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

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

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

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

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

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

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

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


Herunterladen ppt "Datenbankcontainer in Microsoft Visual FoxPro"

Ähnliche Präsentationen


Google-Anzeigen