Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Arbeiten mit Tabellen in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 WebCast TABELLEN.

Ähnliche Präsentationen


Präsentation zum Thema: "Arbeiten mit Tabellen in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 WebCast TABELLEN."—  Präsentation transkript:

1 Arbeiten mit Tabellen in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 WebCast TABELLEN

2 Teil 1: Arbeiten mit Tabellen Mittwoch, , 16:00 – 17:00 Uhr Mittwoch, , 16:00 – 17:00 Uhr Eine der Grundlagen der objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die integrierte leistungsfähige Datenbankengine für lokale Desktop-Anwendungen. Behandelt werden Tabellenstrukturen, Feldtypen, Indizes, Sortiersequenzen und natürlich die Rushmore-Optimierung von Visual FoxPro sowie weitere Optimierungsmöglichkeiten für bestehende Anwendungen unter besonderer Berücksichtigung des neuen lOptimize-Flags für Grids sowie neuer Feldtypen und weiterer Verbesserungen in der neuen Version der Datenbankengine. Eine der Grundlagen der objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die integrierte leistungsfähige Datenbankengine für lokale Desktop-Anwendungen. Behandelt werden Tabellenstrukturen, Feldtypen, Indizes, Sortiersequenzen und natürlich die Rushmore-Optimierung von Visual FoxPro sowie weitere Optimierungsmöglichkeiten für bestehende Anwendungen unter besonderer Berücksichtigung des neuen lOptimize-Flags für Grids sowie neuer Feldtypen und weiterer Verbesserungen in der neuen Version der Datenbankengine.

3 Rainer Becker dFPUG dFPUG Online-Angebote Online-Angebote Loseblattsammlung Loseblattsammlung VFP-Entwicklerkonferenz VFP-Entwicklerkonferenz VFP-Lokalisierung VFP-Lokalisierung Framework Visual Extend Framework Visual Extend MVP, MCP, ISV MVP, MCP, ISV Wizards & Builders GmbH Wizards & Builders GmbH

4 Wie bekomme ich VFP ? Update von 6.0, 7.0, 8.0 sowie VS 97 Update von 6.0, 7.0, 8.0 sowie VS 97 Nicht von VFP 5.0 oder früher Nicht von VFP 5.0 oder früher trotz ggf. anderslautender Online-Angabe trotz ggf. anderslautender Online-Angabe Internationale und US/Canada-Version Internationale und US/Canada-Version Preisunterschied durch Dollarverfall Preisunterschied durch Dollarverfall Technisch identisch Technisch identisch Kein Support / Marketingbudget für US-Version in BRD Kein Support / Marketingbudget für US-Version in BRD dFPUG bietet exklusiv Deutsche Version dFPUG bietet exklusiv Deutsche Version Benutzeroberfläche, Berichtsdesigner, Werkzeuge Benutzeroberfläche, Berichtsdesigner, Werkzeuge

5 Tabellen Endung.DBF (DataBase File) Endung.DBF (DataBase File) max. 255 Felder max. 255 Felder max. 1 Mio. Datensätze max. 1 Mio. Datensätze max. 2 GB Dateigrösse max. 2 GB Dateigrösse ggf.: Index, Endung.CDX (Compound Index) ggf.: Index, Endung.CDX (Compound Index) ggf.: Einzelindex, Endung.IDX (nicht empfohlen) ggf.: Einzelindex, Endung.IDX (nicht empfohlen) ggf.: Memodatei, Endung FPT ggf.: Memodatei, Endung FPT auch als freie Tabellen bezeichnet auch als freie Tabellen bezeichnet

6 Demo 1: Tabellen Strukturänderungen (Places) Strukturänderungen (Places) Datenbankcontainer einfach (Northwind) Datenbankcontainer einfach (Northwind) Datenbankcontainer komplex (Hausverwaltung) Datenbankcontainer komplex (Hausverwaltung) Rushmore-Optimierung im Grid (Test) Rushmore-Optimierung im Grid (Test)

7 Datenbankcontainer Verwaltet Zusatzinformationen Verwaltet Zusatzinformationen zu Tabellen (dadurch nicht mehr freie Tabellen) zu Tabellen (dadurch nicht mehr freie Tabellen) Felder Felder persistente Relationen persistente Relationen gespeicherte Prozeduren gespeicherte Prozeduren referentielle Integrität / Trigger, Ereignisse referentielle Integrität / Trigger, Ereignisse Verbindungen, lokale und remote Views Verbindungen, lokale und remote Views 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

