72
Anhang A Die Dateobaoksysteme Paradox nod dBASE

Anhang A Die Dateobaoksysteme Paradox nod dBASE978-3-642-97170-9/1.pdf · 144 Die Datenbanksysteme Paradox und dBASE 1 Ubersicht Die folgenden Kurzbeschreibungen enthalten nur einen

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Anhang A

Die Dateobaoksysteme Paradox nod dBASE

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 Program­miersprache 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 Winkelklam­mem 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 eine­bestehende 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 erforder­lich.

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 ldentifi­kationsschliissel) 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 Be­dingungsoperatoren)

• 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 ein­zelnen 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 Argu­ment schliesst die laufende Datei, ohne eine neue zu offnen. Mit dem Schliessen einer Datei werden gelinderte Siitze vom Dateipuffer des Hauptspeichers auf den Ex­temspeicher 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 be­stimmten 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 in­dizierten 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 ge­loscht werden

3.15 Datei umbenennen: RENAME

• RENAME alterName TO neuerName iindert den N amen einer Datei. Wird kein Da­teityp 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 Satz­struktur 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 Aus­druckl [, Feld2 WITH Ausdruck2 ... ] [RANDOM] ftihrt mit Satzen aus der Bewe­gungsdatei 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.

Anhang B

ASCII-Code

154 ASCII-Code

ASCII-Code

Der ASCII-Code (American Standard Code for Information Interchange) wurde ent­wickelt, 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 dezi­malen Aquivalenten der Bitfolgen zu. Die Bitfolge 101 0000 entspricht zum Beispiel der Dezimalzahl80 (24+26=80) und wird yom ASCTI-Code als Buchstabe P interpre­tiert.

Der Programmierer verwendet den ASCTI-Code unter anderem zur Steuerung von pe­ripheren 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 Bei­spiel 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 hori­zontalen 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)

Anhang C

Glossar

158 Glossar

Abfragesprache (eng!. query language): Endbenutzerorientierte Sprache zur Gewin­nung von Informationen aus Datenbanken (¢ prozedurale Abfragesprache, ¢ nichtpro­zedurale Abfragesprache)

Abhangigkeit, funktionale (eng!. functional dependency): Begriff aus der Normalisie­rungslehre, 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 ausge­wahlte Zeichen auf Bitfolgen abbildet. Ein Teil dieser Zeichen Hisst sich mit Ausgabe­geraten 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 Be­nutzer 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 Re­lationenmodell werden Beziehungen zwischen zwei Tabellen tiber ein Attribut herge­stellt, das in heiden Tabellen vorkommt.

Beziehungsintegritiit (engl. referential integrity): FUr eine Datenbank gilt die Bezie­hungsintegritat, wenn zu jedem ¢ Fremdschltisselwert ein pas sender ¢ Primarschltis­seIwert existiert (¢ Entitatsintegritat).

Data Dictionary (Katalog): Tabelle, die Name, Datentyp, Lange, Kurzbeschreibung und andere interessierende Informationen flir jedes Dateielement enthiilt. Das Data Dic­tionary ist Grundlage flir den ¢ Datenentwurf.

Datei (engl. file): Benannte Folge von ¢ Satzen, auf denen Zugriffsoperationen defi­niert 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 Leseoperatio­nen 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 be­stimmten Dateiklasse angibt. Die Erweiterung "TXT" in "BERICHT.TXT" kennzeich­net 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 ¢ Datenbankverwaltungssy­stemen nur die Verwaltung isolierter Dateien erlaubt

Datenabhangigkeit: Abhangigkeit der Benutzerprogramme von Anderungen der Da­tenbankstruktur (¢ Datenunabhangigkeit)

Datenbankstrukturdiagramm: Grafik, welche die Beziehungen zwischen den Objekt­typen einer Datenbank visualisiert

Datenbanksystem: Gruppe von Programmen, die notig sind, urn eine Datenbank ein­zurich ten und zu benutzen.

