anhang a die dateobaoksysteme paradox nod dbase978-3-642-97170-9/1.pdf · 144 die datenbanksysteme...
Post on 13-Sep-2019
2 Views
Preview:
TRANSCRIPT
144 Die Datenbanksysteme Paradox und dBASE
1 Ubersicht
Die folgenden Kurzbeschreibungen enthalten nur einen Teil der mOglichen Befehle von dBASE und Paradox. So fehlen zum Beispiel alle Befehle der eingebauten Programmiersprache von Paradox (PAL). Mehr Informationen finden sich in den Handbiichern und in der im Anhang E erwiihnten Literatur.
Angaben in eckigen Klammem sind wahlfrei. Fl ... FlO und Namen in Winkelklammem bezeichnen Tasten. Paradox-Befehle aus verschiedenen Meniistufen sind durch .. verbunden. Kursiv gedruckte Bezeichner sind Platzhalter, die yom Benutzer ausgefiillt werden miissen, zum Beispiel Argumente von Befehlen.
1.1 Operation en in einer Datei
Operation Paradox (ohne PAL) Satzstruktur definieren CREATE Datei Offnen VIEW Datenbanksystem verlassen EXIT Schliissel definieren TooLS .. QuerySpeedup
oder * nach dem Feldtyp Satze hinzufligen F9 bzw. MODIFY .. Edit
und <End>/<Down> Satze einfligen F9/<lns> oder
MODIFY .. Edit/<lns> Satze anzeigen VIEW, REPORT Satze suchen ASK Satzeandem MODIFY .. Edit, VIEW/F9,
IMAGE .. Pickfonn1F9 Satze zusammenfassen SK..calc sum Satze loschen VIEW /<DeI>/FIO .. undo Dateien IOschen TooLS .. Delete Datei umbenennen TooLS .. Rename
1.2 Operation en zwischen Dateien
Operation Dateibereich wahlen Satzstruktur lindem Felder einer Datei an einebestehende Datei anfligen
Paradox F3 oderF4 MODIFY .. Restructure TooLS .. More .. Add
dBASE CREATE USE QUIT INDEX
APPEND
INSERT
DISPLAY, LIST, REPORT LOCATE, FIND, SKIP EDIT, BROWSE, REPLACE, CHANGE TOTAL DELETE/PACK DELETE FILES RENAME
dBASE SELECT MODIFY STRUCTURE APPEND FROM
Satze einer Datei mit den Satzen einer anderen Datei zu neuen Satzen zusammenftigen
ASK (Query by Example) JOIN
Satze einer Datei durch die - ASK/ChangeTo UPDATE Satze einer anderen Datei (Query by Example) ersetzen
2 Paradox
2 Paradox 145
HiIfsmoglichkeiten: Fl hilft im allgemeinen kontext-sensitiv. Erneutes Drucken von Fl fiihrt in den Hilfsindex.
a) Dateioperationen in Paradox
2.1 Satzstruktur definieren: CREATE
• CREATE wahlen
• Tabellenname eingeben
• Feld beschreiben
a) Feldname eingeben b) Feldtyp eingeben (A (alphanumerisch), N (numerisch), S (engl. short number),
$ (Geldeinheiten) oder D (Datum»
• F2 beendet CREATE und speichert die Satzstruktur
2.2 Datei offnen: VIEW
• Tabellenname eingeben
2.3 Datei schliessen
Ausdriickliches Schliessen der Dateien ist bei interaktiver Benutzung nicht erforderlich.
2.4 Paradox verlassen: EXIT
• Die Option EXIT ftihrt yom Hauptmenti ins Betriebssystem zuruck.
146 Die Datenbanksysteme Paradox und dBASE
2.5 ZugrifTsschliissel definieren
Ein Primirindex: defmiert den ldentifikationsschliissel einer Tabelle, beschleunigt die Suche nach Schliisselwerten und verhindert, dass fUr das indizierte Feld (den ldentifikationsschliissel) Duplikate vorkommen. Ein Sekundirindex: beschleunigt die Suche nach Feldwerten und kann auf einem beliebigen Feld defmiert werden.
a) Primirindex: definieren
• N ach dem Feldtyp der ersten Tabellenspalte * tippen
b) Sekundirindices defmieren
Voraussetzung: Abfrage (engl. query) auf dem Arbeitsbereich (engl. workspace)
• TOOLS wahlen
• QUERY SPEEDUP wahlen
2.6 Sitze am Ende der Datei anfiigen: MODIFY, VIEW
• MODIFY und dann "DataEntry" fUr eine Eingabetabelle oder "MultiEntry" ffir mehrere Eingabetabellen gleichzeitig
• Alternative ffir wenige Anfiigungen: Editiertaste F9 oder MODIFIY .. Edit
2.7 Sitze anzeigen: VIEW
• VIEW wiihlen
• Tabellenname eingeben oder <Enter> driicken und Tabellenname wahlen
• <PgDn>, <PgUp>, <Down>, <Up>, <Left>, <Right> bliittern und rollen vertikal und horizontal
2.8 Tabelleninformation anzeigen: TOOLS
• ,TooLS .. Info . .Inventory zeigt die vorhandenen Tabellen, Paradox-Programme und iibrigen OOS-Dateien an
• TooLS .. Info .. Structure zeigt die Satzstruktur einer Tabelle an
• TooLS .. Info .. Family zeigt die Bildschirm- und Ausgabeformulare (engl. reports) einer Tabelle an
2 Paradox 147
2.9 Satze suchen: ASK
• Tabellenname wahlen oder eingeben
• Felder wahlen, die ausgegeben werden sollen, und jeweils F6 bzw. Alt-F6 driicken
• Auswahlbedingungen in die Felder schreiben (FI zeigt Hilfsinformation zu den Bedingungsoperatoren)
• F2 driicken
2.10 Satze editieren (einfiigen, loschen, and ern)
• MODIFY..EDIT oder VIEW willllen
• FI nennt die Editiertasten
2.11 Datei loschen: TOOLS .. Delete
• Tabelle, Bildschirmformular, Ausgabeformular oder Paradox-Prograrnm (Skript) wahlen
2.12 Datei umbenennen: TOOLS .. Rename
• Tabelle, Bildschirmformular, Ausgabeformular oder Paradox-Prograrnm (Skript) wahlen
b) Datenbankoperationen in Paradox
2.13 Tabelle im Arbeitsbereich wahlen
• F3 wechselt zur nachsten Tabelle, F4 geht zur letzten Tabelle zuruck
2.14 Satzstruktur andern: MODIFY .. Restructure
2.1S Felder einer Datei an eine andere anfiigen: TOOLS .. More .. Add
Voraussetzung: kompatible Satzstrukturen
148 Die Datenbanksysteme Paradox und dBASE
2.16 Sitze einer Datei mit Sitzen einer anderen verbinden: ASK
• ASK Tabellel
• FlO • Mit F6 oder Alt-F6 die gewiinschten Felder der Ergebnistabelle wahlen
• 1m Verbundfeld F5 driicken und einen Verbindungswert eingeben
• ASK Tabelle2 • Mit F6 oder Alt-F6 die gewiinschten Felder der Ergebnistabelle wahlen
• 1m Verbundfeld F5 driicken und den gleichen Beispielwert eingeben
• Verbund mit F2 ausflihren
3dBASE
Hilfsmoglichkeiten: .ASSIST ruft eine Menuschnittstelle flir die Verwaltung einer einzelnen Datei auf. FI zeigt Hilfsinformation.
a) Dateioperationen in dBASE
3.1 Satzstruktur definieren: CREATE
Voraussetzung: dBASE-Prompt (Punkt am Zeilenbeginn)
• CREA lE Dateiname eingeben
• <Enter> driicken
• Feld beschreiben
a) Feldname eingeben
b) Feldtyp wiihlen. Voreinstellung istZeichen. Die ubrigen Typen sindNumerisch, Datum undLogisch. Eine logische Variable kann nur die Werte T, t, Y, Y (ffir true) und F, f, N, n (ffir false) annehmen
c) Feldliinge eingeben
d) Wenn notig, Anzahl Dezimalstellen eingeben
• <Enter> driicken (Zweimal <Enter> beendet CREA lE)
3dBASE 149
3.2 Datei otTnen: USE
Voraussetzung: dBASE-Prompt
• USE Dateiname eingeben. Falls Indexdateien gebraucht werden: USE Dateiname INDEX Indexdateien. Beispiel: USE Adressen INDEX plzindex, nameindex
• <Enter> driicken
3.3 Datei schliessen: USE
• Der Gebrauch von USE Dateiname schliesst die laufende Datei. USE ohne Argument schliesst die laufende Datei, ohne eine neue zu offnen. Mit dem Schliessen einer Datei werden gelinderte Siitze vom Dateipuffer des Hauptspeichers auf den Extemspeicher geschrieben.
3.4 dBASE verlassen: QUIT
• QUIT schliesst alle Dateien und kehrt zum Betriebssystem zurUck
3.5 ZugritTsschliissel definieren: INDEX
Voraussetzung: Die zu indizierende Datei muss mit USE gooffnet worden sein.
• INDEX ON Feldname TO Indexdateiname eingeben. Beispiel: INDEX ON Matnr TO StudIndex
• <Enter> driicken
3.6 Satze am Ende der Datei anfiigen: APPEND
• APPEND eingeben und <Enter> driicken
• Neuen Satz eingeben und <Enter> driicken
• Zweimal <Enter> beendet APPEND
3.7 Satze anzeigen: DISPLAY
• DISPLAY STRUCfURE zeigt die Satzstruktur der laufenden Datei
• DISPLAY zeigt den laufenden Satz
• DISPLAY RECORD n zeigt den nten Satz
• DISPLAY ALL zeigt die Datei in Gruppen von hOchstens 15 Siitzen
150 Die Datenbanksysteme Paradox und dBASE
• DISPLAY FOR Bedingung [FIELDS Feldl, Feld2, ... J zeigt Feldl, Feld2, ... der Sitze, welche die Bedingung erflillen. Beispiel: DISPLAY FOR Nr > 10 FIELDS Nr,Name
3.8 Dateiverzeichnis anzeigen: DISPLAY FILES
• DISPLAY FILES [ON LaujwerkJ [LIKE Muster] zeigt die Datenbank-Dateien auf dem angegebenen Laufwerk. LIKE erlaubt die Anzeige alIer Dateien, die einem bestimmten Muster gleichen. Beispiel: DISPLAY FILES ON A LIKE * .PRG zeigt alIe Programmdateien auf dem Laufwerk A.
3.9 Sitze suchen: GO TOP, GO BOTTOM, SKIP, LOCATE, FIND
• GO TOP geht an den Anfang der Datei
• GO BOTIOM geht an das Ende der Datei
• SKIP geht zum niichsten Satz
• LOCATE FOR Bedingung sucht sequentiell den Satz, welcher die Bedingung erfiillt
• FIND Suchstring sucht den ersten Satz einer indizierten Datei, welcher in einem indizierten Feld den Suchstring enthaIt. Weitere Sitze mit dem gleichen Schliisselwert lassen sich mit CONTINUE finden. Voraussetzung: Die betreffende Indexdatei muss offen sein (USE Dateiname INDEX Indexdateiname)
3.10 Sitze andem: EDIT
• EDIT eingeben und <Enter> driicken
• Satznummer eingeben
• Cursor auf das zu andernde Feld bewegen
• Ctrl-V driicken (LOschen des Feldinhaltes)
• Richtige Daten eingeben
• Ctrl-W driicken (Besmtigung)
3.11 Sitze einfiigen: INSERT
• Satz suchen, nach dem die neuen Daten eingefligt werden sollen
• INSERT eingeben und <Enter> driicken
• Daten eingeben
3 dBASE 151
3.12 Satze zusammenfassen: TOTAL
• TOTAL ON Schlilssel TO Ergebnis entfemt Duplikate aus der USE-Datei
Voraussetzungen: Die USE-Datei muss nach dem Feld Schlilssel sortiert oder indiziert sein. Die Felder mussen aIphanumerisch sein.
3.13 Satze IOschen: DELETE, PACK
• DELETE markiert den laufenden Satz aIs geloscht. Markierte Siitze werden zwar noch nieht physisch geloscht, werden aber nicht mehr kopiert (COPY) und sortiert (SORT)
• RECALL entfemt fUr den laufenden Satz die LOschmarkierung
• DELETE FOR Bedingung markiert aile Siitze, welche die Bedingung erfullen, aIs geloscht
• RECALL FOR Bedingung entfemt flir aile Siitze, welche die Bedingung erfullen, die LOschmarkierung
• PACK IOscht aile markierten Siitze auch physisch
3.14 Datei loschen: DELETE FILE
• DELETE FILE Dateiname loscht eine Datei. Eine geoffnete Datei kann nieht geloscht werden
3.15 Datei umbenennen: RENAME
• RENAME alterName TO neuerName iindert den N amen einer Datei. Wird kein Dateityp angegeben, setzt dBASE die Erweiterung .DBF. Beispiel: RENAME test.prg TO adress.prg
b) Datenbankoperationen in dBASE
3.16 Dateibereich wahlen: SELECT
• SELECT Dateibereich schaltet zwischen den verschiedenen Arbeitsbereiehen hin und her. Dateibereich ist eine ganze Zahl, der Name der Datei im entsprechenden Arbeitsbereieh oderein eigens definierter Name (siehe ALIAS in den Handbuchem). Beispiel: SELECT 2 springt in den zweiten Dateibereieh
152 Die Datenbanksysteme Paradox und dBASE
3.17 Satzstruktur andern: MODIFY STRUCTURE
Voraussetzung: Die Datei muss mit USE geoffnet worden sein
• MODIFY STRUcruRE loscht alle Satze der laufenden Datei und gibt die Satzstruktur aus. Die Struktur kann mit den Editierhefehlen verandert werden
3.18 Felder einer Datei an eine bestehende Datei anfiigen: APPEND
• APPEND FROM Eingabedatei FOR Bedingung ftigt zur laufenden Datei alle Satze der Eingabedatei, welche die Bedingung erfiillen. Die laufende Datei iihernimmt von der Eingabedatei nur gemeinsame Felder
3.19 Satze einer Datei mit den Satzen einer anderen verbinden: JOIN
Voraussetzung: Die Dateien sind in verschiedenen Dateibereichen.
• JOIN WITH Dateibereich TO Ergebnisdatei FOR Bedingung [FIELDS Feldl, Feld2, ... ]
• JOIN vergleicht jeden Satz der Datei im laufenden Arbeitsbereich mit allen Satzen der Datei im Dateibereich. Wenn die FOR-Bedingung erfiillt ist, werden Feldl, Feld2, ... der heiden verglichenen Satze zusammengehangt und als ein Satz an die Ergebnisdatei geftigt.
3.20 Felder einer Datei mit den Feldern einer anderen fortschreiben: UPDATE
• UPDATE ON SchlUsselfeld FROM Bewegungsdatei REPLACE Feldl WITH Ausdruckl [, Feld2 WITH Ausdruck2 ... ] [RANDOM] ftihrt mit Satzen aus der Bewegungsdatei eine Stammdatei nacho Ein Stammsatz wird nachgeftihrt, wenn sein Schliissel mit dem Schliissel der Bewegungsdatei iibereinstimmt. Der Ausdruck nach dem reservierten Wort WITH ersetzt jeweils den Werte des Feldes nach REPLACE
Voraussetzungen: Die Stammdatei befindet sich im aktiven Dateibereich und muss nach dem Schliissel sortiert oder indiziert sein. Die FROM-Datei (Bewegungsdatei) ist nach dem Schliissel sortiert. Bei Verwendung von RANDOM eriibrigt sich die Sortierung der Bewegungsdatei. Die Stammdatei muss allerdings auch mit RANDOM indiziert oder sortiert sein.
154 ASCII-Code
ASCII-Code
Der ASCII-Code (American Standard Code for Information Interchange) wurde entwickelt, um die Dateniibertragung zwischen verschiedenen Geraten zu standardisieren. Er kombiniert 7 Bit und kann deshalb 27 = 128 verschiedene Bedeutungen kodieren. Die folgende Tabelle ordnet die wichtigsten Bedeutungen des ASCTI-Code den dezimalen Aquivalenten der Bitfolgen zu. Die Bitfolge 101 0000 entspricht zum Beispiel der Dezimalzahl80 (24+26=80) und wird yom ASCTI-Code als Buchstabe P interpretiert.
Der Programmierer verwendet den ASCTI-Code unter anderem zur Steuerung von peripheren Geraten, vor allem von Bildschirm und Druckem. Solche Gerate werden oft iiber sogenannte ESCAPE-Sequenzen gesteuert. ESCAPE-Sequenzen sind in der Regel Folgen von ASCTI-Zeichen, die vom Zeichen ESC mit dem dezimalen Aquivalent 27 eingeleitet werden. Die BASIC-Anweisung PRINT CHR$(27)+'[2J' loscht zum Beispiel den Bildschirm eines Terminals yom Typ VT100 (Die BASIC-Funktion CHR$( <Dezimalzahl» wandelt eine Dezimalzahl in die entsprechende Bitfolge des ASCTI-Code um).
Dezimales Bedeutung Bemerkung Aquivalent
o NUL
7 BEL 8 BS 9 HT
10 LF 11 VT 12 FF
13 CR
27 ESC
32 SP 33 34 "
eng1. null, leeres Zeichen (keine Daten)
eng1. bell, akustisches Signal eng1. backspace (setzt Schreibgerat um eine Stelle zuriick) eng1. horiwntal tab (bewegt Schreibgerat um einen horizontalen Tabulatorsprung nach yom) eng1.line feed (setzt Schreibgerat auf die nachste Zeile) vertical tab eng1. form feed (setzt Schreibgerat an den Anfang der nachsten Zeile) eng1. carriage return (setzt Schreibgerat an den Anfang der laufenden Zeile)
eng1. escape (Die nachfolgenden Zeichen werden nicht wie gewohnt interpretiert. V gl. Einleitung)
eng1. space, Leerzeichen
Dezimales Bedeutung Bemerkung Aquivalent
35 # 36 $ 37 % 38 & 39 ' 40 41 42 * 43 + 44 , 45 46 47 /
48-57 58 59 60 < 61 = 62 > 63 ? 64 @
65-90 91 [ 92 \ 93 ]
94 1\
95 96
,
97-122 123 { 124 I
arabische Ziffern (0 .. 9)
"Klammeraffe", engl. at -sign Grossbuchstaben (ohne Um1aute)
Kleinbuchstaben (ohne Umlaute)
Tilde
ASCII-Code 155
125 } 126 -127 DEL engl. delete (loscht vorangehendes Zeichen)
158 Glossar
Abfragesprache (eng!. query language): Endbenutzerorientierte Sprache zur Gewinnung von Informationen aus Datenbanken (¢ prozedurale Abfragesprache, ¢ nichtprozedurale Abfragesprache)
Abhangigkeit, funktionale (eng!. functional dependency): Begriff aus der Normalisierungslehre, analog zum mathematischen Funktionsbegriff. Seien A und B ¢ Attribute einer ¢ Relation R: Wenn zu jedem Zeitpunkt t jeder Wert von A eindeutig einen Wert von B identifiziert B = f(A,t) so sagt man, B sei funktional abhiingig von A und schreibt A~B.
Adressberechnungsfunktion: ¢ Hash-Funktion
Adresse: Identifikation eines Platzes, an dem Daten gespeichert sind. Eine physische Adresse bezeichnet einen Speicherplatz mittels einer gerateabhiingigen Methode. Eine /ogische Adresse identifiziert einen Speicherplatz durch einen Namen, der seinerseits auf eine physische Adresse verweist.
alphanumerisch: Aus Buchstaben, Zahlen und (oder) Sonderzeichen bestehend
Anomalie: Unregelmassigkeit, die das Einfligen oder LOschen von Tabelleneintragen verhindert oder beim Fortschreiben von Eintragen zu Widerspriichen flihrt
Applikationsgenerator: Programm, das auf Grund einer Speziftkation des Benutzers eine Anwendung erstellt, die er progratruniersprachlich verfeinem kann
Arbeitsbereich: Speicherbereich flir Zwischenergebnisse von Datenbankoperationen
Arbeitsdatei (Transferdatei): Datei, die temporare Daten zwischenspeichert
ASCII-Code: American Standard Code for Information Interchange. Code, der ausgewahlte Zeichen auf Bitfolgen abbildet. Ein Teil dieser Zeichen Hisst sich mit Ausgabegeraten wie Bildschirm und Drucker sichtbar machen, der Rest dient der Steuerung von nicht direkt sichtbaren Operationen.
Attribut: Eigenschaft eines Objekts
Attributswert: Eigenschaftsauspragung
Ausgabedatei: Datei, in die eine Programm schreibt
Benutzersicht (eng!. view): Teil der Gesamtdatenbank, der fUr einen bestimmten Benutzer von Bedeutung ist
Berichtsdatei (eng!. report file): Datei, die flir die Ausgabe auf Geraten wie dem Drucker oder Bildschirm aufbereitet worden ist
Berichtsgenerator: Programm, das auf Grund einer Spezifikation des Benutzers eine ¢ Berichtsdatei erstellt
Bewegungsdatei (eng!. transaction file): Datei, welche die Daten zur Fortschreibung einer ¢ Stammdatei enthalt
Glossae 159
Beziehung (engl. relationship): Verbindung zwischen mehreren Objekttypen. 1m Relationenmodell werden Beziehungen zwischen zwei Tabellen tiber ein Attribut hergestellt, das in heiden Tabellen vorkommt.
Beziehungsintegritiit (engl. referential integrity): FUr eine Datenbank gilt die Beziehungsintegritat, wenn zu jedem ¢ Fremdschltisselwert ein pas sender ¢ PrimarschltisseIwert existiert (¢ Entitatsintegritat).
Data Dictionary (Katalog): Tabelle, die Name, Datentyp, Lange, Kurzbeschreibung und andere interessierende Informationen flir jedes Dateielement enthiilt. Das Data Dictionary ist Grundlage flir den ¢ Datenentwurf.
Datei (engl. file): Benannte Folge von ¢ Satzen, auf denen Zugriffsoperationen definiert sind
Dateiname: Name, anhand dessen das Betriebssystem eine Datei eindeutig identifiziert. Die Lange des Dateinamens ist abhangig vom verwendeten Betriebssystem.
Dateipuffer: Teil des Internspeichers, der Daten vor Schreib- oder nach Leseoperationen zwischenspeichert. Urn Dateioperationen zu beschleunigen, werden zum Beispiel mehrere Satze eines externen Speichers in einem Block in den Puffer gelesen, urn dann weiterverarbeitet zu werden.
Dateityp: Erweiterung des Dateinamens, der meist die ZugehOrigkeit zur einer bestimmten Dateiklasse angibt. Die Erweiterung "TXT" in "BERICHT.TXT" kennzeichnet zum Beispiel die Datei als Textdatei.
Datenbank: Sammlung von Daten, zwischen denen Beziehungen bestehen
Datenmodell (logisches -): Abstrakte Beschreibung der Daten einer Organisation, die moglichst wenig Rticksicht auf die Art und Weise der Implementierung nimmt
Dateiverwaltungsystem: Software, die im Gegensatz zu ¢ Datenbankverwaltungssystemen nur die Verwaltung isolierter Dateien erlaubt
Datenabhangigkeit: Abhangigkeit der Benutzerprogramme von Anderungen der Datenbankstruktur (¢ Datenunabhangigkeit)
Datenbankstrukturdiagramm: Grafik, welche die Beziehungen zwischen den Objekttypen einer Datenbank visualisiert
Datenbanksystem: Gruppe von Programmen, die notig sind, urn eine Datenbank einzurich ten und zu benutzen.
Datenbankverwaltungssystem (engl. Data Dase Management System, DBMS) ¢ Datenbanksystem
Datenformat: Form, in der Informationen dargestellt werden. Eine gebrauchliche Klassifikation unterscheidet zwischen numerischen, ¢ alphanumerischen, Bild- und Sprachdaten.
160 Glossar
Datenkompatibilitat: Austauschbarkeit von Daten verschiedener Softwaresysteme
Datenschutz: Schutz von Daten vor unberechtigtem Zugriff
Datenunabhingigkeit: Mfiglichkeit, die logische Gesamtsicht und/oder die physikalische Struktur zu lindern, ohne dass die Datensicht der Anwendungsprogramme gelindert werden muss (¢ Datenabhlingigkeit)
DirektzugritT (engl. direct access): Lesen oder Schreiben von Daten durch Angabe eines Suchkriteriums, das auf eine Speicherplatz-Adresse abgebildet werden kann. 1m Vergleich zum sequentiellen Zugriffist der direkte Zugriff schneller, da die Suche nach einem Datenelement nicht das Lesen aller vorangehenden Datenelemente voraussetzt (¢ sequentiell organisierte Datei).
Divisionsrestverfahren: Eine in der Regel wirksame ¢ Hash-Funktion
Eingabedatei: Datei, die von einem Programm nur gelesen, aber nicht geandert werden kann
Endbenutzerwerkzeuge (Anwendersprachen): Programme, die auch von einem Endbenutzer ohne Programmierkenntnisse einfach bedient werden kfinnen. Beispiele: Textverarbeitungs- und Tabellenkalkulationspakete
Entitatsintegritat (engl. entity integrity, ¢ Beziehungsintegritiit): Die Anforderung der Entitiitsintegritiit ist erftillt, wenn ein Primarschliissel eindeutig ist, insbesondere wenn er keine Nullwerte enthiilt.
eof: engl. end of fIle
Feld (engl. item, field): Element eines Datensatzes
Feldname: Bezeichner fUr ein Feld. Die Lange eines Feldnamens und die Art der erlaubten Zeichen hangen yom verwendeten Datenbanksystem ab
Feldtyp: Wird beim Errichten einer Datenbank ein Feld definiert, muss im allgemeinen nach der Angabe des Feldnamens der Feldtyp angeben werden. Er legt die Art der Information fest, die im Feld gespeichert werden kann (Beispiele: alphanumerische Zeichen, Zahlen, logische Ausdriicke, Datumsangaben).
formatierte Datei: Datei, die aus Satzen und Feldern einer bestimmten Lange besteht. Formatierte Dateien sind im Gegensatz zu Textdateien nach einem yom Benutzer definierten Schema vorstrukturiert.
Fremdformate: Datenformate, die in Programmen fremder Software-Anbieter vorkommen. Die meisten Datenbanksysteme erlauben die Konversion von Tabellen in gebrauchliche Fremdformate und umgekehrt. PARADOX erlaubt zum Beispiel den Import von dBASE-Tabellen und den Export von PARADOX-Tabellen in dBASEFormat.
Glossar 161
Fremdschliissel (engl. foreign key): Attribut, das in einer anderen Tabelle ¢Identifikationsschliissel ist. Ein Fremdschliissel ermoglicht das Herstellen einer Verbindung zu einer anderen Tabelle.
funktionale Abhangigkeit: ¢ Abhangigkeit
Gruppenbruch: Algorithmus, der den Ausgabefluss eines Programms an der richtigen Stelle unterbricht, urn eine Zusammenfassung der laufenden Satzgruppe auszugeben
Hash-Funktion (Adressberechnungsfunktion): Funktion, welche breit gestreute Schliisselwerte auf einen schmalen Bereich von Zellenadressen abbildet. Effiziente Zugriffsmethode fiir grosse Datenbestande
Identifikationsschliissel (¢ Schliissel): Attribut, das einen Satz eindeutig kennzeichnet (¢Fremdschliissel)
indizierte Datei: Datei mit mindestens einem Inhaltsverzeichnis (¢ Index, indizieren)
Index: Datei, die fiir jeden in der Hauptdatei vorkommenden Wert des gewahlten Indexattributs die Adresse des Satzes angibt
indizieren: ¢ Index anlegen
invertierte Datei: Datei mit Inhaltsverzeichnissen (¢ Index) zu einigen oder allen Feldern
Integritiit einer Datenbank: Die Integritat oder Korrektheit eines Datenbestandes kann zum Beispiel durch die folgenden Einfliisse verletzt werden: Eingabe von Werten ausserhalb des Wertebereichs eines Attributs (zum Beispiel 13 fiir eine Monatszahl) oder fehlendes Nachflihren geanderter Werte (zum Beispiel Wechsel des Zivilstands). Ein Teil der Integritiitsverletzungen lasst sich durch einen sorgfaltigen Datenentwurf vermeiden (¢ Anomalie).
Katalog (engl. dictionary): ¢ Data Dictionary
Kollision: Situation, in dereine Hash-Funktion flir zwei Satze mit verschiedenen Identifikationsschliisseln die gleiche Adresse ergibt
MOdulo-Operator: Operator, der den den Rest einer ganzzahligen Division ergibt. Beispiel: 5 mod 2 ergibt als Rest 1.
Netzwerkmodell: Datenmodell, das starker als das ¢ Relationenmodell auf die physische Implementation Riicksicht nimmt. Es ist deshalb flir den Benutzer komplexer und weniger flexibel, kann aber bei der Verwaltung von Massendaten mit stabiler Struktur effizienter sein.
nichtprozeduraleAbfragesprache (deklarative -): Sprache, in der eine Abfrage als eine einzige Anweisung formuliert werden kann. Eine solche Anweisung spezifiziert lediglich das gewiinschte Ergebnis, ohne darauf einzugehen, wie das Ergebnis am effizientesten erreicht werden kann. Beispiele: ¢ SQL, QBE
162 Glossar
Normalisierung: Schrittweises Aufspalten einer Tabelle in ldeinere Tabellen mit dem Ziel der Redundanzminimierung
Nullwerte: Werte, die in Attributen, welche nicht Teil eines Primiirschliissels sind, fehlende Informationen darstellen
Objekte: Beschreibungsgegenstiiode eines ¢ Datenmodells. Objekte sind zorn Beispiel Kunden, Konten oder Zahlen.
Objektmenge: Konkrete Zusammenfassung von Objekten mit gleichen Attributen. Eine Objektmenge entspricht im ¢ Relationenmodell der Menge aller Zeilen einer Tabelle.
Objekttyp: Klasse von Objekten mit gleichen Attributen. Ein Objekttyp entspricht im Relationenmodell einem Relationenschema (Tabellenskelett).
Offnungsbefehl: Befehl, der dem Betriebssystem mitteilt, wie eine Datei organisiert ist und ob es sich urn eine Ein- oder Ausgabedatei handelt
Primarindex: ¢ Index zu einem IdentifIkationsschliissel einer Tabelle
Primirschliissel: ¢ Schliissel, der einen Satz eindeutig identifIziert
Projektion: Relationale Grundoperation, die jene Spalten der Ausgangstabelle in eine Ergebnistabelle aufnimmt, welche die Projektionsbedingung erflillen
prozedurale Abfragesprache: Sprache, die vom Benutzer verlangt, dass er Abfragen durch Anweisungen formuliert, deren Reihenfolge von Bedeutung ist. Beispiele: die eingebauten Programmiersprachen von dBASE und Paradox
Pseudocode: Entwurfssprache, welche die eigentliche Codierung eines Programms vorbereitet
QBE (engl. Query By Example): Benutzerfreundliche ¢ nichtprozedurale Abfragesprache fdr relationalen Datenbanken, in welcher der Benutzer die gewiinschten Ergebnisspalten in Tabellenskeletten markiert und die Kriterien fUr die Auswahl der Zeilen im gleichen Skelett eintriigt
Recovery: Wiederherstellung des korrekten Zustands einer Datenbank nach Fehlem, zurn Beispiel dem Zusammenbruch des Betriebssystems
redunclante Information: Uberfliissige, mehrfach vorhandene Information
Rekursion: DefInition eines Objekts oder eines Verfahrens durch sich selbst. Ein Spezialfall ist eine Funktion, die sich wiihrend ihrer Ausflihrung selbst wieder aufruft. Die Fakultiitsfunktion Uisst sich zorn Beispiel wie folgt rekursiv defInieren: Fakultiit(O) = 1, Fakultiit(n) = n * Fakultiit(n-l) fUr ganzzahlige positive n.
Relation: zweidimensionale Tabelle mit hOchstens einem Eintrag pro Zelle (Tabelle ohne ¢ Wiederholungsgruppen)
Glossar 163
Relationenrnodell: ¢ Datenmodell, in dem alle Daten und ihre Beziehungen als ¢ Relationen dargestellt werden
Relationenschema: Tabellenskelett
relativ organisierte Datei: Datei, welche den ¢ direkten Zugriff auf jeden beliebigen Satz erlaubt
Satz (engl. record): Eine Gruppe von Datenelementen (¢ Feldem), die als eine Einheit behandeIt werden. 1m ¢ Relationenmodell entspricht einem Satz eine Tabellenzeile.
Satzpuffer: Teil des Intemspeichers, der den laufenden Dateisatz aufnimmt (¢ Dateipuffer)
Schliissel: Eines oder mehrere ¢ Attribute, nach denen Satze identifiziert, sortiert, indiziert oder verbunden werden konnen
Schltisselkandidaten (engl. candidate key): ¢ Schltissel, die sich zur Identiftkation von Tabellenzeilen eignen
Sekundarschliissel: Schltissel, der im Gegensatz zum ¢ Primiirindex, nicht alle Satze eindeutig identifiziert
Selektion: Relationale Grundoperation, die jene Zei/en der Ausgangstabelle in eine Ergebnistabelle aufnimmt, welche die Selektionsbedingung erftillen
sequentiell organisierte Datei: Datei, in der man gezwungen ist, hintereinander (sequentiell) jeden Satz zu lesen, bis der gesuchte Wert gefunden wird
SQL (engl. Structured Query Language): Nichtprozedurale ¢ Abfragesprache, die vor allem flir den Endbenutzer entworfen wurde. Auf Arbeitsplatzrechnem dient das standardisierte SQL vor allem dem Zugriff auf zentrale Grossrechner-Datenbanken.
Stammdatei (engl. master fIle): Datei, die Informationen enthii.It, welche tiber langere Zeit zur Verftigung stehen sollen. Beispiel: Kundenkartei
Textdatei: Datei aus einer unstrukturierten Folge von Zeichen, denen durch einen Code (¢ ASCII-Code) Bitfolgen konstanter Lange zugeordnet werden
Transaktion: Folge von Datenbankbefehlen, die logisch zusammengehoren und eine Datenbank von einem konsistenten Zustand in einen anderen tiberftihren
Uberlauforganisation: Verfahren, das Satze, deren Hash-Adressen kollidieren, anderswo speichert (¢ Hash-Funktion, Kollision)
Verbund (engl. join): Relationale Grundoperation zwischen Tabellen. Eine gebrauchliche Art des Verbunds vergleicht jeden Satz einerTabelle mit allen Satzen einer anderen Tabelle. Wenn die Verbundbedingung erftillt ist, werden die beiden verglichenen Satze zusammengehangt und als ein Satz in die Ergebnistabelle geschrieben.
164 G10ssar
verkettete Dateiorganisation: Dateiorganisation, deren Indextabellen bei mehrdeutigen Schliisseln nur die Adresse des ersten passenden Satzes enthalten. Dieser Satz enthlUt einen Zeiger auf den nachsten Satz mit dem gleichen Schliissel usw. Alle Siitze mit dem gleichen Schliissel sind also iiber Adresszeiger miteinander verkettet.
View: ¢ Benutzersicht
Wertebereich (Domane): Menge aller Werte, die ein Attribut annehmen kann
Wiederholungsgruppen: Gruppe von mehreren Werten des gleichen Attributs im gleichenSatz
Zelle: Speicherplatz, der beim Suchen und Adressieren als Einheit behandelt wird
Zugriff (engl. access): Positionieren des Lesegeriits mit anschliessendem Lesen oder Schreiben von Daten auf einem meist extemen Speicher
Zylinder: Bereich des Plattenspeichers, auf dem obne Bewegung des Zugriffsmechanismus gelesen oder geschrieben werden kann
166
Bemerkung zu den LOsungen in dBASE und Paradox: Da MS OOS-Dateinamen ohne Dateierweiterung hOchstens 8 Zeichen umfassen diirfen, erscheinen in den Aufgabenlosungen im Gegensatz zu den Ausftihrungen im Hauptteil abgekiirzte Tabellennamen.
LOsungen zu Kapitell 167
Losungen zu Kapitell
1.1 Eine Notation zur Beschreibung zusammengesetzter Attribute
Einriickung I
Das ausgeruckte Element enthiilt aIle eingeruckten Elemente entweder ... oder (Disjunktion)
* []
Wiederholung. Die Anzahl der Wiederholungen steht in Klammern Das eingeklammerte Element kommt nur in einigen der Datenstrukturen vor (Optionalitat)
1.2 Wertebereiche von AttributenlDatentypen
Tag, Monat, Jahr Datum
Umsatz Sprachkenntnisse Korpergrosse Zivilstand Vorname
1.3 ASCII-Code
Ausschnittstypen heterogen zusammengesetztes Attribut (Die Elemente von "Datum" sind Aufziihlungstypen) positive Zahl Aufzahlungstyp positive Gleitpunktzahl (positive REAL-Zahl) Aufziihlungstyp
Zeiehenkette (eng!. character string)
a) Deutsche Umlaute, e (e mit accent aigu), kyrillisches Alphabet etc.
b) a steht in der Sortierreihenfolge (KoIlation) unmittelbar nach a. Wird aber zum Beispiel eine geschweifte Klammer des ASCII-Code durch a ersetzt, erscheint a nieht unmittelbar nach a. Flir den unveranderten ASCII-Code geschriebene Sortierprogramme sortieren deshalb Zeiehenketten mit a nicht richtig.
c) 1. Lies den Grossbuchstaben 2. Finde das dezimale ASCII-Aquivalent des Grossbuchstabens 3. Subtrahiere 32 vom dezimalen Aquivalent 4. Wandle das Ergebnis in ein ASCII-Zeichen um
168 Ulsungen zu Kapitell
1.4 Arten von Dateien
Personal Zeitkarten Banktiberweisungen Sortierdatei Lohnbuchhaltung Sortieren Banktiberweisungen schreiben
1.5 Arten von Dateien
Eingabe-/ Ausgabedatei, Stammdatei Eingabedatei, Bewegungsdatei Ausgabedatei, Bewegungsdatei Eingabe-/ Ausgabedatei, Arbeitsdatei Programmdatei Programmdatei Programmdatei
a) Dateien mit grossen Datenmengen: Dateien mit bibliographischen Angaben in Literaturverwaltungssystemen, Kundendateien etc.
b) Dateien mit grosser Anderungshliufigkeit: Kontenstand, Gaszlihler etc.
c) Dateien mit geringer Anderungshliufigkeit: Produktedateien, Stticklistendateien usw.
LOsungen zu Kapite12 169
Losungen ZU Kapitel2
2.1 Datentrager fiir sequentielle Dateien
Die Bewegungsdatei eignet sich am besten, da der Speicherplatz auf Plattenspeichern knapper ist als auf Magnetblindern. Die Bewegungsdatei beansprucht im allgemeinen weniger Platz als eine Stammdatei.
2.2 Sequentielle Dateiorganisation in Turbo Pascal
PROGRAM errichteKontendatei; { Zweck: Errichten einer sequentiell organisierten Buchungsdatei Eingabe: Dateispezifikation, Kontennummern und Betriige auf der Tastatur Ausgabe: auf den durch die Dateispezifikation genannten externen Datentriiger }
TYPE Buchungstyp = RECORD
Kontonummer: integer; Betrag: real;
END;
VAR Buchung: Buchungstyp; externerDateiname: string; Kontendatei: file of Buchungstyp;
BEGIN {Hauptprogramm}
{INITIALISIEREN}
write(,Dateispezifikation: '); readln(externerDateiname); assign(Kontendatei, externerDateiname); rewrite(Kontendatei); write(,Kontonummer (0 bricht ab): '); read(Buchung.Kontonummer);
170 LOsungen zu Kapitel 2
{VERARBEITEN}
WHILE Buchung.Kontonummer <> 000 BEGIN writeCBetrag: '); read(Buchung.Betrag); write(Kontendatei, Buchung); writeCKontonummer (0 bricht ab): '); read(Buchung.Kontonummer);
END;
{ABSCHUESSEN}
close(Kontendatei); END.
2.3 Display einer sequentiellen Datei
(Erliiuterungen folgen am Ende der LOsung zur Teilaufgabe c)
b) Bildschirmweise Ausgabe
PROORAM displayKontendatei; { Zweck: Ausgabe einer sequentiell organisierten Datei Eingabe: DateispezifIkation Ausgabe: Datei auf dem Bildschirrn Bemerkung: Die Ausgabe erfolgt bildschirrnweise }
USES CRT;
TYPE
{CRT ist eine Bibliothek von Bildschirmprogrammen} 1)
Kontentyp = RECORD Nummer: integer; Betrag: real;
END;
VAR Kontensatz: Kontentyp; extemerDateiname: string; Kontendatei: fIle of Kontentyp; Zeilenzahl: integer;
BEGIN {Hauptprogramm}
{INITIALISIEREN}
ClrScr; write('Dateispeziflkation: '); readln( extemerDateiname); Zeilenzahl := 0; assign(Kontendatei, extemerDateiname); reset(Kontendatei);
{VERARBEITEN}
WHll..E not(eof(Kontendatei» DO BEGIN read(Kontendatei, Kontensatz); writeln(,Kontennummer: ',Kontensatz.Nummer:4); writeln(,Betrag: " Kontensatz.Betrag: 11 :2); Zeilenzahl := Zeilenzahl + 2; IF Zeilenzahl > 22 THEN BEGIN
write(, <Enter> filhrt weiter'); readln; ClrScr; Zeilenzahl := 0;
END; END;
{ABSCHUESSEN}
close(Kontendatei); END.
LOsungen zu Kapitel 2 171
{clear screen} 1)
1)
172 Ulsungen zu Kapitel 2
c) Gruppenbruch
PROORAM displayGruppenverarbeitung; { Zweck: Ausgabe einer sequentiell organisierten Datei in Gruppen Eingabe: Dateispezifikation auf der Tastatur Ausgabe: Datei auf dem Bildschirm }
USES CRT;
TYPE Buchungstyp = RECORD
Kontonummer: integer; Betrag: real;
END;
VAR externerDateiname: string; Buchung: Buchungstyp; Buchungsdatei: file of Buchungstyp; Zeilenzahl: integer; letzteKontonummer: integer; Gruppensaldo: real; Gesamtsaldo: real;
PROCEDURE naechsteSeite; BEGIN
IF Zeilenzahl > 22 THEN BEGIN write('<Enter> fiihrt weiter'); readln; ClrScr; Zeilenzahl := 0;
END; Zeilenzahl := Zeilenzahl + 2;
END;
BEGIN {Hauptprogramm}
{INITIALISIEREN}
ClrScr; write(,Dateispezifikation: '); readln( externerDateiname); assign(Buchungsdatei, externerDateiname); reset(Buchungsdatei);
Zeilenzahl := 0; Gesamtsaldo := 0;
1)
1)
{clear screen}
{VERARBEITEN}
WHll..E not(eof(Buchungsdatei)) 00 BEGIN read(Buchungsdatei, Buchung); letzteKontonummer := Buchung.Kontonummer; Gruppensaldo := 0;
WHll..E not(eof(Buchungsdatei)) AND
Losungen zu Kapitel 2 173
(Buchung.Kontonummer = letzteKontonummer) DO BEGIN writelnCKontonummer: " Buchung.Kontonummer:4); writelnCBetrag: " Buchung.Betrag: 10:2); Gruppensaldo:= Gruppensaldo + Buchung.Betrag; naechsteSeite; read(Buchungsdatei, Buchung);
END;
Gesamtsaldo := Gesamtsaldo + Gruppensaldo; naechsteSeite; writelnCSaldo der Kontonummer " letzteKontonummer:4, ': " Gruppensaldo: 10:2); letzteKontonummer := Buchung.Kontonummer;
END;
{ABSCHUESSEN}
writeln; naechsteSeite; writelnCGesamtsaldo: " Gesamtsaldo: 10:2); close(Buchungsdatei); END.
ErHiuterungen
1) Einzelne Turbo Pascal-Programme greifen auf vorgegebene Bibliotheken von Unterprogrammen zu, unter anderem auf die Bibliothek CRT. CRT enthiilt Routinen zur Ausgabe am Bildschirm (engl. Cathode Ray Tube). Die Routine ClrSer lOscht zum Beispiel den Bildschirm. Solche Unterprogramme werden wabrend des Bindevorgangs (engl. at link time) zum benutzerdefinierten Programmcode gebunden.
2.4 Fortschreibung einer sequentiellen Datei
Vergleich zwischen dem Pseudocode und der Pascal-Implementation
1) a) Das Programm priiftdas Dateiende nicht an einem letzten Dummy-Satz, sondern verwendet die eingebaute Pascal-Funktion EOF( <Dateiname».
b) Die Ablaufstruktur des Codes in der iiussern WHILE-Schleife und die nachfolgende IF-Auswahl unterscheiden sich yom Programm in Abschnitt 2.1 C.
174 U)sungen zu Kapitel 2
2) read(<Datei>, <Satzpuffer» erzeugt einen Laufzeitfehler, wenn das Dateiende bereits erreicht ist, der Dateizeiger also bereits auf dem letzten Satz steht.
2.5 Errichten und interaktives Andern einer sequentiell organisierten Datei
a) Errichten der Datei VORLESUNG
PROGRAM errichte VORLESUNG; { Zweck: Errichten einer sequentieU organisierten Datei Eingabe: Vorlesungsnummer, Vorlesungsnarne und Stundendotation aufderTastatur Ausgabe: Datei auf einem externen Datentriiger }
TYPE V orlesungstyp = RECORD
Nummer: string; N arne: string; Stunden: integer;
END;
VAR Vorlesung: Vorlesungstyp; externerDateinarne: string; Vorlesungsdatei: file of Vorlesungstyp;
BEGIN {Hauptprogramm}
{INITIALISIEREN}
write('Dateispezifikation: '); readln( externerDateinarne); writeln; assign(Vorlesungsdatei, externerDateinarne); rewrite(Vorlesungsdatei); write('Vorlesungsnummer (<Enter> bricht ab): '); readln(Vorlesung.Nummer);
{VERARBEITEN}
WHILE Vorlesung.Nummer <> " DO BEGIN write('Vorlesungsnarne: '); readln(Vorlesung.Narne); write(, Stunden: '); readln(Vorlesung.Stunden); write(Vorlesungsdatei, Vorlesung); writeln; write('Vorlesungsnummer (<Enter> bricht ab): '); readln(Vorlesung.Nummer);
END;
{ABSCHUESSEN}
close(Vorlesungsdatei); END.
b) Ausgeben einzelner Sitze der Datei VORLESUNG
PROGRAM displayVORLESUNG; {
LOsungen zu Kapitel 2 175
Zweck: Ausgabe von Satzen einer sequentiell organisierten Datei Eingabe: Vorlesungsnummern Ausgabe: Satze mit den eingegebenen Vorlesungsnummern }
TYPE Vorlesungstyp = RECORD
N ummer: string; Name: string; Stunden: integer;
END;
VAR Vorlesung: Vorlesungstyp; externerDateiname: string; Vorlesungsdatei: file of Vorlesungstyp; N ummer: string;
BEGIN {Hauptprogramm}
{INITlAUSIEREN}
write('Dateispezifikation: '); readln(externerDateiname); writeln; assign(Vorlesungsdatei, externerDateiname);
176 UlslDlgen zu Kapitel2
{VERARBEITEN}
write('Vorlesungsnummer (<Enter> bricht ab)'); readln(Nummer); WHILE Nummer <> " 00 BEGIN
reset(Vorlesungsdatei); read(V orlesungsdatei, Vorlesung); WHILE not(eof(Vorlesungsdatei» and (Vorlesung.Nummer <> Nummer) 00
read(V orlesungsdatei, Vorlesung); IF Vorlesung.Nummer = Nummer TIIEN BEGIN
writeln('Vorlesungsname: ',Vorlesung.Name); writeln('Stunden: " Vorlesung.Stunden); END
ELSE writeln(,Keine solche Vorlesungsnummer vorhanden! ');
writeln; write('Vorlesungsnummer (<Enter> bricht ab): '); readln(Nummer);
END;
{ABSCHUESSEN}
close(Vorlesungsdatei); END.
c) Mingel eines sequentiellen Programms fur den interaktiven Gebrauch
In Programm b) wird das Feld Nummer aller Slitze der Vorlesungsdatei sequentiell gelesen, bis die gesuchte Nummer gefunden wird. Wenn der Benutzer eine weitere Abfrage wunscht, wird der Dateizeiger wieder zu Beginn der Vorlesungszeiger positioniert und die sequentielle Suche beginnt von neuem. Dies flihrt vor allem bei grossen Dateien zu langen Antwortzeiten.
2.6 Sequentielle Dateiorganisation in COBOL
a) Pascal-Programm
PROGRAM displayUmsatzmaximum; {
Zweck: Ausgabe der Monatsmaxima Eingabe: Vertreterdatei VERTRT.DAT Ausgabe: Monatsmaxima der einzelnen Vertreter auf dem Bildschirm }
TYPE Monatszahltyp= 1..12; Monatsumsatztyp = array[Monatszahltyp] of real; Vertretertyp = RECORD
Name: string; Monatsumsatz: Monatsumsatztyp;
END;
VAR Monatszahl: Monatszahltyp; Monatsumsatz: Monatsumsatztyp; Vertretersatz: Vertretertyp; U msatzdatei: file of Vertretertyp;
L6sungen zu Kapitel 2 177
Jahresmaximum: real; Maximummonat: integer; {Monatszahl von Umsatzmaximum}
BEGIN {Hauptprogramm}
{INITIALISIEREN}
assign(Umsatzdatei, 'VERTRT.DAT'); reset(Umsatzdatei);
{ VERARBEITEN}
writeln('VERTRETER MONAT MAX. UMSATZ'); writeln; WHILE not eof(Umsatzdatei) DO BEGIN
Jahresmaximum := 0; Maximummonat := 0; read(Umsatzdatei, Vertretersatz); write(Vertretersatz.N ame); FOR Monatszahl := 1 TO 12 DO
IF Vertretersatz.Monatsumsatz[Monatszahl] Jahresmaximum THEN BEGIN J ahresmaximum := Vertretersatz.Monatsumsatz[Monatszahl]; Maximummonat := Monatszahl;
END; write(Maximummonat:20); write(Jahresmaximum: 16:2); writeln;
END;
{ABSCHLIESSEN}
close(U msatzdatei);
END.
178 UlslUlgen zu Kapitel2
b) Einige Unterschiede zom COBOL.Programm
• "Monatszahltyp" ist im Pascal-Programm als sogenannter Unterbereichstyp deklariert. Variablen dieses Typs k6nnen so nur die Zahlen von 1 bis und mit 12 annehmen.
• Pascal-Programme sind im Gegensatz zu COBOL-Programmen frei fonnatierbar. COBOL-Deklarationen und Statements miissen in bestimmten Spalten beginnen, die Gestaltung eines Programms Uisst darnit dem Programmierer nur wenig Freiheit. Die strengen Formatregeln stammen aus einer Zeit, in der sich die meisten Programme an das strenge Lochkartenformat halten mussten.
• Der Deklarationsteil von COBOL-Programmen ist umfangreicher. Die Anzahl der Schliisselw6rter ist wesentlich gr6sser als in Pascal.
• Die Aufbereitung der Druckzeile in COBOL wird in Pascal durch die Parameter des writeln-Befehls definiert.
2.7 Divisionsrestverfahren
Das Beispiel illustriert, dass bei Verwendung von Primzahlen als Divisoren weniger Kollisionen vorkommen.
2.8 Wahl der geeigneten Dateiorganisation
1) a) relative Organisation b) ldentiftkationsschliissel: Produktenummer
2) a) sequentielle Organisation b) ldentiftkationsschliissel: Kundennummer
3) a) indizierte Organisation b) ldentifikationsschliissel: AHV -Nummer
LOsungen zu Kapite13 179
Losungen zu Kapitel 3
3.1 Dateioperationen in dBASE
a) DISPLAY FILES Dateinamen mit dem Muster * .DBF zeigen USE Vorlesun (DataBase File), Datei offnen
b) DISPLAY ALL Die ganze Datei bildschirmweise zeigen
c) DISPLAY FIELDS Nummer, Name Felder Nummer und Name des laufenden Satzes anzeigen
d) DISPLAY RECORD 3 Den dritten Satz anzeigen
e) GO TOP An den Dateianfang springen
t) DISPLAY NEXT 2 Die nachste 2 Satze anzeigen
g) DISPLAY Name FOR Stunden = 2 Das Feld Name aller Satze mit einer Stundenzahl von 2 zeigen
h) DISPLAY STRUCTURE Satzstruktur der laufenden Datei anzeigen
i) INDEX ON Nummer TO Vorles_key Indexdatei Vorles_key tiber dem Feld Nummer der laufenden Datei erstellen
j) FIND 8, DISPLAY
k) INSERT BEFORE
1) APPEND
m) DELETE FOR Nummer < 2
n) GO BOTTOM, EDIT
Satz mit dem Indexwert 8 suchen und zeigen
Einen Satz vor dem laufenden Satz einfligen
Einen Satz am Ende der Datei anfugen
AIle Satze mit dem Feldwert Nummer < 2 zum LOschen markieren
Ans Dateiende springen und den letzten Satz interaktiv andem
180 LOsungen zu Kapite13
3.2 Operationen auf einer einzelnen Datei
1) Beispiell6sung in dBASE
a) Satzstruktur
.CREATE Konto
Satznummer 001 002 003
Feldname NUMMER NAME STUNDEN
Typ Zeichen Zeichen Zeichen
lAnge 2
20 1
Dezimalstellen
Bemerkung: Das Feld Nummer ist iiberfiiissig, wenn es gerade der jeweiligen Recordnummer entspricht. Wird mit einer Zahl, hier Nummer, nicht gerechnet, so wird sie in der Regel als Zeichenkette deklariert.
b) Dateneingabe
Nach der Satzdefinition fUhrt dBASE den Benutzer durch der Dateneingabe.
c) Indizieren
INDEX ON Nummer TO Vades_key
d) Verschiedene Dateioperationen
- GO TOP, INSERT BEFORE (Der Index wird automatisch nachgefUhrt) - DISPLAY ALL - DISPLAY ALL FlEWS Nummer, Name - GO TOP, DISPLAY NEXT 2 - DISPLAY FOR Name = "Recht" - FIND 3, DISPLAY -EDIT - GO TOP, EDIT - FIND 4, DELETE, PACK
2) Beispiell6sung in Paradox
a) Satzstruktur
• [Hauptmenii: FlO] - Create - Table: VORLESUN
• Feldname und -typ (und Lange bei alphanumerischem Typ) eingeben
• Mit Funktionstaste F2 (Do-It!) abschliessen
STRUCT=r===IField HaMeiField Type1 1 NUMMER A2 2 NAME A28 3 STUHDEN N
!.6sungen zu Kapite13 181
b) Dateneingabe
• [Hauptmenli: FlO] - Modify - DataEntry - Table: VORLESUN
• Daten eingeben
• Mit Funktionstaste F2 {Do-It!} abschliessen
DataEnt~y fo~ Uo~lesun table: Reco~d 3 of 3
UORLESUHfUMHER 1 4 :it :it 3 3
AME===::::;;r;:=:::;STUHD ,,~EHl Inro~Matik I Ii
UWL Recht
c) Indizieren
• [Hauptmenli: FlO] - Ask - Table: VORLESUN
• Mit F6 alle auszugebenden Felder markieren und ins Feld Nummer eine beliebige Zeichenkette eingeben ..
~ [f6J to include a field in UORLESUH~UMMER
I~ x I~
the AHSWER; [f5J to give an ExaMple
IIAMEirTUH])[HI
• [Hauptmenli: FlO] - Tools - QuerySpeedup:
Hinweis: Eine andere Moglichkeit zur Indizierung ist die Markierung des Schllisselfeldes mit * wwend der Generierung bzw. Neustrukturierung (vgl. Aufgabe 3.4) der Datenbank. Dies verhindert gleichzeitig, dass in der Tabelle zwei Satze mit gleicher Nummer vorkornmen.
d) Dateioperationen
• Satz einfligen: [Hauptmenli: FlO] - Modify - Edit und an entsprechender Position in der Tabelle die Taste Ins drlicken
• Datei am Bildschirm ausgeben: FlO - View
• Felder NUMMER und NAME ausgeben a) FlO - Ask und betreffende Felder markieren (F6) b) Abfrage auslosen mit F2 {Do-It!}
Uie~ing Answe~ table: Reco~ 1 of 4
HAME:========;r~====~TUHDEH~
• Die ersten zwei Satze ausgeben: FlO - Ask
• AIle Rechtsvorlesungen ausgeben: FlO - Ask
182 UlsWlgen zu Kapite13
Vie.in. Ans." table: Record 1 or 1 VORLESUII.... IIIIIIER .... IIANE
•• •• Recht
• Satz mit NUMMER = 3 ausgeben: FlO - Ask
Vie.in. Ans." table: Record 1 or 1
VORLESU"~IIIER IIIINE:=====iipr==$STUNJ)i
• 'Recht' durch 'Mathematik' und 'BWL' durch 'Recht' ersetzen: a) Alt-F8 driicken (Bildschirm loschen) b) FlO - Modify - Edit (in den betreffenden Feldern andern)
• Satz loschen mit Nummer = 4: Cursor auf entsprechenden Satz positionieren und <Del> driicken
3.3 Implementation einer Datei nach Wahl
(keine Musterlosung)
3.4 Andem von Dateistrukturen
1) L6sung in dBASE
.MODIFY STRUCfURE mit der folgenden neuen Struktur:
Satznummer Feldname Feldtyp Feldlilnge 001 NUMMER Zeichen 2 002 NAME Zeichen 20 003 STUNDEN Numerisch 1 004 DOZENT Zeichen 20 005 RAUM Zeichen 5 006 PLAETZE Numerisch 3
Uisungen zu Kapitel 3 183
2) LOsung in Paradox
a) Felder hinzufiigen: [Hauptmenli: FlO] - Modify - Restructure - Table: VORLESUN, Anderungen speichem mit F2 {DO-IT!}
Rest~uctu~ing Uo~lesun table
STRUCI=r=N=U=M=M£=R=,rield NaMeiriUd Type1 2 NAME A20 3 STUND£N N 4 DOZ£NT A20 S RAUM AS 6 PLA£TZ£ N
b) Daten eingeben: FlO - Modify - Edit - Table: VORLESUN (vgl. Aufgabe 3.2)
184 LOsWlgen zu Kapite14
Losungen zu Kapitel 4
4.1 Anomalien
a) UPDA TE-Anomalie b) INSERT-Anomalie
4.2 Beziehungen zwischen Objekttypen
a) Mutter - Kind: l:m b) Dozent - Student: m:n c) Ehemann - Ehefrau: 1: 1 d) AHV -Nummer - AHV -Versicherter: 1: 1 e) Kunde - Bestellung: l:m
4.3 Datenbankstrukturdiagramm
Die gestrichelte Linie deutet an, dass es sich urn eine option ale Beziehung handelt: Nicht aIle Riiume mussen ein Lagerabteil enthalten.
Zoo
Pfleger Tierart Raum
f I I I I I I
Exemplar
~
Lieferant Futtermittel Lag erabte iI
Losungen zu Kapitel4 185
4.4 Datenbankstrukturdiagramm
(keine Musterlosung)
4.5 Schliissel
(Schliisselkandidaten kursiv, Primarschliissel kursiv und unterstrichen)
ANGESTELLTE(AHV-Nr, Personalnr., Abteilungsnr., Name, Adresse) ABTEn...UNGEN~, Abteilungsnr., Leiter, Angestelltenzahl)
4.6 Abhangigkeit von Attributen
a) ja
b) nein
c) ja (wenn ein Angestellter in genau einer Abteilung arbeitet)
d) ja
e) nein (wenn eine bestimmte Vorlesung von mehreren Dozenten gehalten werden kann)
4.7 Abhangigkeiten, Anomalien, Normalisierung
1) Artikel, Filiale und Angestellter
2) Filiale --+ Adresse, Angestellter --+ Projekt, Projekt --+ Abteilung, Angestellter --+ Abteilung
3) Die folgenden Anomalien entstehen in der Tabelle a) unter den genannten Bedingungen:
• INSERT-Anomalie, wenn Satze eingefiigt werden, von denen nur ein Teil der zusammengesetzten Identifikation bekannt ist
• DELETE-Anomalie, wenn ein einzelnes Schliisselattribut geloscht wird
• UPDA TE-Anomalie, wenn beim Andern eines Schliisselattributs nicht alle Vorkommen geandert werden.
4) Das Attribut Adresse hlingt nur von einem Teil der zusammengesetzten Identifikation abo Wir bilden deshalb aus den Attributen Filiale undAdresse eine neue Tabelle. Das Attribut Abteilung hangt vom Nicht-Schliisselattribut Projekt abo Eine vierte Tabelle besteht deshalb aus den Attributen Projekt und Abteilung.
Die normalisierten Tabellen sind dann: ~ E.ili.ak. Menge), (E.jJjjJ,k Adresse), (Angestellter Projekt) , (ProiektAbteilung).
186 LOsungen zu Kapitel4
4.8 Normalisierung
a) Sitz, Direktor
b) BOHRLOCH(Bohr/och, Ort, Bohrfirma, O/firma) OLFIRMA<Olfirma, Sitz, Direktor)
c) BOHRLOCH «----------------------------> OLFIRMA
4.9 Normalisierung
BESTELLUNG(BesteUnr, Kundennr, BesUiatum) KUNDE(Kundennr, Kundenname) PRODUKT<BesteUnr, Produktnr, Menge)
4.10 Normalisierung
1) Student ~ Gruppe, Gruppe ~ Leiter, Leiter ~ Funktion, Gruppe ~ Tag
2) Nach Entfemung der Wiederholungsgruppen besteht die Identiflkation der Ausgangstabelle aus der Attributkombination Veranstaltung, Einteilung, Student. Die Attribute Leiter und Funktion hangen von einem Teil des Schliissel bzw. von einem Nichtschliissel ab und widersprechen so den Normalisierungsregeln. Wir bilden deshalb neue Tabellen: (Veranstaltun~, Einteilun~, Student. Tag, Buch) und <LJ:iw:, Funktion). Tag undBuch in derersten Tabelle hangen nurvon einem Teil des Schliissels abo Eine dritte Tabelle enthalt deshalb mindestens Student. So sind allerdings die drei Tabellen isoliert. Wir fligen der dritten Tabelle deshalb die Identiflkation Veranstaltung, Einteilung und der ersten Tabelle die IdentiflkationLeiter als Fremdschliissel bei. Die normalisierten Tabellen lauten dann: (Veranstaltung, Ejnteilung, Leiter, Tag, Buch), <LJ:iw:, Funktion) und (Student, Veranstaltung, Einteilung).
4.11 Hohere Normalformen
a) Ein neuer Angestellter kann nur in die Tabelle aufgenommen werden, falls seine Programmiersprachen- und Fremdsprachenkenntnisse bekannt sind.
b) Wenn eines der beiden Attribute Fremdsprachen und Programmiersprachen bekannt ist, kann das eine Attribut ohne Information iiber das andere aufgezeichnet werden.
Uisungen zu Kapite14 187
4.12 m:n-Beziehung
a)
l:ala Sohne Zahl Lieferant Gewicht T1 T3,T4,T6 4,3,2 T2 T3,T5 5,3 T3 T4,T5 4,2 T4 T5 T6
~ SQlm. Zahl Lieferant Gewicht T1 T3 4 T1 T4 3 T1 T6 2 T2 T3 5 T2 T5 3 T3 T4 4 T3 T5 2 T4 T5 T6
b) Tabelle 1 Tabelle2,
Wi. Lieferant Gewicht ~ SQlm. Zahl T1 T1 T3 4 T2 T1 T4 3 T3 T1 T6 2 T4 T2 T3 5 T5 T2 T5 3 T6 T3 T4 4
T3 T5 2
4.13 Entwurf einer Datenbank
a) ANGESTELL TE(AHV-Nr, Angestelltenname, Wohnort, Abteilungsname) ANG-PROJ(AHV-Nr, PrQjekmame, Zeit)
b) ANGESTELLTE <----------> ANG-PROJ
188 LOsungen zu Kapite14
4.14 Entwurf einer Datenbank
a) W ALD~ Ort, Eigentiimer) BAUMART<Arl, Hohe) W ALD-BAUMART(Name, Art) BAUM(Baurnnr, Art, Name, Pjlanzdatum) MESSUNG(Messnr, Baumnr, Messergebnis, Messdatum)
b)
Wald
Wald-Baumart Baumart
Baum
Messung
4.15 Entwurf einer Datenbank
a) PATIENT(Pat-Nr, Pat-Name, Pat-Adresse) SCHWESTER<Pers-Nr, Schwesternname) OPERATION(Pat-Nr, Op-Datum. Op-Name, Pers-Nr, Med-name) MEDIKAMENT<Med-Name, Nebenwirkung)
190 LOsungen zu Kapitel 5
Losungen zu Kapitel 5
5.1 Queries by Example in Paradox
a) [Hauptmenii: <FlO>] - A(sk) - Table: Raurn Mit F6 das auszugebende Feld rnarkieren Auswahlkriterien mit Komma (steht ffir "und") getrennt eingeben
HAD","" ==w=RRaWUlUMel'=9i"'"'fl a tZf:===i Il I )198,<=289 I
<F2> wahlt die gewiinschten Satze aus
b) [Hauptmenii: <FlO>] - A(sk) - Table: Organisa Mit F6 das auszugebende Feld rnarkieren (in jeder Zelle, die wegen "oder" entsteht) Auswahlkriterien auf verschiedenen Zeilen (entspricht "oder") eingeben
<F2> wahlt die gewiinschten Satze aus
c) [Hauptmenii: <FlO>] - A(sk) - Table: Organisa Mit F6 das auszugebende Feld rnarkieren (in jeder Zeile, die wegen "oder" entsteht) Auswahlkriterien aufverschiedenen Zeilen (entspricht "oder") eingeben
ORGAHISA1i"ID[~fMfstf~ozfnt~R;~UMMf~
<F2> wahlt die gewiinschten Satze aus
d) [Hauptmenii: <FlO>] - A(sk) - Table: Vorlesun [Hauptmenii: <FlO>] - A(sk) - Table: Organisa [Hauptmenii: <FlO>] - A(sk) - Table: Raurn Mit F6 das auszugebende Feld rnarkieren Auswahlkriterien ("3" bzw. "150") eingeben Verbindungsfelder mit Verbindungsworter verkniipfen (F5 und zurn Beispiel "Name" in die gleichnamigen Felder der Tabellen "Vorlesung" und "Organisation" schreiben)
UORLESDH1 HaM l HaM(! I 3 stundfn~
ORGAHISA-="aMf=rfMfstf~=roZfntTRaWUlUMMfp=y I HaMf RaWUlUMMu I
HADM I RaWUlUMMfI'='4i .platz! RauMnUMMf~ I )159 I
<F2> wlihlt die gewiinschten Satze aus
e) [Haupttnenii: <FlO>] - A(sk) - Table: Vorlesun [Haupttnenii: <FlO>] - A(sk) - Table: Organisa Mit F6 das auszugebende Feld rnarkieren Auswahlkriterien ("BWL" bzw. "WS88") eingeben
LOsungen zu Kapite15 191
Verbindungsfeld mit Verbindungswort verkniipfen (F5 und zurn Beispiel "Name" in die gleichnarnigen Felder der Tabellen "Vorlesung" und "Organisation" schreiben)
I 3 Stunden======u
ORCANISA~aMe=rr=SeMe5te~=u=DozentTRauMnuMMep=j I HaMe a U RaUMRuMMep I
RAUMI=v=. =RaUMnUMMtJ=='1j Pliitze=====iJ RauMnuMMe~ U )159 U
<F2> wlihlt die gewiinschten Satze aus
5.2 Verbund
1) LOsung in dBASE
a) USE Organisa
b) SELECI'2
c) USE Vorlesun
d) JOIN WIlli Organisa TO Ergebnis FOR Organisa->Name = Vorlesun->Name FIELDS Name, Stunden, Semester, Organisa->Dozent, Organisa->Raum
2) LOsung in Paradox
a) Dateien ORGANISA und VORLESUN miteinander verkniipfen: Alt-F8 [Bildschirm loschen] FlO - Ask - Table: ORGANISA FlO - Ask - Table: VORLESUN Query by Example wie folgt, dann F2 {Do-It!}
l [r61 to include a field in the ANSWER; [r51 to give an ExaMPle
ORCANISA~ME~EMESTER »02ENT fiRAUMNUMMER II x II II I
UORLESUN~AMETTUNDEN~
192 UlsWlgen zu Kapitd 5
b) Tabelle ANSWER in Tabelle ORGANISA kopieren: F10 - Tools - Copy - Table: ANSWER - Table: ORGANISA - Replace
S.3 Verkniipfen von Dateien
1) L6sung in dBASE
a) USE RauIn, DISPLAY FOR Plaetze = 150 FIELD Raumnummer Nach der Antwort "Raum = 112" lauten die niichsten Befehle: SELECf2 USE Organisa DISPLAY FOR Raum = '112' FIELD Dozent
b) USE Organisa, DISPLAY FOR Dozent = 'Schmid' .AND. Semester = 'SS89' FIELD Name Nach der Antwort "BWL" geben die folgenden Befehle Auskunft fiber die Stundenzahl: SELECf2 USE Vorlesun DISPLAY FOR Name = 'BWL' FIELD Stunden
c) USE Organisa, DISPLAY FOR Name = 'BWL' .AND.Dozent= 'Schmid' FIELD Raum Nach der Antwort "Raum = 111" lauten die niichsten Befehle: (SELECf2) USERaum DISPLAY FOR Raum = '111' FIELD Plaetze
2) L6sung in Paradox
a) Alt-F8 (Bildschirm l(jschen) FlO - Ask - Table: ORGANISA FlO - Ask - Table: RAUM Query by Example wie folgt, dann F2 {Do-It!}
Uie~ing Answe. taLle: Record 1 or 1 OICAHISArNETDlESTrZOIIT--1II1 RAUI4==TItAUMIIIMNER I PLAETZE===; I x 159 I
b) Alt-F8 [Bildschinn loschen] FlO - Ask - Table: ORGANISA FlO - Ask - Table: VORLESUN Query by Example wie folgt, dann F2 {Do-It!}
Lfisungen zu Kapitel5 193
Uiewing Answe~ table: Reco~ 1 of 1
ORCANISA~AME~EMESTER~DOZEHT~RAUMNUMMERl I BWl. x ~ SS89 I SchMid I
c) Alt-F8 [Bildschinn lOschen] FlO - Ask - Table: ORGANISA FlO - Ask - Table: VORLESUN FlO - Ask - Table: RAUM Query by Example wie in der folgenden Tabelle:
J [F61 to include a field in the ANSWER; [FS1 to give an ExaMple
ORCANISA~AME~~EMESTER---,~DOZEHT~RAUMNUMMERl I BWL. x I SS89 U SChMid I Y
5.4 Fortschreibung (Losung in dBASE)
a) USE Bewegung
b) SELECf2
c) USE Lager
d) UPDATE ON Nr FROM Bewegung REPLACE Preis WITH Preis + Bewegung->Preis, Menge + Bewegung->Menge
194 LOsungen zu Kapitel 5
5.5 Implementation einer einfachen Datenbank
1) L6sung in dBASE
a) CREATE Adress Nwnmer, Zeichen, 4 Nachname, Zeichen, 15 Vorname, Zeichen, 10 Strasse, Zeichen, 20 PLZ, Zeichen, 4 Total, numerisch, 9,2 (Datensatze eiogeben)
b) CREATE Adressen (ADRESSEN verschieden von ADRESS!) mit dem zusatzlichen Feld Telefon, Zeichen, 20
c) (USE ADRESSEN) APPEND FROM Adress GO TOP EDIT (Telefonnummern eingeben)
d) SELECT2 CREATE Beitraeg Nummer, Zeichen, 4 Beitrag, numerisch, 8, 2 Datum, Datum (Datensatze eiogeben)
e) SELECT Adressen INDEX ON Nachname + Vorname TO IName SELECT 2 INDEX ON Nummer TO INummer
f) USE Adressen INDEX IName SELECT 2 USE Beitraeg SELECT Adressen FIND 'Meier' ? Nummer (Das Ergebnis sei die Nummer 255) SELECT 2 DISPLAY FOR Nummer = '255'
g) USE Beitraeg SELECT 2 USE Adressen INDEX IName UPDATE ON Nummer FROM Beitraeg REPLACE Total WITH Total + Beitraeg->Beitrag RANDOM
2) LOsung in Paradox
a) 1) [Hauptmenii: F1O] - C(reate) - Table: ADRESSEN 2) Feldnamen, -typen und -langen bestimmen:
STRUCT=r===rield HaMeirield Type1 1 H~ N 2 HachnaMe Al5 3 Uo~naMe AIO 4 Strasse A20 5 Plz N 6 Total $
LOsungen zu Kapite15 195
Bemerkung: Der Typ $ wird flir Geldbetrage verwendet und rundet auf zwei Kommastellen. Negative Zahlen werden statt mit Minuszeichen in Klammern dargestellt.
3) F2 speichert die Tabellenstruktur 4) [Hauptmenii: F1O] - M(odify) - D(ataEntry) - Table: Adresse 5) F2 speichert
I I Capone Al Chicago St~. I 9999 ENTRYr~rachnaMeTo~naMemt~asseillPlz ITO tall 2 2 Dicke Be~tha Ce~aniast~. 2 1909
b) 1) [Hauptmenii: F1O] - M(odify) - R(estructure) Table: Adresse 2) Zusatzliches Feld wie die urspriinglichen Felder definieren 3) F2 speichert
Rest~uctu~ing ad~sse table
STRUCT=;;====rield HaMel Field T!lpel I H~ N 2 HachnaMe Al5 3 Uo~naMe AIO 4 Strasse A29 5 Plz H 6 Total $ 7 Telefon All
c) 1) F9 ruft nach der Restrukturierung das Dateneingabe-Menii auf 2) F2 speichert
I I Capone Al Chicago St~. I 9999 22 34 68 ADREssEr~rachnaMeTo~naMeTEt~assemPlz---~TotaITITelefonl 2 2 Dicke Be~tha Ce~Maniast~. 2 1999 24 89 12
196 UlsWlgen zu Kapitel 5
d) 1) [Hauptmenii: FlO] - C(reate) - Table: Beitrage 2) Feldnamen, -typen und -liingen definieren 3) F2 speichert die Tabellenstruktur 4)[Hauptmenii: FlO] - M(odify) - D(ataEntry) - Table: Beitrage 5) F2 speichert
Ifl' hId tlaMeli~ld Type) Beitp~g $ D~tUM D
e) In Paradox miissen Schliisselfelder, die indiziert werden soIlen, am Anfang der Tabelle stehen. Wirverschieben deshalb die Spalten "Nachname" und "Vorname" und markieren sie als Schliisselfelder.
1) [Hauptmenii: FlO] - M(odify) - R(estructure) - Table: Adresse 2) <Insert> - <Enter> - Nachname - <Enter> - * -<Enter> 3) <Insert> - <Enter> - Vorname - <Enter> - * 4) F2 speichert die neuen Felder als Schliisselfelder
f) 1. Teil
1) [Hauptmenii: FlO] - A(sk) - Table: Adresse 2) Alt-F6 (AIle Felder ausgeben) 3) Auswahlkriterium angeben 4) F2 wlihlt den gewiinschten Satz aus und erzeugt die folgende AntworttabeIle:
l [F61 to include ~ field in the ANSWER; [F51 to give an ExaMPle Main ADRESSE~hnaMe=u=UopnaMe=u=Stpasse JiPIZ-y;Tot~I-v;Telefon,
Il N Capone." U" H Il
2. Teil
1) Mit F3 zur Tabelle "Adresse" springen 2) Verbindungsfeld angeben 3) [Hauptmenii: FlO] - A(sk) - Table: Beitraeg 4) Mit F6 die auszugebenden Felder markieren 5) Vorher defmiertes Verbindungswort in das Verbindungsfeld dieser Tabelle einsetzen (F5 und zorn Beispiel "Nummer" in das FeldNummer schreiben) 6) F2 vereinigt die beiden Tabellen iiber das Verbindungsfeld, wlihlt die gewiinschten Slitze und erzeugt eine neue Antworttabelle
AIBESSE. til' HlIMMel'
BEITBAEC1 III' HuMMel'
I HachnaMe-----u l Capone
Ulsungen zu Kapite15 197
Be i troag=="ill==Da tllM, AHSWER~ChnaMe--'Beitl'ag:;rnDatuMn 1 Capone 9,95 1.81.11
2 C~~one 99.95 1.81.12
g) (keine Musterlosung)
L6sungen zu Kapite17 199
Losungen zu Kapitel 7
7.1 BegritT der Relation
a) Der Satz mit dem kombinierten Schliissel 34+2 hat ein Duplikat.
b) Das Attribut Prufdatum enthiilt Wiederholungsgruppen.
7.2 Abfragesprachen
1) LOsung in dBASE
Voraussetzung: Die Indexdateien VNAME, ONAME und RAUMNUMMER sind erstellt worden.
CLEAR ALL (Defaults zuruckstellen) USE Vorlesun INDEX VName SELECf 2 (Tabelle Organisa) USE Organisa INDEX ON Name SELECf 3 (Tabelle Raum) USE Raum INDEX Raumnummer SELECf Vorlesun SET RELATION TO Name INTO Organisa SELECf Organisa SET RELATION TO Raumnummer INTO Raum SELECf Vorlesun DISPLAY Name, Stunden, Organisa->Dozent, Raum->Raumnummer, Raum->Plaetze; FOR Raum->Raumnummer = Organisa->Raumnummer .AND. Raumnummer = 111 CLEAR ALL (Defaults zuruckstellen)
Ergebnistabelle in dBASE
Name BWL Recht
Stunden 3 2
Organisa->Dozent Schmid Meier
2) Losung in Paradox
Raum->Raumnummer 111 111
a) Abzufragende Tabellen wahlen: [Hauptmenii: FlO] - A(sk) - Table: Vorlesun [Hauptmenii: FlO] - A(sk) - Table: Organisa [Hauptmenii: FlO] - A(sk) - Table: Raum
Raum->Plaetze 200 200
200 USsungen zu Kapitel 7
b) Zwischen den einzelnen Tabellen wechseln: F3 nachoben F4 nach unten
c) Auszugebende Felder markieren: F6 oder Alt-F6 (falls Mehrfachnennungen nicht unterdriickt werden sollen)
d) Auszugebende Siitze wiihlen: Auswahlkriterium im entsprechenden Feld angeben ("111" im Feld Raumnummer in der Tabelle RAUM)
e) Verbindungen zwischen mehreren Tabellen herstellen: F5(nachfolgende Eingabe erscheint invers dargestellt) gefolgt von einem Verbindungs wort
f) Antworttabelle erzeugen: F2
RNSWERTiaMeTtundenlDozentTRaUMnUMMer I Plitze, 1 BWl 3 SchMid 111 299 2 Recht 2 Neiel' 111 21HJ
7.3 Reduktion von Abfragen aufrelationale Grundoperationen
Vorbemerkungen: Schritt 1) nennt die notwendigen relationalen Grundoperationen, Schritt 2) eine entsprechende Formulierung in dBASE und Schritt 3) die LOsung in Paradox. Schritt 4) zeigt schliesslich den iiquivalenten SQL-Befehl. Tempornre Dateien werden mit dem Prlifix Tmp bezeichnet. Aus den in Aufgabe 7.4 angesprochenen Effizienzgriinden wird jeweils zuerst eine SELEKTION durchgefiihrt.
a1) Selektion derZeilen in WALD mit Gemeinde = 'St. Gallen'
a2) USE WALD (WALD sei nach dem Attribut Wald indiziert oder sortiert. Vgl. Kommentar zu Abfrage b) COPYTOx USE x
DELETE FOR Gemeinde = 'St. Gallen' TOTAL ON Wald TO Ergebnis DISPLAY ALL
LOsungen zu Kapitel7 201
a3) Fiir alle Paradox-Losungen gilt:
• Tabellen wahlen: [Hauptmenii: FlO] - A(sk) - Table: Wald
• Felder markieren: F6 oder Alt-F6 (falls Mehrfachnennungen nicht unterdriickt werden sollen)
• Satze wahlen: Auswahlkriterium im entsprechenden Feld angeben (zum Beispiel "St. Gallen" im Feld Gemeinde)
• Tabellen verbinden: F5 gefolgt von einem beliebigen Verbindungswort
• Antworttabelle erzeugen: F2
WALD=-'=U==r==Wllal d===;Iii=1 =~GeMe i nde--,r;---Ei gen tUMel'=;) I~ .r St.Callen uf U
ANSWERTSald I GeMeindel~EigentiiMe~ 1 Fl'tudenhel'g St.Callen Ol'tshiil'ger' 2 Menzlen St.Callen Meier'
a4) SELECf * FROMWald WHERE Gemeinde="St.Galien"
b I) Selektion der Zeilen in W ALD mit Gemeinde = 'St. Gallen' Projektion der Spalte Gemeinde
b2) USE Wald
b3)
DISPLAY FOR Gemeinde = 'St. Gallen' FIELDS Wald, Eigentuemer Bemerkung: DISPLAY FOR ... FIELDS eliminiert keine Duplikate! DELETE, COPY und TOTAL entfemen Duplikate. TOTAL setzt allerdings eine indizierte oder sortierte Datei voraus (vgl. Abschnitt 7.2 lund Abfrage a) oben)
WALD=v.= r==Wllal d==::;Iir'1 ==(GeMe i nde--,r;---Ei gen tUMel'=;) ~ St.Gallen III U
ANSWERTaald I EigentiiMel'i 1 Fl'tudenhel'g OI'tsbiil'gel' 2 Menzlen Meiel'
202 Ulsungen zu Kapitel 7
b4) SELECI' Wald, Eigentuemer FROMWald WHERE Gemeinde = "St. Gallen"
c 1) Selektion der Zeilen in W ALD mit Gemeinde = 'St. Gallen' ergibt Tmp 1. Selektion der Zeilen in BAUM mit Art = 'Fichte' ergibt Tmp2. Projektion der Spalte Wald in BAUM ergibt Tmp2. Verbund von Tmp 1 und Tmp2 mit dem Verbundattribut Wald (entspricht dem Attribut Wald in der Tabelle BAUM)
c2) USE Wald COpy TO Tmpl USE Tmpl
c3)
DELETE FOR Gemeinde = 'St. Gallen' COPY TO Tmp2 FIELD Wald (Bei Duplikaten TOTAL verwenden) USE Baum COPY TO Tmp3 USE Tmp3 DELETE FOR Art = 'Fichte' PACK COPY TO Tmp4 FIELD Wald (Bei Duplikaten TOTAL verwenden) USETmp4 SELECI' 2 USE Tmp2 JOIN WITH Tmp4 TO Ergebnis FOR Name = 'Wald' FIELD Name USE Ergebnis DISPLAY ALL
WAlD lIald G!M!ind!il 1.[ Waid U St.Calhn
BAUM Ilaid Alit I Waid II FieM! II ANSWEr I lIaid I F'l'eudenLug
c4) SELECT DISTINCT Wald from Wald, Baum WHERE Gemeinde = "St.Gallen" AND Art = "Fichte" AND Waldo Wald = Baum.Wald
L5sungen zu Kapitel 7 203
d 1) Selektion der Zeilen in BA UM mit Art = 'Fichte' ergibt Tmp 1. Projektion der Spalten Baumnr und Wald in Tmpl ergibt Tmp2. Verbund von Tmp2 und W ALD mit dem Verbundattribut Wald
d2) USE Baum COPY TO Tmpl USE Tmpl DELETE FOR Art = 'Fichte' PACK COpy TO Tmp2 FIELDS Baumnr, Wald USE Tmp2 SELECT 2 USE Wald JOIN WIlli Tmp2 TO Ergebnis; FOR Name = Tmp2->WaldFIELDS, Tmp2->Baumnr, Eigentueme USE Ergebnis DISPLAY ALL
d4) SELECT Baumnr, Eigentuemer FROM Wald, Baum WHERE Art = "Fichte" AND Waldo Wald = Baum.Wald
e) Eine Reduktion auf Selektion, Projektion undVerbund ist nicht moglich. Es sind weitere Grundoperationen erforderlich (mengenorientierte Datenbankoperationen).
7.4 Optimierung von Datenbankabfragen
Selektionen verkleinem Tabellen in der Regel stark. Nachfolgende aufwendige Verbundoperationen konnen dann effizienter ausgeftihrt werden.
206 Literatwilinweise
Atre, S.: Data Base. Structured Techniques for Design, Performance, and Management, John Wiley & Sons 1980.442 S.
Gut verstlindliche Einfiihrung mit vielen Beispielen und zwei umfangreichen Fallstudien
Bradley, J.: File and Data Base Techniques, Holt, Rinehart and Winston 1982. 562 S.
Umfassende Einftihrung. Beispiele in PUI. Ausftihrliche Behandlung der Dateiorganisation und des CODASYL-Modells. Aufgaben. Fiir Interessierte
Carlton, T. W., Stewart, C. 0.: dBASE ill Plus Applications Library, QUE Corporation Indianapolis 1986.622 S.
Beschreibung der Implementation verbreiteter betriebswirtschaftlicher Datenbankanwendungen in dBASE ill Plus (Personalverwaltung, Verkaufsstatistik, Haupt- und Nebenbuchhaltungen). Fiir betriebswirtschaftlich interessierte dBASE-Programmierer
Codd, E. F.: Is your DBMS really relational?, in Computerworld, 1985, October 14 and 21
Der Begriinder des relationalen Datenmodells definiert in den beiden Artikeln Kriterien, denen voll relationale Datenbanksysteme geniigen sollen
Date, C. J.: An Introduction to Database Systems, Vol. 1, 4th edition, Addison-Wesley 1986,639 S.
Klassische Einfiihrung, die theoretische und praktische Aspekte des Entwurfs und der Verwaltung von Daten behandelt. Akzent auf dem relationalen Modell. Aufgaben und LOsungen
Elder, J.: Construction of Data Processing Software, Prentice-Hall 1984, 432 S.
Implementation der Dateiverwaltung und Berichtsgenerierung von COBOL in einem erweiterten Pascal. Fiir Interessierte
Gopfrich, H. R.: Wirtschaftsinformatik ll. COBOL, 3. Auflage, Gustav Fischer (UTB Taschenbiicher) 1988,443 S.
Gut verstlindliche Einftihrung in die noch verbreitetste Programmiersprache im kaufmannischen Bereich. Schwerpunkt auf der Verarbeitung sequentiell, relativ und indiziert organisierter Dateien
Literaturhinweise 207
Gray, P: Logic, Algebra and Databases, Ellis Horwood Limited 1984,294 S.
Bettet die Theorie der Datenbanksysteme in gut verstandliche Ausfiihrungen zur Logik und zur funktionalen und nichtprozeduralen Programmierung (PROLOG). Ftir Interessierte
Hansen, H. R.: Wirtschaftsinformatik 1,5. Auflage, Gustav Fischer (UTB Taschenbticher) 1986, 767 S.
Kapitel 3 enthalt einen umfassenden Uberblick tiber den Datenaspekt der EDV
Harrington, J. L.: Relational Database Management for Microcomputers: Design and Implementation, Holt, Rinehart and Winston 1988,378 S.
Methodisch-didaktisch sorgfaltige Verbindung derTheorie relationaler Systeme mit der Praxis quasi-relationaler Datenbanksysteme auf Personalcomputem an den Beispielen dBASE III Plus, RBase System V und Oracle. Physische Implementationsaspekte von Datenbanksystemen werden nicht behandelt.
Hughes, J. G.: Database Technology. A Software Engineering Approach, Prentice Hall 1988,273 S.
Einfiihrung in den Entwurf und die Implementierung von Datenbanken. Programme in Modula-2 illustrieren Implementierungsaspekte.
Loomis, Mary: Data Management and File Processing, Prentice Hall 1983, 490 S.
Methodisch gut aufbereitete Einfiihrung in Datenstrukturen und die Dateiorganisation. Beispiele in Pascal und COBOL. Aufgaben mit L6sungen
McFadden, F.R., Hoffer, J.A.: Data Base Management, The Benjamin/Cummings Publishing Company, 2. Auflage, 1988.679 S.
Ein Instructor's Manual und ein Case Book for Data Base Management sind getrennt erhiHtlich. Umfassende, praxisorientierte und gut aufbereitete Einfiihrung. Aufgaben. Weniger technisch als Loomis (1983) und Bradley (1982)
Martin, J.: Einfiihrung in die Datenbanktechnik, Hanser 1981. 369 S.
Leicht lesbare, zuweilen etwas geschwatzige Einfiihrung. Berucksichtigung von Managementtiberlegungen
Prague, C.N. et al.: Programming with Paradox, TAB BOOKS Inc. 1987,386 S.
Ftihrt anhand betriebswirtschaftlicher Falle in das PC-Datenbanksystem Paradox ein. FUr Anfanger ohne Kenntnisse der Informatik
208 Literaturhinweise
Rishe, N.: Database Design Fundamentals, Prentice Hall 1988, 421 S.
Einfiihrung in den Datenentwurf und Abfragesprachen. Mit vielen Beispielen und gelosten Hillen
Simpson, A.: dBASE III Plus. Programmer's Reference Guide, SYBEX 1987, lO29 S.
Umfassendes Nachschlagewerk zu dBASE III Plus
Simpson, A.: Understanding R:Base System V, SYBEX 1987,499 S.
Praxisorientierte Einftihrung mit vielen Beispielen
Steiner, J.: Lotus 123. Version 2, Markt & Technik 1987,440 S.
Einfiihrung in das verbreitetste Tabellenkalkulationsprogramm auf PC's
Ullmann, J.: A Pascal Database Book, Oxford University Press 1985,332 S.
Einfiihrung in den Entwurf und die Implementation von Datenbanken. Das Buch geht von der Benutzersicht aus und fiihrt anhand sehr illustrativer Beispiele in die relationaIe Algebra und die Normalisierung ein. Der zweite Teil stellt die wichtigsten Algorithmen und Datenstrukturen der Implementation von Datei- und Datenbankoperationen in Pascal dar. Nicht immer leichte, aber folgerichtige und implementationsnahe Einftihrung
Ullman, J. D.: Principles of Database Systems, Computer Science Press 1982,484 S.
Anspruchsvoller Klassiker. Besonders fiir formal Interessierte
Ullman, J. D.: Database and Knowledge Base Systems, Vol. 1, Computer Science Press 1988,631 S.
Das zweibandige Werk ersetzt Ullman (1982) und integriert zwei neue Forschungsgebiete: wissensbasierte und objektorientierte Datenbanksysteme. Besonders fiir formal Interessierte
van der Lans, R. F.: Introduction to SQL, Addison-Wesley, 1988,348 S.
Einfiihrung in die von ISO (International Standards Organisation) standardisierte Version von SQL. Viele gelOste Aufgaben
Vetter, M.: Aufbau betrieblicher Informationssysteme mittels konzeptioneller Datenmodellierung, B. G. Teubner Stuttgart 1986,400 S.
Elementare, gut verstandliche Einftihrung in den Datenentwurf (vor allem auch in die Normalisierung). Dateiorganisation und Datenbanksysteme werden kaum behandelt
Literaturhinweise 209
Vinek, G., Rennert, P. F., Tjoa, A.: Datenmodellierung: Theorie und Praxis des Datenbankentwurfs, Physica-Verlag 1982,305 S.
Einftihrung in den Datenentwurf mit Betonung des Re1ationenmodells und theoretischer Aspekte der Datenmodellierung. Das Buch enthiilt insbesondere eine ausftihrliche Darstellung von Algorithmen zur Theorie der Normalisierung. Fur formal Interessierte
Yannakoudakis, E. J.: The Architectural Logic of Database Systems, Springer 1988, 318 S.
Eher theoretisch orientierte Einftihrung in den Entwurf und die Verwaltung von Datenbanken. Aspekte der physischen Implementation werden nur am Rande behande1t.
212 Software
a) Leroprogramme zu Paradox uod dBASE
Zu den dBASE und Paradox bieten verschiedene Softwarehiiuser Lernprogramme an. Der folgende Anbieter verkauft Lernprogramme zu beiden Paketen:
American Training International, Inc. 12638 Beatrice Street Los Angeles, California 90066 (213) 823-1129
1) AT! Training Power, dBASE III Plus, 2 Disketten 2) AT! Training Power, Paradox, 2 Disketten
b) Turbo Pascal Database Toolbox
Die Diskette enthiilt Pascal-Prozeduren im Quelltext. Zusammen mit der Dokumentation erlaubt der Quelltext den Nachvollzug einer indexsequentiellen Dateiverwaltung nach dem B+ Baum-Verfahren. Das Paket eignet sich zur Ergiinzung der einfachen Einfiihrung von Kapitel 2.
Heimsoeth Software GmbH & Co. KG Lindenwurmstrasse 88 D-8000 MUnchen 2
Index
A
abhangige Attribute, 71 Abhangigkeit, 64 Adressverweis, 130 algorithmischer Entwurf, 102 alphanumerisch, 6 Alphanumerische Daten,S Andern der Satzstruktur, 49 Andern von Satzen, 49 Anforderungen an Datenbanksysteme, 140 Anomalien,58 Applikationsgenerator,l00 Arbeitsdatei,7 ASCII-Code, 154 Attribute, 3 Ausgabedatei,7
B
Basistabellen, 119 befehlsgesteuerte Abfragesprache, 127 Befehlsschnittstelle, 46 Befehlsschnittstellen, 99 Berichtsdatei, 7 Berichtsgenerator, 100 Bewegungsdatei, 7 Beziehungen, 61, 65 Beziehungsintegritat, 128 Bilddaten,5
D
Data Dictionary, 102 Datei,5 Dateipuffer, 15 Dateiverwaltung,45 Daten, 3 Datenbankstrukturdiagramm, 61
214 Index
Datenbankverwaltung, 45 Datendeklarationen,101 Datenentwurf, 102 Datenintegritiit, 140 Datenkompatibilitiit, 140 Datenmodelle, 117 Datenmodellierung, 117 Datenschutz, 140 Datensicherheit, 140 Datentyp,3 dBASE, 148 - 149, 151 direkt adressierbare Speicher, 15 direkte Beziehungen, 62 Divisionsrestverfahren, 27
E
Eindeutigkeit, 118, 126 Einfiigen von Siitzen, 49 Eingabe-/Ausgabedatei,7 Eingabedatei, 6 eingebaute Programmiersprachen, 99 Endbenutzerwerkzeuge, 45 Entitiitsintegritiit, 128 Ergebnistabellen, 119 Errichten einer Datei, 7 exakter Vergleich, 87 externer Dateiname, 17 Externspeichern,15
F
Felder, 6 Formatierte Dateien, 6 Fortschreiben einer Datei, 8 Fremdschliissel, 63 Funktionen, 102
G
Grundoperationen, relation ale, 119 Gruppenbruch,35
H
Hashfunktion, 27 hierarchisch, 129
I
Identiflkationsschliissel, 29, 63 Implementation, 130 Index, 29 indirekte Beziehungen, 62 indizierte, 29 Internspeicher, 15 interpretierende Programmierumgebung, 100 invertierte Datei, 29
K
Katalog, 126 Kollisionen, 28
L
LOschen von Siitzen, 49
M
Makros, 101 Mehrbenutzerbetrieb, 140 mehrdeutiger Schliissel, 29 Meniischnittstelle, 46 Meniischnittstellen, 99 Mustervergleich, 87
N
nichtprozedurale Abfragesprache, 84, 122 Normalisierung,6O Nullwerte, 127 Numerische Daten, 4
Index 215
216 Index
o Objekttypen, 117 Offnen von Dateien, 17,47
p
Paradox, 145, 147 Primiirind.ex, 29 Primarschliissel, 70 Programmdatei, 7 Programmiersprachen, 45 Projektion,120 prozedurale Abfragesprache, 84 Prozeduren, 10 1
Q Query by Example, 84
R
Recovery, 140 redundante Daten, 29, 56, 58 - 59 redundante Schliisselfelder, 68 Relation, 117 relativ organisierte Datei, 27
s Satz,5 Satzpuffer, 16 Schliessen von Dateien, 17, 47 Schliissel, 29 Schliisselkandidaten, 70 Scripts, 101 Sekundarind.ex,29 Selektion, 119 Selektionskriterien, 84 sequentiell organisierte Dateien, 16
sequentielle Speicher, 15 Sprachdaten, 5 SQL,122 Starnmdatei,7 Steuerzeichen, 6 strukturierte Programmierung, 101 Stlickliste, 74 Suchen,8
T
Tabellenkalkulationsprogramme, 91 Tabellenskelett, 84 Textdateien, 6 Transaktion, 128
u Uberlauforganisation, 28
v Verbindungstabelle, 64 Verbund, 121 Verbundattribut, 121 Verbundattribute,83 verkettete Datei, 29
w Wertebereich, 3, 65 Wiederholungsgruppen, 57
z Zellen,27 zusammengesetzter Schltissel, 48
Index 217
top related