8 Hinweise zum DBC Projektmanager kann DBC offenhalten! Projektmanager kann DBC offenhalten! Separates Datadictionary notwendig für Reindizierung oder Neuerzeugung Separates Datadictionary notwendig für Reindizierung oder Neuerzeugung wahlweise Eigenbau (Alter Table), XCASE, SDT, VFX wahlweise Eigenbau (Alter Table), XCASE, SDT, VFX 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 problematisch bei langen Feldnamen FREE TABLE problematisch bei langen Feldnamen Auch copy to database kopiert Metadaten leider nicht Auch copy to database kopiert Metadaten leider nicht

9 Datenbankengineänderungen ALTER TABLE Memofelder vor/zurück ALTER TABLE Memofelder vor/zurück Umschalten mit Umschalten mit SET ENGINEBEHAVIOR oder SYS(3099) SET ENGINEBEHAVIOR oder SYS(3099) Erinnerung: Leerzeichen Erinnerung: Leerzeichen Leerzeichen in Tabellennamen zulässig Leerzeichen in Tabellennamen zulässig Immer bzw. () statt & verwenden Immer bzw. () statt & verwenden Problematisch bei USE IN tab 1 test Problematisch bei USE IN tab 1 test Fortsetzung Datenbankcontainer im WebCast Teil 2! Fortsetzung Datenbankcontainer im WebCast Teil 2!

10 Lange Feldtypenbezeichnungen DatentypLanger NameKurzer Name CharacterChar, CharacterC DateDateD DateTimeDatetimeT NumericNum, NumericN FloatingFloatF IntegerInt, IntegerI Double DoubleB CurrencyCurrencyY LogicalLogicalL MemoMemoM GeneralGeneralG PicturePictureP VarcharVarcharV VarbinaryVarbinaryQ BlobBlobW DatentypLanger NameKurzer Name CharacterChar, CharacterC DateDateD DateTimeDatetimeT NumericNum, NumericN FloatingFloatF IntegerInt, IntegerI Double DoubleB CurrencyCurrencyY LogicalLogicalL MemoMemoM GeneralGeneralG PicturePictureP VarcharVarcharV VarbinaryVarbinaryQ BlobBlobW

11 Blob Alternative zu General-Feldern Alternative zu General-Feldern Ohne OLE-Server, kein Overhead Ohne OLE-Server, kein Overhead Read-Only HexCode in Memofeldanzeige Read-Only HexCode in Memofeldanzeige Kompatibel zu SQL-Server Kompatibel zu SQL-Server Beispiel Bilderspeicherung Beispiel Bilderspeicherung pictureval pictureval oimg.pictureval = filetostr / blob oimg.pictureval = filetostr / blob loadpicture loadpicture

12 VarChar / VarBinary Format = F verhindert Auffüllen des Value mit Leerstellen bei VarChar oder CHR(0) bei VarBinary Format = F verhindert Auffüllen des Value mit Leerstellen bei VarChar oder CHR(0) bei VarBinary.Inputmask =HHHH…HH lässt nur Hexadezimaleingaben zu (0…F), sonst Präfix "0h".Inputmask =HHHH…HH lässt nur Hexadezimaleingaben zu (0…F), sonst Präfix "0h" SET VarCharMapping ON | OFF SET VarCharMapping ON | OFF Keine Einstellung in Extras->Optionen, Default ON Keine Einstellung in Extras->Optionen, Default ON Tabellen/Cursor-Spalten werden als VarChar angelegt, wenn die erzeugende Funktion variable Längen liefert (vorname+nachname, func() ) Tabellen/Cursor-Spalten werden als VarChar angelegt, wenn die erzeugende Funktion variable Längen liefert (vorname+nachname, func() )

13 Demo 2: Neue Feldtypen Unveränderte Dateilänge (Varchar) Unveränderte Dateilänge (Varchar) Darstellung Datentypen (Datatypes) Darstellung Datentypen (Datatypes) Bildzuordnung (Blob) Bildzuordnung (Blob) Leerzeichen in Dateinamen (Makros) Leerzeichen in Dateinamen (Makros)

14 Indexarten REGULAR - Normaler Schlüssel REGULAR - Normaler Schlüssel CANDIDATE - Eindeutiger Schlüssel CANDIDATE - Eindeutiger Schlüssel PRIMARY - Primärschlüssel PRIMARY - Primärschlüssel nur in DBC, nicht in freien Tabellen nur in DBC, nicht in freien Tabellen UNIQUE - Einmaliger Schlüssel UNIQUE - Einmaliger Schlüssel NICHT VERWENDEN! Sinnvoll gelegentlich in Views NICHT VERWENDEN! Sinnvoll gelegentlich in Views wird nicht mehr angeboten, aber weiterhin vorhanden wird nicht mehr angeboten, aber weiterhin vorhanden Neu: BINARY –Binärschlüssel Neu: BINARY –Binärschlüssel