Datenbankverwaltungssystem (engl. Data Dase Management System, DBMS) ¢ Da­tenbanksystem

Datenformat: Form, in der Informationen dargestellt werden. Eine gebrauchliche Klas­sifikation unterscheidet zwischen numerischen, ¢ alphanumerischen, Bild- und Sprach­daten.

160 Glossar

Datenkompatibilitat: Austauschbarkeit von Daten verschiedener Softwaresysteme

Datenschutz: Schutz von Daten vor unberechtigtem Zugriff

Datenunabhingigkeit: Mfiglichkeit, die logische Gesamtsicht und/oder die physikali­sche Struktur zu lindern, ohne dass die Datensicht der Anwendungsprogramme gelin­dert 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 End­benutzer ohne Programmierkenntnisse einfach bedient werden kfinnen. Beispiele: Text­verarbeitungs- 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 er­laubten 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 In­formation 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 defi­nierten Schema vorstrukturiert.

Fremdformate: Datenformate, die in Programmen fremder Software-Anbieter vor­kommen. Die meisten Datenbanksysteme erlauben die Konversion von Tabellen in ge­brauchliche Fremdformate und umgekehrt. PARADOX erlaubt zum Beispiel den Import von dBASE-Tabellen und den Export von PARADOX-Tabellen in dBASE­Format.

Glossar 161

Fremdschliissel (engl. foreign key): Attribut, das in einer anderen Tabelle ¢Identifi­kationsschliissel 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 Zu­griffsmethode fiir grosse Datenbestande

Identifikationsschliissel (¢ Schliissel): Attribut, das einen Satz eindeutig kennzeich­net (¢Fremdschliissel)

indizierte Datei: Datei mit mindestens einem Inhaltsverzeichnis (¢ Index, indizieren)

Index: Datei, die fiir jeden in der Hauptdatei vorkommenden Wert des gewahlten In­dexattributs 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 aus­serhalb 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 ver­meiden (¢ Anomalie).

Katalog (engl. dictionary): ¢ Data Dictionary

Kollision: Situation, in dereine Hash-Funktion flir zwei Satze mit verschiedenen Iden­tifikationsschliisseln die gleiche Adresse ergibt

MOdulo-Operator: Operator, der den den Rest einer ganzzahligen Division ergibt. Bei­spiel: 5 mod 2 ergibt als Rest 1.

Netzwerkmodell: Datenmodell, das starker als das ¢ Relationenmodell auf die physi­sche 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 ledig­lich das gewiinschte Ergebnis, ohne darauf einzugehen, wie das Ergebnis am effizien­testen 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, feh­lende 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 Abfrage­sprache fdr relationalen Datenbanken, in welcher der Benutzer die gewiinschten Ergeb­nisspalten 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 Spe­zialfall 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 ¢ Re­lationen 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 (¢ Datei­puffer)

Schliissel: Eines oder mehrere ¢ Attribute, nach denen Satze identifiziert, sortiert, in­diziert 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 Er­gebnistabelle aufnimmt, welche die Selektionsbedingung erftillen

sequentiell organisierte Datei: Datei, in der man gezwungen ist, hintereinander (sequen­tiell) 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 stand­ardisierte 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, anders­wo speichert (¢ Hash-Funktion, Kollision)

Verbund (engl. join): Relationale Grundoperation zwischen Tabellen. Eine gebrauch­liche 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 glei­chenSatz

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 Zugriffsmecha­nismus gelesen oder geschrieben werden kann

Anhang D

Losungen zu den Aufgaben

166

