1 / 42

Datenbankcontainer

Datenbankcontainer. Datenbankcontainer in Microsoft Visual FoxPro. Diese Schulung dient zur Einführung der Schulungsteilnehmer in die Arbeit mit Datenbankcontainer (im Vergleich zu Einzeltabellen) in Visual FoxPro. Themenübersicht. Datenbankcontainer (Sinn/Struktur)

ulema
Download Presentation

Datenbankcontainer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Datenbankcontainer Datenbankcontainer inMicrosoft 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) • Feldeigenschaften • Anlegen einer Verbindung (Connection) • Anlegen einer Remote Ansicht (View)

  9. 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 () Tabellen im DBC

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

  11. 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 Validierungen

  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. Felder (Ausdrücke) Verknüpfung Filter Sortierung Gruppierung Aktualisierung Verschiedenes Schlüssel setzen Felder setzen SQL-Update setzen Where-Klausel Schlüssel änderbar! Feldeigenschaften! Views im DBC

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

  16. 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() Grundbefehle DBC (1)

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

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

  19. 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) Strukturänderungen

  20. Hinweise zum DBC • Separates Datadictionary notwendigfü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 Buffering dient zur Zwischenspeicherung von Änderungen

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

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

  24. 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! Tableupdate / Tablerevert

  25. 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() Buffermode

  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. Allgemeine Probleme: GETNEXTMODIFIED / GETFIELDSTATE() => erst Feld verlassen! SetFldState( ) bei Views mit Requery() Table changedim 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! Vorsicht Falle!

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

  31. BEGIN TRANS *-- 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! Transaktionen

  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. Programmatisch: CREATE TRIGGER DELETE TRIGGER _TRIGGERLEVEL Arten von Triggern: DELETE UPDATE INSERT Bedeutung der Referentiellen Integrität einer Datenbank Arbeiten mit dem Referential Integrity Builder Referentielle Integrität (RI)

  36. 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 DELETE-Trigger

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

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

  39. 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 Probleme mit Triggern

  40. 1539 Trigger failed 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. .NULL. Weitere Elemente für ODBC-Fehlermeldungen Fehlermeldungen

  41. Vielen Dank! 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 Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175

More Related