15 Binary Index Wesentlich kleiner (1:30) Wesentlich kleiner (1:30) dadurch schnelleres INSERT/UPDATE dadurch schnelleres INSERT/UPDATE Bitmap kann direkt geladen werden Bitmap kann direkt geladen werden Rushmore-Optimierung SYS(3054,1) Rushmore-Optimierung SYS(3054,1) FULL: Linke Seite ist der logische Ausdruck FULL: Linke Seite ist der logische Ausdruck SCAN FOR, SET FILTER, etc… SCAN FOR, SET FILTER, etc… NEU: auch für NOT und FOR (NOT) DELETED() NEU: auch für NOT und FOR (NOT) DELETED() Zulässig: Nur logische Ausdrücke Zulässig: Nur logische Ausdrücke Unzulässig: SET ORDER, SET FILTER,.NULL. Unzulässig: SET ORDER, SET FILTER,.NULL.

16 Primärschlüssel Real-World-Schlüssel Real-World-Schlüssel meist zusammengesetzt meist zusammengesetzt Änderungen immer möglich! Änderungen immer möglich! Eindeutigkeit letztendlich nicht garantiert Eindeutigkeit letztendlich nicht garantiert RI: Cascading Update notwendig! RI: Cascading Update notwendig! Surrogate / Abstract -Schlüssel Surrogate / Abstract -Schlüssel fortlaufend fortlaufend selbst erzeugt (ggf. mit zentraler Tabelle) selbst erzeugt (ggf. mit zentraler Tabelle) Datenmodell komplett erstellbar ohne Attribute Datenmodell komplett erstellbar ohne Attribute RI: kein Cascading Update notwendig RI: kein Cascading Update notwendig

17 Relationen basieren auf Indizes SET RELATION SET RELATION SET SKIP SET SKIP Relation( ) Relation( ) Target( ) Target( )Hinweise: Umgebungsfenster Umgebungsfenster SET RELATION TO RECNO( ) SET RELATION TO RECNO( ) Alternative: Alternative:SQL-Joins SET KEY RANGE Hinweis: Hinweis: INDEXSEEK( )

18 Collate-Sequenzen SET COLLATE TO SET COLLATE TO Default GENERAL (2 Byte, A=a!) Default GENERAL (2 Byte, A=a!) Original MACHINE (schnell!) Original MACHINE (schnell!) Alternativ: GERMAN, UNIQWT Alternativ: GERMAN, UNIQWT Sonstige: DUTCH, ICELAND, NORDAN, SPANISH, SWEFIN Sonstige: DUTCH, ICELAND, NORDAN, SPANISH, SWEFIN Ggf. doppelte Index-Definition mit verschiedenen Collate-Sequenzen! Ggf. doppelte Index-Definition mit verschiedenen Collate-Sequenzen!

19 Die große Vergleichsfalle Optimierung und Vergleiche basieren auf aktuell eingestellter Sortiersequenz! Optimierung und Vergleiche basieren auf aktuell eingestellter Sortiersequenz! SET COLLATE gilt für aktuelle Datasession SET COLLATE gilt für aktuelle Datasession SCAN WHILE / REST bei anderer Sortiersequenz verlässt Schleife … SCAN WHILE / REST bei anderer Sortiersequenz verlässt Schleife … Sequenz MACHINE Sequenz MACHINE A = a.F. A = a.F. Sequenz GENERAL Sequenz GENERAL A = a.T. A = a.T.

20 Demo 3: Vergleiche Stringvergleiche und Sortiersequenzen Stringvergleiche und Sortiersequenzen

21 Rushmore-Optimierung Indexdefinition vorhanden Indexdefinition vorhanden möglichst keine FOR/NOT-Klausel im Index möglichst keine FOR/NOT-Klausel im Index Identische Indexdefinition Identische Indexdefinition zusammengesetzte Felder, Alltrim() zusammengesetzte Felder, Alltrim() Index auf Deleted() (bei SET DELE ON) problematisch! Index auf Deleted() (bei SET DELE ON) problematisch! Passende Collatesequenz (IDXCOLLATE) Passende Collatesequenz (IDXCOLLATE) möglichst keine Sortierung (SET ORDER TO) möglichst keine Sortierung (SET ORDER TO) Keine Abfrage auf Empty( ) / IsBlank( ) Keine Abfrage auf Empty( ) / IsBlank( ) Kein exakter Vergleich (SET EXACT/ANSI OFF/==) Kein exakter Vergleich (SET EXACT/ANSI OFF/==) Kontrolle mitSYS(3054,1/11, neu) und SYS(3092) Kontrolle mit SYS(3054,1/11, neu) und SYS(3092)