Bemerkung zu den LOsungen in dBASE und Paradox: Da MS OOS-Dateinamen ohne Dateierweiterung hOchstens 8 Zeichen umfassen diirfen, erscheinen in den Auf­gabenlosungen im Gegensatz zu den Ausftihrungen im Hauptteil abgekiirzte Tabellen­namen.

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 Bei­spiel eine geschweifte Klammer des ASCII-Code durch a ersetzt, erscheint a nieht unmittelbar nach a. Flir den unveranderten ASCII-Code geschriebene Sortierpro­gramme 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 Li­teraturverwaltungssystemen, 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 Un­terprogrammen 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 Binde­vorgangs (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 nachfol­gende 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 posi­tioniert 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 dekla­riert. Variablen dieses Typs k6nnen so nur die Zahlen von 1 bis und mit 12 anneh­men.

• 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 Record­nummer 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 Schllisselfel­des mit * wwend der Generierung bzw. Neustrukturierung (vgl. Aufgabe 3.4) der Da­tenbank. 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 Bedin­gungen:

• 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 Vor­kommen geandert werden.

4) Das Attribut Adresse hlingt nur von einem Teil der zusammengesetzten Identifika­tion 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 Aus­gangstabelle 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 Schliis­sels 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 Fremd­schliissel 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)

LOsungen zu Kapite14 189

b)

Patient Schwester

Operation Medikament

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" schrei­ben)

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 Stunden­zahl: 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 zusatzli­chen 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 Kom­mastellen. 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 ein­setzen (F5 und zorn Beispiel "Nummer" in das FeldNummer schreiben) 6) F2 vereinigt die beiden Tabellen iiber das Verbindungsfeld, wlihlt die gewiinsch­ten 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)

198 Ulsungen zu Kapitel6

Losungen zu Kapitel 6

(keine Musterlosungen)

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 er­stellt 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 Verbin­dungs 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 Ef­fizienzgriinden 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 Bei­spiel "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 At­tribut 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 Ver­bundoperationen konnen dann effizienter ausgeftihrt werden.

AnhangE

Literaturhinweise

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 Fallstu­dien

Bradley, J.: File and Data Base Techniques, Holt, Rinehart and Winston 1982. 562 S.

Umfassende Einftihrung. Beispiele in PUI. Ausftihrliche Behandlung der Dateiorga­nisation und des CODASYL-Modells. Aufgaben. Fiir Interessierte

Carlton, T. W., Stewart, C. 0.: dBASE ill Plus Applications Library, QUE Corpora­tion Indianapolis 1986.622 S.

Beschreibung der Implementation verbreiteter betriebswirtschaftlicher Datenbankan­wendungen in dBASE ill Plus (Personalverwaltung, Verkaufsstatistik, Haupt- und Ne­benbuchhaltungen). 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 Krite­rien, 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 kauf­mannischen Bereich. Schwerpunkt auf der Verarbeitung sequentiell, relativ und indi­ziert 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 Interes­sierte

Hansen, H. R.: Wirtschaftsinformatik 1,5. Auflage, Gustav Fischer (UTB Taschenbti­cher) 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 Pu­blishing 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 Mana­gementtiberlegungen

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 ge­losten 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 relationa­Ie Algebra und die Normalisierung ein. Der zweite Teil stellt die wichtigsten Algorith­men und Datenstrukturen der Implementation von Datei- und Datenbankoperationen in Pascal dar. Nicht immer leichte, aber folgerichtige und implementationsnahe Einftih­rung

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 Forschungsge­biete: 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 Daten­modellierung, 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 Daten­bankentwurfs, Physica-Verlag 1982,305 S.

Einftihrung in den Datenentwurf mit Betonung des Re1ationenmodells und theoretischer Aspekte der Datenmodellierung. Das Buch enthiilt insbesondere eine ausftihrliche Dar­stellung 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 Daten­banken. Aspekte der physischen Implementation werden nur am Rande behande1t.

AnhangF

Software

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 Dokumenta­tion erlaubt der Quelltext den Nachvollzug einer indexsequentiellen Dateiverwaltung nach dem B+ Baum-Verfahren. Das Paket eignet sich zur Ergiinzung der einfachen Ein­fiihrung 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