22 Optimierbare Befehle AVERAGE AVERAGE DELETE / BLANK DELETE / BLANK BROWSE => GRID (!) BROWSE => GRID (!) CALCULATE CALCULATE CHANGE / EDIT CHANGE / EDIT COPY TO (ARRAY) COPY TO (ARRAY) COUNT COUNT LIST / DISPLAY LIST / DISPLAY EXPORT EXPORT INDEX INDEX LOCATE LOCATE RECALL RECALL REPLACE (ARRAY) REPLACE (ARRAY) LABEL / REPORT LABEL / REPORT SCAN SCAN SORT SORT SUM SUM TOTAL TOTAL

23 Optimierungsmöglichkeiten Verzeichniskomprimierung (+10% Performance!) Verzeichniskomprimierung (+10% Performance!) Virusfilter für Endungen abschalten Virusfilter für Endungen abschalten Verzicht auf Verschlüsselung (siehe oben) Verzicht auf Verschlüsselung (siehe oben) Verzicht auf Indizes mit wenig Unterscheidung Verzicht auf Indizes mit wenig Unterscheidung Abschaltung Opportunistic Locking Abschaltung Opportunistic Locking Hardware Hardware Mehrere / schnellere Netzwerkkarten Mehrere / schnellere Netzwerkkarten User auf Stränge verteilen (z.B. 10 User/Strang) User auf Stränge verteilen (z.B. 10 User/Strang) Gute HD-Controller mit viel Cache Gute HD-Controller mit viel Cache Verteilung von DBF und CDX auf versch. Festplatten Verteilung von DBF und CDX auf versch. Festplatten

24 MAKETRANSACTABLE Maketransactable( ) für freie Tabellen, Cursor von freien Tabellen oder Created Cursor Maketransactable( ) für freie Tabellen, Cursor von freien Tabellen oder Created Cursor Istransactable( ) für Prüfung Istransactable( ) für Prüfung Darf noch nicht anderweitig geöffnet sein Darf noch nicht anderweitig geöffnet sein Kein Table Buffering erlaubt Kein Table Buffering erlaubt Bei Row Buffering wird Tableupdate durchgeführt Bei Row Buffering wird Tableupdate durchgeführt Kann danach anderweitig geöffnet werden Kann danach anderweitig geöffnet werden Transactable endet mit Schliessen letzter Instanz Transactable endet mit Schliessen letzter Instanz

25 Zusammenfassung Verbesserungen Unterstützung für lange Feldtypbezeichnungen Unterstützung für lange Feldtypbezeichnungen Leerzeichen in Tabellen und View-Namen Leerzeichen in Tabellen und View-Namen Neue Datentypen Varchar / Varbinary / Blob Neue Datentypen Varchar / Varbinary / Blob Binär-Index (logischer Ausdruck = 1 Bit) Binär-Index (logischer Ausdruck = 1 Bit) Diverse Performanceverbesserungen Diverse Performanceverbesserungen Speicherbarkeit der Optimierungsprüfung Speicherbarkeit der Optimierungsprüfung Hinweis: Transaktionen auch für freie Tabellen Hinweis: Transaktionen auch für freie Tabellen Neues Tool: Memo Corruption Scanner Neues Tool: Memo Corruption Scanner

26 Weiterführendes Material Visual FoxPro 9.0 Visual FoxPro 9.0 Updatebuch Updatebuch Roadshow-CD Roadshow-CD Lokalisierungs-CD Lokalisierungs-CD Visual FoxPro 8.0 Visual FoxPro 8.0 Updatebuch Updatebuch Deutsche Hilfedatei Deutsche Hilfedatei Online-Angebote der dFPUG Online-Angebote der dFPUG Forum, Portal, eNewsletter, Homepage, Framework Forum, Portal, eNewsletter, Homepage, Framework

27 Teil 2: Arbeiten mit DBC Mittwoch, , 16:00 – 17:00 Uhr Mittwoch, , 16:00 – 17:00 Uhr Eine der Grundlagen der objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die integrierte leistungsfähige Datenbankengine für lokale Desktop-Anwendungen. Durch Datenbankcontainer werden freie Tabellen in einen grösseren Sinnzusammenhang gestellt. Behandelt werden erweiterte Tabelleneigenschaften, Relationen, Trigger, referentielle Integrität, Definition von Ansichten, Transaktionen sowie einige diesbezügliche neue Funktionen in der neuen Version. Eine der Grundlagen der objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die integrierte leistungsfähige Datenbankengine für lokale Desktop-Anwendungen. Durch Datenbankcontainer werden freie Tabellen in einen grösseren Sinnzusammenhang gestellt. Behandelt werden erweiterte Tabelleneigenschaften, Relationen, Trigger, referentielle Integrität, Definition von Ansichten, Transaktionen sowie einige diesbezügliche neue Funktionen in der neuen Version.

28 Vielen Dank! Fragen an oder besser Besuchen Sie unsere Webseiten:


Herunterladen ppt "Arbeiten mit Tabellen in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 WebCast TABELLEN."

Ähnliche Präsentationen


Google-Anzeigen