Wirtschaftsinformatik - Fakultät Informatik/Mathematik

Werbung
Wirtschaftsinformatik
Skript zur Lehrveranstaltung
Hartmut Fritzsche
Hochschule für Technik und Wirtschaft Dresden
Fachbereich Informatik/Mathematik
18. Juni 2003
2
INHALTSVERZEICHNIS
Inhaltsverzeichnis
1 Grundlagen der Datenorganisation
3
1.1 Motivation: Speichern und Wiederfinden . . . . . . . . . . . . . . . . . . . . . . . .
3
1.2 Datenbanksysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2 Einführung in das relationale Datenmodell
4
2.1 Strukturteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.2 Operationsteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3 Speicherungs- und Zugriffsmechanismen in dBASE
6
3.1 Visual dBASE 5.5 – Benutzeroberfläche . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2 Datendefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3 Auswerten, Modifizieren und Löschen von Tabellen . . . . . . . . . . . . . . . . . .
8
3.4 Sortieren und Indizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
4 Programmentwicklung mit dBASE
14
4.1 Gestaltung von Anwendungsoberflächen . . . . . . . . . . . . . . . . . . . . . . . .
14
4.2 Arbeit mit Generatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
4.3 Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
5 Datenmodellierung (logischer Datenbankentwurf )
21
5.1 Das Entity-Relationship-Modell (ERM) . . . . . . . . . . . . . . . . . . . . . . . .
22
5.2 Schlüsselarten / Anforderungen an den Schlüsselaufbau . . . . . . . . . . . . . . .
22
5.3 Entwurf von Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
6 Datenbankorganisation
27
6.1 Architektur von Datenbanksystemen . . . . . . . . . . . . . . . . . . . . . . . . . .
27
6.2
Überblick zu Datenbankmanagementsystemen . . . . . . . . . . . . . . . . . . . . .
28
6.3 Konsistenz und Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
7 Datensicherheit und Datenschutz
28
7.1 Datensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
7.2 Datenschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
8 Kommunikationssysteme
29
8.1 Technisch-technologische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . .
29
8.2 Kommunikationsdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Glossar
31
Literatur
32
3
1
Grundlagen der Datenorganisation
1.1
Motivation: Speichern und Wiederfinden
Die Datenverwaltung in Anwendungssystemen erfolgt grundlegend nach folgenden Gesichtspunkten:
• statisch vs. dynamisch
Ist der für Datenobjekte benötigte Speicherplatz zur Programmierzeit bekannt,
spricht man von statischen Datenstrukturen. Für statisch zu verwaltende Daten
stellt der Compiler zur Übersetzungszeit Speicherplatz bereit.
Ist die Kardinalität der Datenobjekte zur Programmierzeit nicht bekannt, muß
Speicherplatz zur Laufzeit bereitgestellt werden. In diesem Fall spricht man von
dynamischen Datenstrukturen.
• extern vs. intern
Die Bezeichnung intern“ bezieht sich auf Hauptspeicher und Register, mit ex”
”
terner“ Speicherung ist die Verwaltung der Daten auf Festplatte, CD-ROM, DVD
usw. gemeint.
• Einzelnutzer vs. Mehrnutzer
Dynamisch verwaltete, nicht-elementare Datenbestände können auf unterschiedliche Art und Weise organisiert sein. Beispiele sind: Ungeordnete Folge, geordnete Folge, (binärer) Baum, gerichteter/ungerichteter Graph, Hash-Tabelle. B*-Bäume sind spezielle Bäume, bei denen die Informationen ausschließlich in Blattknoten liegen. Entsprechend der Organisationsform gibt es unterschiedliche Verfahren der Verarbeitung (sequentiell, binär, direktes u. indirektes Hash-Verfahren),
die auf grundlegenden Zugriffsarten (sequentiell, wahlfrei, indexsequentiell, assoziativ) basieren.
Die Reihenfolge der Verarbeitung kann vorbestimmt (z.B. sequentiell) oder frei wählbar sein.
Basisoperationen für die Verarbeitung sind
• das Einfügen eines Elementes in die Datenbasis
• das Suchen eines bestimmten Elementes in der Datenbasis
• das Entfernen eines Elementes aus der Datenbasis
1.2
Datenbanksysteme
Ein Datenbanksystem (DBS) umfaßt eine oder mehrere Datenbasen bzw. Datenbanken (DB) und
ein Datenbankmanagementsystem (Data Base Management System, DBMS):
DBS = DB + DBMS
Datenbankmanagementsysteme (DBMS) werden auch als Datenbankbetriebssysteme bezeichnet.
Datenbanksysteme sind eine spezielle Art von Informationssystemen, die Daten speichern und
zentral verwalten. Ziel ist die Gewährleistung einer weitgehenden Unabhängigkeit der Daten von
den mit ihnen arbeitenden Programmen bzw. Benutzern. Es wird zwischen einer physischen und
einer logischen Datenunabhängigkeit unterschieden. Unter logischer Datenunabhängigkeit versteht
man, daß die anwendungsbezogene Sicht auf die DB losgelöst von der logischen Gesamtstruktur
existiert. Die globale Struktur soll änderbar sein, ohne lokale Anwendungen ändern zu müssen.
Fritzsche, Wirtschaftsinformatik
4
2 EINFÜHRUNG IN DAS RELATIONALE DATENMODELL
Wesentliche Arten von DBS sind hierarchische DBS (HDBS), Netzwerk–DBS, relationale DBS
(RDBS) und objektorientierte DBS (OODBS). In der Paraxis dominieren derzeit RDBS. OODBS
sind gegenwärtig noch Forschungsgegenstand, gewinnen aber zunehmend auch Bedeutung für die
Praxis.
Beispiele für
• hierarchische DBS: IMS (IBM), DB2
• Netzwerk–DBS: IDMS
• relationale DBS: INGRES, ORACLE, ACCESS, dBASE, SYBASE
• objektorientierte DBS: O2, ORION/ITASCA, POET, UniSQL
In der Lehrveranstaltung werden relationale Datenbanksysteme am Beispiel von Visual dBASE
5.5 behandelt.
2
Einführung in das relationale Datenmodell
Die mathematische Grundlage für RDBS bildet das Relationenmodell von E.F. Codd (1970). Das
Relationenmodell umfaßt einen Strukturteil und einen Operationsteil. Der Strukturteil enthält
Beschreibungen von Objekttypen auf der Basis von Relationenschemata. Der Operationsteil beschreibt einen Satz von Operationen für Anfragen und Modifikationen. Es werden zwei Beschreibungsmittel unterschieden:
- die Relationenalgebra
- die Normsprache SQL
2.1
Strukturteil
Bei der Beschreibung von wirklichen oder gedachten Gegenständen wird eine objektzentrierte
Sicht verfolgt (im Unterschied z.B. zu einer prädikatzentrierten Sicht, die bei der logikorientierten
Programmierung zugrundegelegt wird):
Ein Objekt ist etwas, über das etwas ausgesagt werden kann. Objekte besitzen Ausprägungen
für Attribute (d.h. Merkmale). Die Struktur eines Objektes ergibt sich, indem man dem Objekt
eine Reihe von Attribut – Wert – Paaren zuordnet. Mögliche Ausprägungen (Merkmalswerte oder
kurz Werte) eines Attributs sind jeweils aus einem Wertebereich entnommen.
Beispiel: Sei Objekt1 das Buch Objektorientierte Datenbanken ... “ von Andreas Heuer.
”
Objekt
Attribut
Wert
———————————————————Objekt1
+ ISBN
– 3-83319-315-4
+ Autor – Andreas Heuer
+ Titel – Objektorientierte Datenbanken
+ Verlag – Addison-Wesley
Ein Objekttyp ist durch eine Menge von Attributen mit entsprechenden Wertebereichen charakterisiert.
Ein Relationenschema R umfaßt die Objekttypbezeichnung sowie die Attribute und deren Wertebereiche.
2.2 Operationsteil
5
Eine Relation r(R) ist – mathematisch definiert – eine Teilmenge des kartesischen Produktes über
den Wertebereichen von R. Ein Element einer Relation heißt Tupel. Eigenschaften einer Relation:
• keine mehrfachen Tupel
• keine festgelegte Reihenfolge der Tupel
• Attributwerte sind atomar (sog. 1. Normalform)
Attributwerte sind atomar“, wenn sie einem Objekttyp angehören, der nicht wieder in Form eines
”
Relationenschemas beschrieben wird, also in diesem Sinne der Objektbeschreibung nicht weiter
zerlegbar ist.
Eine Basisrelation ist die in der Datenbank aktuell vorhandene Relation zu einem Relationenschema. Die Datenbank ist die Menge aller Basisrelationen. Das Datenbankschema ist die Menge
aller Relationenschemata einer Datenbank.
Relationen werden im Zusammenhang mit RDBS in Form von Tabellen dargestellt. In der Datenbankterminologie gelten in diesem Sinne folgende Entsprechungen:
Relation – Tabelle
Attribut – Spalte
Tupel – Datensatz bzw. Zeile
Wertebereich – Domäne
Als Grad wird die Anzahl der Attribute einer Tabelle bezeichnet. Mit dem Begriff Kardinalität
wird die Anzahl der Datensätze, d.h. der Zeilen bezeichnet.
2.2
Operationsteil
Verbreitete Beschreibungsmittel für Operationen sind die Relationenalgebra und die Normsprache
SQL (Standard Query Language).
Relationenalgebra Es wird ein Satz von Grundoperationen definiert:
- Selektion: σ
- Projektion : π
- (natürlicher) Verbund: ./
- Mengenoperationen: ∪, ∩, \
- Umbenennung: β
Ergebnisse von Operationen sind jeweils wieder Relationen. Die Operatoren definieren eine relationale Algebra zur Bearbeitung von Objekten.
Selektion (auch: Restriction)
Wählt Tupel (Zeilen) aus einer Relation (Tabelle) entsprechend einer Selektionsbedingung aus. Selektionsbedingung kann sein:
Fritzsche, Wirtschaftsinformatik
6
3 SPEICHERUNGS- UND ZUGRIFFSMECHANISMEN IN DBASE
• Attribut – Konstanten – Vergleich
• Attribut – Attribut – Vergleich
• Verknüpfung von Selektionsbedingungen durch Operatoren ∧, ∨, ¬
Projektion
Wählt Attribute (Spalten) aus einer Relation (Tabelle) entsprechend einer Projektionsbedingung aus.
Achtung: Durch Projektion können Tupel entstehen, die sich nicht mehr unterscheiden.
Duplikate werden in der Ergebnisrelation eliminiert!
(natürlicher) Verbund (auch: Join)
Der natürliche Verbund verknüpft Relationen über allen gemeinsamen Attributen. Nur
Tupel mit gemeinsamen gleichen Attributwerten werden zu neuen Tupeln verbunden.
Mengenoperationen lassen sich auf Relationen anwenden, die das gleiche Relationenschema besitzen.
Durch Umbenennen können Relationenschemata für eine (spätere) Verknüpfung kompatibel gemacht werden. Beispiel: Umbenennen der Attributbezeichnung Wohnort in Ort.
SQL Die Normsprache SQL (Standard Query Language) unterstützt unterschiedliche Arten von
Operationen:
• Definition von Relationenschemata
• Erzeugung von Zugriffspfaden
• Anfragen
• Datenmanipulationen
Hier wird nur der Anfrage-Teil besprochen. Eine SQL-Anfrage besteht aus einem sog. SFW-Block:
SELECT . . .
FROM . . .
WHERE . . .
Semantik:
1. Kart. Produkt der Relationen hinter FROM mit dem Relationsnamen als Präfix
2. Anwendung der Bedingungen der WHERE-Klausel auf das Ergebnis der FROM-Klausel
3. Projektion auf die Attribute der SELECT-Klausel
3
3.1
Speicherungs- und Zugriffsmechanismen in dBASE
Visual dBASE 5.5 – Benutzeroberfläche
Die Benutzeroberfläche des Systems dBASE 5.5 enthält die für Microsoft Windows typischen
Elemente. Die Anwendung präsentiert sich nach dem Starten in einem Fenster mit Titelleiste ( Vi”
sual dBASE“), Menüleiste, Symbolleiste, Arbeitsfläche und Statuszeile. Die Arbeitsfläche enthält
3.2 Datendefinition
7
nach dem Starten von dBASE zwei Fenster: Das Regiezentrum und das zweigeteilte Befehlsfenster.
Regiezentrum
Der obere Bereich dient der permanent möglichen Einstellung des aktuellen Arbeitsverzeichnisses.
Links unten kann die Auswahl des gewünschten Dateityps erfolgen (hier: Tabellen). Der rechte
untere Teil ist für die Anzeige und die Auswahl der zum Datentyp gehörenden Dateien vorgesehen.
Visual dBASE unterscheidet bei der Arbeit mit Dateien zwei Modi: Entwurfsmodus und
Ausführmodus. Im Entwurfsmodus werden Voraussetzungen für die Dateinutzung geschaffen,
z.B. durch die Strukturdefinition von Tabellen. Im Ausführmodus erfolgen Anwendungen, z.B.
die Eingabe/Änderung von Datensätzen in Tabellen.
Visual dBASE verfügt über eine Befehlssprache. Befehle können über den Eingabebereich – d.h.
den oberen Teil – des Befehlsfensters eingegeben werden. Ausgaben werden im unteren Teil des
Befehlsfensters präsentiert. Obwohl viele Befehle auch über das Regiezentrum selektiert werden
können, hat die explizite Nutzung von Befehlen auch Vorteile.
3.2
Datendefinition
Die Definition von Tabellen erfolgt in Visual dBASE entweder über das Regiezentrum mittels des
Designers“ im Entwurfsmodus oder mit Hilfe des Befehls CREATE über den Eingabebereich des
”
Befehlsfensters.
CREATE
dateiname
Semantik: Eine das Relationenschema repräsentierende Datei wird im aktuellen Verzeichnis
angelegt. Die Extension dbf wird vom DBMS automatisch dem Dateinamen
zugefügt. Über eine bei Ausführung des Befehls erzeugte Eingabemaske kann die
Struktur definiert werden. Der Dateiname bezeichnet den Objekttyp.
Bevor eine Tabelle gefüllt“ werden kann, sind die Attribute mit ihren jeweiligen Wertarten und
”
Wertebereichen festzulegen. Die Attribute einer Relation entsprechen Feldern einer Tabelle. Diese
werden mit Feldnamen benannt. Feldnamen müssen innerhalb einer Datei eindeutig sein und
können maximal 10 Zeichen lang sein. Als Zeichen sind erlaubt: Buchstaben, Ziffern und das
Zeichen _.
Die Wertarten und Wertebereiche werden durch Datentypen definiert. Die wichtigsten Datentypen
(Feldtypen) sind:
• Zeichenketten (können Buchstaben, Ziffern und Sonderzeichen enthalten, maximal 254 Zeichen)
Es wird zwischen Groß- und Kleinbuchstaben unterschieden (d.h., die Erfassung ist Case”
sensitiv“)!
• Festkommazahlen (maximal 20 Zeichen inclusive Vorzeichen, Dezimalpunkt und Nachkommastellen)
• Gleitkommazahlen (werden intern auf Festkomma zurückgeführt)
• Datum (in der Form tt.mm.jj)
• Logisch (1 Zeichen, T oder Y für wahr und F oder N für falsch)
Fritzsche, Wirtschaftsinformatik
8
3 SPEICHERUNGS- UND ZUGRIFFSMECHANISMEN IN DBASE
3.3
Auswerten, Modifizieren und Löschen von Tabellen
Jede Arbeit mit einer erzeugten Tabelle setzt voraus, daß die Tabelle zunächst aktiviert, d.h.
geöffnet wird. Das Öffnen erfolgt bei Ausführung des Befehls USE.
USE
dateiname
Die Tabelle steht danach solange für die Arbeit zur Verfügung, bis eine andere Tabelle aktiviert
oder die Dateiarbeit durch den Befehl USE (ohne Parameter) beendet wird bzw. bis die Nutzung
von Visual dBASE beendet wird.
Zum Anzeigen von Datensätzen im Ausgabebereich des Befehlsfensters können die Befehle LIST
oder DISPLAY mit verschiedenen Parametern genutzt werden.
DISPLAY
ALL
DISPLAY
ALL feldname
DISPLAY
ALL feldnamenliste
DISPLAY
ALL FOR bedingung
DISPLAY
DISPLAY
RECORD n
Anzeigen der Feldwerte aller Datensätze und aller
Datenfelder der aktivierten Relation
Anzeigen der Feldwerte aller Datensätze für
ein Datenfeld (Attribut) der aktuellen (d.h. aktivierten
Relation
Anzeigen der Feldwerte aller Datensätze für die in
feldnamenliste aufgeführten Datenfelder
Anzeigen der Feldwerte aller Datenfelder für die
Datensätze, für die die Bedingung den Wert true
annimmt.
Bei FOR wird immmer am Tabellenanfang begonnen,
auch wenn die Angabe ALL fehlt.
Anzeigen aller Feldwerte des n-ten Datensatzes
(ohne Parameter) Anzeigen aller Feldwerte des
aktuellen Datensatzes“
”
feldnamenliste ist eine durch Kommata getrennte Aufzählung von Feldnamen:
feldnamenliste
→ feldname { , feldname }
Jeweils ein Datensatz (ein Tupel) der aktiven Relation ist zu einem bestimmten Zeitpunkt der
aktuelle Datensatz“. Unmittelbar nach dem Aktivieren einer Relation ist der 1. Datensatz der
”
aktuelle Datensatz.
Die Struktur einer Tabelle kann mittels DISPLAY STRUCTURE angezeigt werden.
Die Wirkung mancher Befehle hängt vom globalen dBASE–Systemstatus ab, der u.a. durch die
Stellungen bestimmter Schalter bestimmt wird. Ein Schalter ist eine Variable vom Typ boolean.
Mit Hilfe des SET–Befehles können Schalterzustände geändert werden. Auf diese Weise kann die
globale Arbeitsumgebung des DBMS den Nutzerwünschen angepaßt werden.
DISPLAY STATUS
SET
schalter ON|OFF
Anzeigen der Systemumgebung
Schalter ON/OFF setzen
Beispiel:
SET EXACT ON
SET EXACT OFF
Auswertung der Schalterstellung in Vergleichsoperationen
3.3 Auswerten, Modifizieren und Löschen von Tabellen
9
Die Stellungen des Systemschalters EXACT bedeuten:
OFF: Vergleichsoperationen mit Zeichenketten erfolgen zeichenweise in der Länge des rechten
Operanden von links nach rechts bis der Wert des logischen Ausdrucks eindeutig bestimmt
ist.
ON : Es erfolgt ein exakter Vergleich. Ein Vergleich hat in diesem Fall dann den Wert true, wenn
die Zeichenketten gleich lang sind und die Zeichen an allen sich entsprechenden Positionen
gleich sind.
Die Aufbereitung von Ergebnissen im Ausgabebereich des Befehlsfensters sollte von einem leeren
Ausgabebereich ausgehen.
CLEAR
Löschen des Ausgabebereiches vom Befehlsfenster
Der Datensatzzeiger (Tupelpointer) verweist bei einer aktiven Relation auf genau einen Datensatz
(den aktuellen Datensatz“) oder auf die Position nach dem letzten Datensatz (diese Position
”
wird als EOF - End Of File - bezeichnet).
Der Datensatzzeiger kann mittels LOCATE bedingungsabhängig positioniert werden.
LOCATE FOR bedingung
sucht in einer Tabelle den ersten Datensatz, für den die bedingung erfüllt ist (d.h. den
Wert wahr liefert) und zeigt dessen Satznummer an. Der Datensatzzeiger wird auf
diesen Datensatz positioniert. Wurde kein Datensatz gefunden, für den die bedingung
wahr ist, erfolgt eine Meldung Ende des LOCATE-Bereichs im Ausgabebereich des
Befehlsfensters. Wurde ein Datensatz gefunden, kann dieser mittels DISPLAY angezeigt
werden (bei Ausführung von DISPLAY wird nichts angezeigt, wenn zuvor das Ende
des LOCATE-Bereichs erreicht wurde). Die Suche beginnt bei Angabe von FOR . . . am
Tabellenanfang.
CONTINUE
Fortsetzung der Suche nach einem weiteren Datensatz entsprechend der im letzten
LOCATE festgesetzten Bedingung und entsprechende Positionierung des Datensatzzeigers. Die Suche kann mit weiteren CONTINUE – Befehlen fortgesetzt werden, bis keine
Datensätze mehr in der Tabelle gefunden werden, die der Bedingung genügen. Der
CONTINUE – Befehl kann nur in Zusammenhang mit einem vorhergehenden LOCATE –
Befehl verwendet werden.
Der Datensatzzeiger kann mittels GO unbedingt positioniert werden.
GO satznummer
GO TOP
GO BOTTOM
Bei Angabe des Parameters satznummer erfolgt die Positionierung auf den angegebenen Datensatz. Mittels TOP wird auf den ersten und mittels BOTTOM auf den letzten
Datensatz einer Tabelle positioniert.
Fritzsche, Wirtschaftsinformatik
10
3 SPEICHERUNGS- UND ZUGRIFFSMECHANISMEN IN DBASE
SKIP
Mit SKIP erfolgt ein Übergang vom aktuell positionierten zum nächsten Datensatz.
EOF (end of file) in der Statuszeile zeigt an, daß der Datensatzzeiger hinter den letzten
Datensatz positioniert worden ist.
Zur Anzeige von beliebigen Daten einer aktivierten Relation kann der Befehl ? verwendet werden.
? [ ausdrucksliste ]
ausdrucksliste
→ ausdruck { , ausdruck } *
Jeder ausdruck der ausdrucksliste wird ausgewertet“ (d.h. es wird ein Wert berechnet)
”
und das Ergebnis wird im Ausgabefenster präsentiert. Die Ergebnisse der Ausdrucksauswertungen werden fortlaufend in einer Zeile dargestellt. Nach der Ausgabe erfolgt
ein Zeilenvorschub. Ist die ausdrucksliste leer, wird eine Leerzeile ausgegeben.
Innerhalb von Ausdrücken können
• Konstanten auftreten (Zeichenketten-, Zahl-, Datumskonstanten und logische
Werte)
• Bezugnahmen auf Attribute erfolgen
• Taschenrechnerfunktionen (+, -, *, ... ) ausgeführt werden
• Funktionen verwendet werden
• Teilausdrücke geklammert werden
Für Funktionen ist festgelegt, ob Parameter zu übergeben sind, und wenn ja, wieviele Parameter
und von welchem Typ diese sind. Funktionen liefern immer einen Wert.
Beispiele für Funktionen:
EOF()
LEN( string)
DATE()
DAY(datum)
liefert wahr, falls der Datensatzzeiger auf das Ende
der Tabelle zeigt (nicht auf den letzten Satz), und sonst falsch .
liefert die Länge von string als numerischen Wert.
liefert das aktuelle Datum.
liefert die Tageszahl im datum als numerischen Wert.
Anwendungen:
DAY(DATE())
liefert die Tageszahl im aktuellen Datum.
Modifizieren von Tabellen
Das Modifizieren der Struktur einer aktiven Relation erfolgt mittels MODIFY STRUCTURE. Die Tabelle muß zu diesem Zweck exklusiv geöffnet worden sein. Der Editor für die Strukturdaten wird
bei der Ausführung des Befehls geöffnet. Es können Spalten (Attribute) gelöscht, umbenannt oder
hinzugefügt werden. Außerdem können die Typen für Attribute geändert werden. Das Ändern von
Typen ist mit Datenverlust verbunden, wenn eine Typanpassung nicht problemlos durchgeführt
werden kann.
Die Änderung von Feldwerten einer aktiven Relation kann mittels REPLACE vorgenommen werden.
REPLACE feldname WITH feldwert FOR bedingung
REPLACE feldname WITH feldwert ALL
3.3 Auswerten, Modifizieren und Löschen von Tabellen
11
feldwert steht für einen Ausdruck, in dem auch Bezugnahmen auf vorhandene Feldwerte
erfolgen können. Der neue Feldwert ist das Ergebnis der Auswertung dieses Ausdrucks
und muß syntaktisch der Felddefinition genügen. Längere Zeichenketten werden rechts
abgeschnitten. Bei zu langen Zahlen werden Fehlerkennzeichen (Zeichen *) in das Feld
eingetragen. Das Ersetzen erfolgt im aktuellen Datensatz, wenn keine FOR-Klausel angegeben ist. Bei Angabe einer FOR–Klausel wird die REPLACE–Anweisung für alle
Datensätze ausgeführt, für die die bedingung wahr liefert.
Beispiele:
REPLACE umsatz WITH umsatz + 125
Der neue Feldwert wird in diesem Fall unter Bezugnahme auf den alten Feldwert berechnet.
REPLACE letztrech WITH DATE()
Zur Änderung von Datensätzen kann altenativ auch der Editor verwendet werden: Die Darstellung erfolgt bei Ausführung des EDIT–Befehles entsprechend der Einstellung im Tabellenlayout,
Formularlayout oder Maskenlayout.
EDIT [ satznummer ]
Die zeilenweise Erweiterung einer Tabelle um weitere Datensätze kann bei einer bereits aktivierten
Tabelle mittels APPEND erfolgen. APPEND öffnet wie EDIT den Editor.
APPEND [ BLANK ]
Anfügen von Datensätzen am Ende einer Tabelle
Bei Angabe von BLANK wird eine Leerzeile hinzugefügt.
Löschen von Datensätzen und Relationen
Das Löschen von Tupeln läuft in zwei Schritten ab:
- Tupel werden mittels DELETE mit einer Löschmarkierung versehen
- physisches Löschen aller markierten Tupel mittels PACK
DELETE
DELETE
DELETE
DELETE
RECORD n
NEXT n
ALL
FOR bedingung
Löschen des n-ten Datensatzes
Löschen Tupel ab Datensatzzeiger
Löschen aller Datensätze
Bei einer Anzeige (Befehl DISP) werden die markierten Datensätze mit * gekennzeichnet.
Löschmarkierungen können mittels RECALL wieder entfernt werden. Voraussetzung für
einen Rückruf ist, daß der Schalter DELETED auf OFF gesetzt ist.
Voraussetzung für das physische Löschen ist, daß der Schalter EXCLUSIVE auf ON gesetzt
ist.
Der DELETE – Befehl kann auch zum Löschen von Relationen (Tabellen) genutzt werden.
DELETE FILE filename
Als filename ist in diesem Fall der vollständige Dateiname anzugeben. In der Statuszeile
wird angezeigt, daß die Datei filename gelöscht wurde.
Fritzsche, Wirtschaftsinformatik
12
3 SPEICHERUNGS- UND ZUGRIFFSMECHANISMEN IN DBASE
Kopieren von Relationen
Alternativ zum Anzeigen eines Projektions- oder Selektionsergebnisses am Bildschirm kann dieses
auch einer zweiten Relation zugewiesen werden. Falls die Relation vor der Zuweisung bereits
existiert, wird der Inhalt überschrieben.
COPY TO tabellenname [FIELD attributnamenliste ] [FOR bedingung ]
COPY FILE dateiname1 TO dateiname2
Defaultwerte ist alle Attribute“ für den FIELD – Parameter und ALL für den FOR – Parameter.
”
In den Dateinamen dateiname1 und dateiname2 ist auch die Extension .dbf mit anzugeben. Im
Falle von COPY FILE darf die zu kopierende Datei nicht geöffnet sein.
COPY STRUCTURE TO tabellenname [FIELD feldnamenliste ]
In dieser Form kopiert der Befehl nur die Struktur einer (geöffneten) Tabelle, d.h. keine Datensätze.
Soll dann z.B. die Struktur der Kopie angezeigt werden, muß die Tabelle mit der Kopie zuvor
geöffnet werden.
3.4
Sortieren und Indizieren
Bisher ist eine Relation als sequentielle Folge von Tupeln verwendet worden, wobei die Reihenfolge der Tupel beim Einfügen bestimmt wurde. Bei der Auswertung von Tabellen ist es in der
Regel wünschenswert, von einer Ordnung der Datensätze bzgl. eines oder mehrerer Datenfelder
(Attribute) auszugehen. Eine solche Ordnung kann erreicht werden, indem eine sortierte Kopie
der Tabelle erstellt wird.
SORT ON feldname TO zieldateiname [ DESCENDING ]
Das durch feldname ausgewählte Feld wird als Schlüsselfeld bezeichnet. Über dem Wertevorrat
des Schlüsselfeldes muß eine Ordnungsrelation erklärt sein.
Sortierläufe umfangreicher Dateien können sehr lange (mehrere Minuten) dauern. Eine mittels
SORT ON sortierte Tabelle benötigt zusätzlich ebensoviel Platz auf dem externen Speicher wie
die unsortierte Tabelle.
Zeit- und platzgünstiger läßt sich eine Tabellenordnung durch Indizieren herstellen. Dabei wird
eine Indexdatei angelegt. Eine Indexdatei ist eine Teilkopie der zu ordnenden Datei. Sie enthält
Sätze mit nur einem Datenfeld und Verweisen (Zeigern) auf ein Tupel der Relation.
Das Indizieren bietet platzsparende Möglichkeiten zur Verwaltung mehrerer Dateiordnungen. Zum
Anlegen einer einfachen Indexdatei wird der INDEX-Befehl verwendet.
INDEX ON feldname TO indexdateiname
Der Befehl bewirkt das Anlegen einer Indexdatei für die aktuelle Arbeitsdatei.
Indexdateien können nur in Verbindung mit der Ausgangsdatei genutzt werden.
Beispiele:
INDEX ON ort TO iokunden
INDEX ON umsatz TO iukunden
3.4 Sortieren und Indizieren
13
Nach Ausführung eines INDEX ON–Befehles kann die Tabelle mit der gewählten Ordnung benutzt
werden, die alten Satznummern bleiben jedoch erhalten.
Als Index kann auch ein Ausdruck fungieren, in dem Felder verknüpft sind.
INDEX ON feldname {+feldname} TO indexdateiname
Beispiel:
INDEX ON STR(sumoffen)+DTOS(letztrech) TO indsumle
Die Funktion DOTS konvertiert ein Datum in einen String: {tt.mm.jjjj} −− > jjjjmmtt
Das Umschalten zwischen Ordnungen erfolgt mittels
SET INDEX TO indexdateiname {, indexdateiname }
SET INDEX TO
deaktiviert alle Indexe
Jeder Index auf einer Relation wird bei Änderungen vom DBMS nur dann automatisch angepaßt,
wenn er aktiviert ist.
Einfachindexdateien besitzen die Extension .ndx. Mehrfachindexdateien werden im Zusammenhang mit der Erzeugung der Struktur einer relation angelegt: Es kann steigend“ oder fallend“
”
”
spezifiziert werden. Mehrfachindexdateien besitzen die Extension .MDX.
Suchen in indizierten Dateien
Ein Sortierschlüssel kann auch als Suchschlüssel verwendet werden.
SEEK
suchausdruck
SEEK stellt den Datensatzzeiger auf den ersten Datensatz ein, dessen Schlüssel mit
dem suchausdruck übereinstimmt. Ist ein gesuchter Datensatz nicht vorhanden, wird
ein Hinweis Schlüssel nicht vorhanden“ angezeigt.
”
Verwendung von Speichervariablen
Unter einer Variablen versteht man einen Speicherplatz, der in einem Quellprogramm über einen
Namen angesprochen werden kann, der beim Compilieren des Quellprogramms im erzeugten Objektprogamm bereitgestellt wird, und der während der Abarbeitung des (übersetzten) Programms
– also im Verlaufe der Abarbeitung – nacheinander unterschiedliche Datenobjekte aufnehmen
kann. Das Eintragen eines Datenobjektes in den Speicherplatz nennt man eine Wertzuweisung.
Wertzuweisungen können
- durch Zuweisungsoperationen erfolgen, wobei der Wert aus anderen, im Programm bekannten
Werten errechnet wird oder
- durch Eingaben des Nutzers erfolgen.
Zuweisungsoperationen an Variablen können syntaktisch auf zwei unterschiedliche – in der Wirkung völlig gleiche – Arten ausgedrückt werden:
STORE ausdruck TO speichervariable
speichervariable = ausdruck
Fritzsche, Wirtschaftsinformatik
14
4 PROGRAMMENTWICKLUNG MIT DBASE
Der Wert von ausdruck wird berechnet und der Variablen speichervariable als Wert
zugewiesen. Ein evtl. vorhandener alter Wert wird dabei überschrieben. Die Wertzuweisung wirkt global. Variablen sind in dBASE nicht an einen bestimmten Datentyp
gebunden, man sagt, sie sind dynamisch getypt“.
”
Der enthält“–Operator
”
Der enthält“–Operator $ wird verwendet, um zu ermitteln, ob eine Zeichenfolge in einer Zei”
chenkette enthalten ist. Dabei spielt die Position, ab der die Zeichenfolge ggf. vorkommt, keine
Rolle.
zeichenfolge $ zeichenkette
Der Ausdruck liefert true, wenn die zeichenfolge in der zeichenkette vorkommt, und sonst false.
Beispiel:
DISP ALL FOR "AG"$Name
zeigt alle Datensätze einer Relation an, die im Feld Name die Zeichenfolge AG
enthalten.
4
Programmentwicklung mit dBASE
4.1
Gestaltung von Anwendungsoberflächen
Abfragen können mit Hilfe des Werkzeuges Abfrage-Designer“ konstruiert werden.
”
Zur Auswertung mehrerer Tabellen sind zwei Schritte notwendig:
• Tabellen verknüpfen
• verknüpfte Tabellen auswerten
Bei der Verknüpfung von Tabellen werden mehrere Tabellen gleichzeitig geöffnet und dabei
unterschiedlichen Arbeitsbereichen zugeordnet.
Arbeit mit Formularen
Formulare sind gestaltbare Anwendungsoberflächen.
4.2
Arbeit mit Generatoren
Generatoren sind Werkzeuge, die die Programmentwicklung unterstützen. Für häufig zu wiederholende Aufgaben sind Programmelemente vorgefertigt, die der Nutzer durch eigene Anweisungen
zu einem Programm verknüpfen und aktivieren kann. In dBASE stehen Generatoren für Berichte,
Etiketten, Menüs und Eingabemasken zur Verfügung.
4.3 Programmierung
4.3
15
Programmierung
Ein dBASE-Programm ist eine Zusammenstellung von dBASE-Befehlen. Programme, die unter
dBASE abgearbeitet werden sollen, können mit einem Texteditor erstellt und in einer Befehlsdatei
abgespeichert werden. Befehlsdateien in dieser Form – man spricht von Quelltextdateien – besitzen
die Dateiextension PRG. Vor einer Abarbeitung muß eine Befehlsdatei mit dem Compiler übersetzt
werden. Bei der Übersetzung entsteht eine Datei, die von dBASE ausführbar ist. Eine ausführbare
Datei besitzt die Extension PRO.
Angenommen eine Quelltextdatei ist bereits compiliert worden, es existiert also eine gleichnamige
Datei mit der Extension PRO. Wird die Quelltextdatei anschließend geändert, wäre das übersetzte
Programm zwar noch ausführbar, aber nicht mehr auf dem aktuellen Stand. dBASE speichert
das alte Quellprogramm in einer Datei mit dem Programmnamen und der Extension PRK. Die
Datei mit dem ausführbaren Programm wird gelöscht. Eine erneute Compilation der geänderten
Quelltextdatei (mit der Extension PRG) erzeugt eine neue Datei mit der Extension PRO.
Übersetzen und Ausführen eines Programmes
COMPILE programmname
Übersetzen des Programmes programmname
Beim Übersetzen eines Programmes wird der Quelltext in einem ersten Schritt analysiert. Werden
dabei keine Syntaxfehler festgestellt, schließt sich ein zweiter Schritt an, in dem der Quelltext in
ausführbaren Code transformiert wird.
DO
programmname
Übersetzen und Ausführen des Programmes programmname
Bei der Ausführung eines syntaktisch korrekten Programmes kann es zu sog. Laufzeitfehlern kommen. In diesem Fall wird die Abarbeitung des Programmes unterbrochen. Ein typischer Laufzeitfehler liegt vor, wenn auf eine Variable zugegriffen wird, die noch keinen Wert zugewiesen
bekommen hat.
Existiert zum Zeitpunkt der Ausführung des Befehles DO nur eine Datei mit dem Namen programmname und der Extension PRG, also noch keine Datei gleichen Namens mit der Extension
PRO, wird vor Ausführung des Programmes zusätzlich eine Compilation durchgeführt.
Dateneingabe über Tastatur
ACCEPT zeichenkette
TO
speichervariable
Die zeichenkette wird bei Abarbeitung des Befehls in der nächsten Bildschirmzeile angezeigt.
Es wird dann eine Eingabe von der Konsole erwartet, die mit RETURN abzuschließen ist (d.h.
Drücken der Enter-Taste). Wert der Speichervariablen ist anschließend eine Zeichenkette, die die
eingegebene Zeichenfolge repräsentiert. Wurde kein Zeichen eingegeben und lediglich die EnterTaste gedrückt, wird der Variablen die leere Zeichenkette als Wert zugewiesen.
Iteration
Als Iteration bezeichnet man eine Programmkonstruktion, die die wiederholte Abarbeitung einer
Folge von Anweisungen (nachfolgend als befehlsfolge bezeichnet) bewirkt.
Fritzsche, Wirtschaftsinformatik
16
4 PROGRAMMENTWICKLUNG MIT DBASE
DO WHILE
bedingung
befehlsfolge
ENDDO
Semantik
Die befehlsfolge wird ausgeführt, wenn die Auswertung des als bedingung
programmierten Ausdruckes den Wert true ergibt. Anschließend wird die bedingung
erneut ausgewertet usw. Es wird keine weitere Aktion ausgeführt, wenn die
Auswertung der bedingung erstmalig den Wert false liefert. Die Abarbeitung
des Programms wird in diesem Fall mit der auf die DO WHILE-Anweisung
logisch folgenden Anweisung fortgesetzt.
Schleifenkonstruktionen bergen die Gefahr von Endlosschleifen. Die Iteration endet nie, wenn die
bedingung so programmiert ist, daß sie niemals den Wert false annimmt. Die Abarbeitung des
Programmes kann vom Benutzer durch Drücken der ESCAPE-Taste abgebrochen werden.
Alternative
Als Alternative wird eine Programmkonstruktion bezeichnet, die es erlaubt,
• eine Befehlsfolge in Abhängigkeit vom Ergebnis der Auswertung einer Bedingung auszuführen oder nicht auszuführen
oder
• zwei unterschiedliche Befehlsfolgen je nach Ergebnis – true oder false – der Auswertung einer
Bedingung auszuführen.
bedingung
befehlsfolge
IF
ENDIF
Semantik
Die befehlsfolge wird ausgeführt, wenn die Auswertung des als bedingung
programmierten Ausdruckes den Wert true ergibt. Andernfalls wird keine Anweisung
ausgeführt.
IF
bedingung
befehlsfolge1
ELSE
befehlsfolge2
ENDIF
Semantik
Die befehlsfolge1 wird ausgeführt, wenn die Auswertung des als bedingung
programmierten Ausdruckes den Wert true ergibt. Andernfalls wird die befehlsfolge2
ausgeführt.
Beispiele:
In demopro4 wird die Kundentabelle kunden nach dem Namen indexiert. Ein als Zeichenkette eingegebener und der Variablen eingname zugewiesener Name wird in der
nun nach Namen geordneten Tabelle gesucht. Wird ein Datensatz mit diesem Namen
gefunden (und es wird unterstellt, daß ein solcher existiert), werden für diesen die Kundennummer, der Name, der Umsatz und das Datum der letzten Rechnung ausgegeben.
Anschließend ist wieder ein Name einzugeben usw. Erst nach Eingabe von ende“ wird
”
die Schleife verlassen.
4.3 Programmierung
* Testprogramm demopro4
USE kunden INDEX iname
STORE "x" TO eingname
DO WHILE eingname <> "ende"
ACCEPT "Name, fuer den Werte anzuzeigen sind:" TO eingname
IF eingname <> "ende"
SEEK eingname
DISPLAY knr,name,umsatz,letztrech
ENDIF
ENDDO USE
Im nachfolgenden Programm demopro5 wird die Arbeit mit mehreren Tabellen demonstriert. Die Tabelle der Bestellungen wird mittels SELECT im Arbeitsbereich 2 geöffnet,
die Kundentabelle im Arbeitsbereich 1. Für einen betimmten Kunden wird zunächst
die Kundennummer ermittelt, diese wird in der globalen Variablen suchwert gespeichert. Anschließend wird in die Tabelle der Bestellungen gewechselt. Für den Kunden
mit der gespeicherten Kundennummer wird jetzt ein Eintrag gesucht und der erste
gefundene Datensatz angezeigt.
* Testprogramm demopro5
SELECT 2
USE bestellg
INDEX ON knr TO iknr
SELECT 1
USE kunden INDEX iname
STORE "x" TO eingname
DO WHILE eingname <> "ende"
ACCEPT "Name, fuer den Werte anzuzeigen sind:" TO eingname
IF eingname <> "ende"
SEEK eingname
IF eof()
? "kein Kunde mit diesem Namen!?"
ELSE
DISPLAY knr,name,umsatz,letztrech
STORE knr TO suchwert
SELECT 2
SEEK suchwert
DISPLAY
SELECT 1
ENDIF
ENDIF
ENDDO
CLOSE DATABASES
Kritik an demopro5: Die Daten der Bestellung können nur angezeigt werden, wenn
ein Kunde mit der Kundennummer auch existiert. Für einen Kunden könnten jedoch
keine Bestellungen oder auch mehrere Bestellungen existieren. Im nachfolgenden Programm demopro6 ist deshalb eine Schleife zum Suchen aller Bestellungen eingefügt.
Zwei zusätzliche Ausgaben gestatten es dem Nutzer außerdem, während der Programmanwendung zwischen Kundendatei und Bestellungsdatei zu unterscheiden.
* Testprogramm demopro6
Fritzsche, Wirtschaftsinformatik
17
18
4 PROGRAMMENTWICKLUNG MIT DBASE
SELECT 2
USE bestellg INDEX iknr
SELECT 1
USE kunden INDEX iname
STORE "x" TO eingname
DO WHILE eingname <> "ende"
ACCEPT "Name, fuer den Werte anzuzeigen sind:" TO eingname
IF eingname <> "ende"
SEEK eingname
IF eof()
? "kein Kunde mit diesem Namen!?"
ELSE
? "Kundendatei:"
DISPLAY knr,name,umsatz,letztrech
STORE knr TO suchwert
SELECT 2
SEEK suchwert
? "Bestelldatei:"
DO WHILE knr=suchwert.AND..NOT.eof()
DISPLAY
SKIP
ENDDO
SELECT 1
ENDIF
ENDIF
ENDDO
CLOSE DATABASES
Im nachfolgenden Beispiel demopro8 wird demonstriert, wie eingelesene Zeichenketten
mit Hilfe der Funktion UPPER transformiert werden. Die Funktion UPPER erhält als
Parameter eine Zeichenkette, in dieser werden alle vorkommenden Kleinbuchstaben
durch Großbuchstaben ersetzt. Alle anderen Zeichen werden unverändert übernommen.
* Testprogramm demopro8
* Suche nach Kunden fuer vorzugebende Rechtsform
SET TALK OFF
USE kunden
DO WHILE .t.
&& Schleife wird ueber return verlassen
ACCEPT "Rechtsform oder Ende:" TO rform
IF UPPER(rform)="ENDE"
USE
SET TALK OFF
RETURN
ENDIF
GO TOP
&& erneute Auswertung der Kundentabelle
DO WHILE .NOT. EOF()
IF UPPER(rform)$UPPER(name+vorname)
DISPLAY
WAIT "weiter: beliebige Taste!"
ENDIF
SKIP
&& Uebergang zum naechsten Datensatz
ENDDO
&& Tabellenauswertung beendet
ENDDO
4.3 Programmierung
19
Der in demopro8 verwendete Befehl WAIT verhindert das Durchlaufen“ des Ausgabebereiches des
”
Befehlsfensters.
WAIT
zeichenkette
Semantik
Die Zeichenkette wird ausgegeben. Die Programmabarbeitung wird erst nach
Drücken einer beliebigen Taste mit der Ausführung der auf WAIT logisch
folgenden Anweisung fortgesetzt.
Beispiel:
WAIT
"Bitte beliebige Taste Drücken!"
Für Verzweigungen bei mehreren Entscheidungsmöglichkeiten kann der Befehl DO-CASE eingesetzt
werden.
DO
CASE
CASE bedingung1
CASE bedingung2
···
···
[ OTHERWISE
ENDCASE
Semantik
befehlsfolge1
befehlsfolge2
befehlsfolge ]
Die Bedingungen werden sukzessive ausgewertet. Bei der ersten gefundenen
erfüllten Bedingung wird die zugeordnete Befehlsfolge abgearbeitet. Danach
ist die Abarbeitung der Anweisung beendet.
Falls keine der ausgewerteten Bedingungen true liefert, wird die Befehlsfolge
nach OTHERWISE abgearbeitet (falls eine solche Befehlsfolge vorhanden ist).
Im Programm demopro9 wird der DO-CASE– Befehl für die Gestaltung von Menüs eingesetzt.
* Testprogramm demopro9
* Auswertung von Bestellungen - mit Aufruf von Unterprogrammen
SET TALK OFF
SELECT 1
USE kunden
SELECT 2
USE artikel
SELECT 3
USE bestellg
DO WHILE .t.
&& Schleife wird ueber return verlassen
? "Auswertung von Bestellungen - Programmwahl"
? "------------------------------------------"
? "b - Bestellungen eingeben"
? "m - Mahnwesen"
? "a - Artikelauswertungen"
? "k - Kundenauswertungen"
? "e - Ende"
?
ACCEPT "Programmwahl: " TO wahl
DO CASE
CASE UPPER(wahl)="B"
DO bestell
&& Aktualisierung von
Fritzsche, Wirtschaftsinformatik
20
4 PROGRAMMENTWICKLUNG MIT DBASE
&& Kunden- u. Artikeltabelle;
&& Erweiterung der Bestelltabelle
&& hier nicht realisiert
CASE UPPER(wahl)="M"
DO mahnwes
&& Auswertung der
&& Kunden- u. Bestelltabelle
&& hier nicht realisiert
CASE UPPER(wahl)="A"
DO artausw
&& Auswertung der Artikeltabelle
&& hier nicht realisiert
CASE UPPER(wahl)="K"
DO kunausw
&& Auswertung der Kundentabelle
CASE UPPER(wahl)="E"
CLOSE DATABASES
SET TALK ON
RETURN
&& Zyklus wird verlassen
OTHERWISE
? "Auswahlmoeglichkeiten beachten!"
ENDCASE
ENDDO
Die in demopro9 aufgerufenen Programme bestell, mahnwes und artausw werden hier nicht gezeigt. Das Programm kunausw zur Auswertung von Kundentabellen sieht eine Umsatzsummierung
für Kunden vor, für die die Summe der Beträge offener Rechnungen einen bestimmten Betrag übersteigt. Außerdem kann die Summe der Umsätze in einem Ort bzw. Ortsgebiet berechnet werden.
Als Kriterium werden dabei die PLZ bzw. die führenden Ziffern der PLZ herangezogen.
* kunausw
* (Unter-) Programm zur Auswertung der Kundentabelle
SET EXACT OFF
SELECT 1
&& Arbeitsbereich der Kundentabelle
DO WHILE .t.
GO TOP
&& wegen zyklischer Abarbeitung
summe = 0
? "s - Umsatzsummierung fuer sumoffen >= ugrenze"
? "p - Umsatzsummierung fuer PLZ-(Orts-) Bereich"
? "e - Ende der Auswertung"
?
ACCEPT "Auswertungsart: " TO art
DO CASE
CASE UPPER(art)="S"
ACCEPT "untere Grenze sumoffen: " TO ugrenze
? "untere Grenze: ", VAL(ugrenze)
DO WHILE .NOT. EOF()
IF sumoffen >= VAL(ugrenze)
Summe = summe + umsatz
ENDIF
SKIP
ENDDO
? "Umsatzsumme:", summe
CASE UPPER(art)="P"
ACCEPT "PLZ (-bereich): " TO splz
DO WHILE .NOT. EOF()
IF plz = splz
&& besondere Pruefung der Gleichheit!
21
Summe = summe + umsatz
ENDIF
SKIP
ENDDO
? "Umsatzsumme:", summe
CASE UPPER(art)="E"
RETURN
&& rueckkehr
OTHERWISE
? "Auswahlmoeglichkeiten beachten!"
ENDCASE
ENDDO
Da über Tastatur nur Zeichenfolgen eingegeben werden können (also keine Zahlen!), ist ggfs. – z.B.
im Falle des benötigten Wertes für eine untere Grenze – eine Konvertierung einer solchen Zeichenkette in eine Zahl erforderlich. Die konvertierte Zahl kann dann rechnerintern mit dem Zahlenwert
von sumoffen verglichen werden. Die Konvertierung kann mit der Funktion VAL vorgenommen
werden.
VAL: zeichenkette --> num
Semantik: Eine Ziffernfolge am Beginn der zeichenkette wird in eine ganze Zahl num
konvertiert. Ist das erste Zeichen keine Ziffer, liefert die Konvertierung die
Zahl 0. Die erzeugte Zahl wird zehnstellig als ganze Zahl dargestellt, falls nicht
auf Grund ihrer Größe mehr Zeichen zur Darstellung erforderlich sind. In diesem
Fall erfolgt die Darstellung als Gleitkommazahl.
5
Datenmodellierung (logischer Datenbankentwurf )
Der Datenbankentwurf beschäftigt sich mit der Organisation der Daten in physisch getrennten
Relationen. Dabei wird unterteilt in:
• Logischer Datenbankentwurf
Definieren der konzeptionellen und externen Ebene. Die Korrektheit der Datenbankoperationen ist zu sichern.
• Physischer Datenbankentwurf
Definieren der internen Ebene (Auswahl des Datenbanksystems usw.). Hauptziele
sind die Performanz und der Schutz vor Datenverlust.
Die hier beschriebene Entwurfsmethode nach B. Thurnherr u. C. A. Zehnder umfaßt folgende
Hauptkomponenten [9]:
• Entity-Relationship-Modell (Darstellungsmittel: Entitätenblockdiagramme)
• Relationenmodell (Darstellungsmittel: Tabellen)
• Kombination von Entity-Relationship-Modellen und Relationenmodellen zu einem globalen
Konzept
• konkrete Schritte einer Entwurfsmethode
• Beachtung von Strukturregeln zur Erzeugung eines global normalisierten Datenschemas
Fritzsche, Wirtschaftsinformatik
22
5 DATENMODELLIERUNG (LOGISCHER DATENBANKENTWURF)
5.1
Das Entity-Relationship-Modell (ERM)
Beim Entwurf eines konzeptionellen Datenschemas geht es zunächst um die Beschreibung eines
Ausschnittes aus der realen Welt. Dieser Vorgang heißt Modellbildung.
Eine Entitätsmenge entspricht einer Klasse von Objekten mit gleichen Merkmalen, aber von Objekt
zu Objekt unterschiedlichen Merkmalsausprägungen. Wir bezeichnen eine Entitätsmenge auch als
Objekttyp (OT).
Eine binäre Assoziation (OT1, OT2) legt fest, wie viele Entitäten aus OT2 einem Objekt aus OT1
zugeordnet sein können.
Wir unterscheiden folgende Assoziationstypen:
1: einfache Assoziation
c: konditionelle Assoziation
m: multiple Assoziation
mc: multipel-konditionelle Assoziation
Kombiniert man eine Assoziation (OT1,OT2) mit ihrer Gegenassoziation, so ergibt dies die Beziehung (relationship) zwischen den beiden betrachteten Entitätsmengen.
Beispiele von Beziehungen:
Objekttyp1
Objekttyp2
Beziehungstyp Beziehung
————————————————————————–
linke Schuhe
rechte Schuhe 1 : 1
Paar
Abteilungen
Angestellte
c:1
Abteilungsleiter
Angestellte
Abteilungen
m:1
Abteilungszugehörigkeit
Kinder
Ehepaare
mc : 1
Familienzugehörigkeit
Frauen
Männer
c:c
Ehe
Personen
Parteien
m:c
Parteizugehörigkeit
Projekte
Projekte
mc : c
ist Unterprojekt
Standorte
Standorte
m:m
Distanz
Vorlesungen
Studenten
mc : m
Einschreibung
Personen
Personen
mc : mc
Freundschaft
5.2
Schlüsselarten / Anforderungen an den Schlüsselaufbau
Ein Schlüssel ist ein Merkmal oder eine Kombination von Merkmalen, womit Datensätze (Entitäten) in einer Menge von Datensätzen ausgezeichnet werden können.
Schlüsselarten:
• Suchschlüssel (search key)
Schlüssel, dessen Wert mit den entsprechenden Merkmalswerten genau der Entitäten übereinstimmt, die bei einer Abfrage gesucht werden.
Mit einem Suchschlüsselwert können ggfs. auch mehrere Entitäten einer Entitätsmenge angesprochen werden (z.B. SEEK).
• Sortierschlüssel (sort key)
5.3 Entwurf von Relationen
23
Bestimmt bei einer gegebenen Ordnung der Schüsselwerte die physische Reihenfolge der Datensätze in der Datei.
• Primärschlüssel (primary key)
Positioniert die Datensätze in einer Speicherorganisation bei mehreren möglichen
Sortierschlüsseln.
Eine Entität wird durch den Wert ihres Identifikationsschlüssels eindeutig und dauerhaft bezeichnet.
Def.: Ein Identifikationsschlüssel ist ein Attribut oder eine minimale Attributkombination, anhand
dessen bzw. deren jedes Tupel der Relation identifiziert werden kann und dessen bzw. deren
Wert zeitinvariant ist, d.h. sich während der Existenz des Tupels nicht ändert.
Der Ausdruck minimale Attributkombination“ bedeutet, daß ohne Verlust der eindeutigen
”
Identifizierbarkeit kein Attribut der Attributkombination weggelassen werden darf.
Sind mehrere minimale Attributkombinationen vorhanden, spricht man von Schlüsselkandidaten
(candidate key). In diesem Fall wird ein Schlüssel als Primärschlüssel ausgezeichnet. Die anderen
Kandidaten heißen Sekundärschlüssel.
Forderungen an künstliche Identifikationsschlüssel sind:
a) Eindeutigkeit
b) laufende Zuteilbarkeit
c) Kürze und Schreibbarkeit
d) sprechende“ Schlüssel
”
5.3
Entwurf von Relationen
Strukturregel SR1:
Bei der Darstellung von Entitätsmengen durch Relationen muß für jede Relation ein Identifikationsschlüssel festgelegt werden.
Attributabhängigkeiten
Es gibt unterschiedliche Arten von Attributabhängigkeiten:
1. funktionale Abhängigkeit
Def.: In R(A,B) ist das Attribut B vom Attribut A funktional abhängig, wenn zu jedem Wert
von A genau ein Wert von B gehört.
Beispiel: Gewicht und Farbe eines Teiles sind von der Teilenummer funktional abhängig;
zu unterschiedlichen Gewichten gehören immer unterschiedliche Teile, zu unterschiedlichen
Teilenummern aber nicht unbedingt unterschiedliche Gewichte.
2. volle funktionale Abhängigkeit
Fritzsche, Wirtschaftsinformatik
24
5 DATENMODELLIERUNG (LOGISCHER DATENBANKENTWURF)
Def.: In R(S1,S2,A) ist das Attribut A von (den Schlüsseln) S1, S2 voll funktional abhängig,
wenn A von dem zusammengesetzten Attribut (S1,S2) funktional abhängig ist, nicht
aber von einem einzelnen Attribut S1 oder S2.
3. transitive Abhängigkeit
Def.: In R(S,A,B) ist das Attribut B vom Schlüssel S (der auch ein zusammengesetzter
Schlüssel sein kann) transitiv abhängig, wenn A von S funktional abhängig ist, S jedoch
nicht von A, und wenn B von A funktional abhängig ist.
Normalformen
1. Normalform (1NF)
Def.: Eine Relation ist in der 1NF, wenn alle Attribute nur atomare Werte besitzen.
Beispiel:
Die nachfolgende Relation PERSONEN mit PRES# als Identifikationsschlüssel ist
nicht in der 1NF, da sie für PROJ#, PROJNAME und %ARBZEIT Mehrfacheinträge aufweist.
PERSONEN
PERS# PERSNAME
101
Meyer
102
Krause
ABT#
1
2
ABTNAME
Planung
Projektierung
PROJ#
11,12
13
PROJNAME
A,B
C
%ARBZEIT
60,40
100
Lösung: Die Inhalte der Tupel mit Mehrfacheinträgen müssen auf mehrere Tupel
aufgeteilt werden, so daß für unterschiedliche Projektnummern, Projektnamen
und prozentuale Anteile der Arbeitszeit unterschiedliche Tupel entstehen. Der
Informationsgehalt der Relation bleibt dadurch ungeändert, aber es entstehen
Redundanzen. PERS# allein genügt als Identifikationsschlüssel nicht mehr. Es
wird eine Kombination (PERS#,PROJ#) als Identifikationsschlüssel verwendet.
2. Normalform (2NF)
Def.: Eine Relation ist in der 2NF, wenn sie sich in der 1NF befindet und wenn jedes nichtSchlüssel-Attribut funktional abhängig ist vom Gesamtschlüssel, nicht aber von den
einzelnen Schlüsselteilen (d.h. jedes nicht-Schlüssel-Attribut ist voll funktional abhängig
vom Gesamtschlüssel).
Beispiel:
Die modifizierte Relation PERSONEN mit dem Identifikationsschlüssel
(PERS#,PROJ#) befindet sich in der 1NF, aber nicht in der 2NF.
PERS-PROJ-TAETIGK
PERS# PERSNAME
101
Meyer
101
Meyer
102
Krause
ABT#
1
1
2
ABTNAME
Planung
Planung
Projektierung
PROJ#
11
12
13
PROJNAME
A
B
C
%ARBZEIT
60
40
100
PROJNAME ist von PROJ# allein funktional abhängig. Auch ABT# ist von PERS# allein
funktional abhängig.
5.3 Entwurf von Relationen
25
Lösung: Aufspalten der Relation PERS-PROJ-TAETIGK in 3 Relationen PERSONEN,
PROJEKTE, PERS-PROGJ-TAETIGK.
PERSONEN
PERS# PERSNAME ABT#
ABTNAME
101
Meyer
1
Planung
102
Krause
2
Projektierung
PROJEKTE
PROJ#
11
12
13
PROJNAME
A
B
C
PERS-PROJ-TAETIGK
PERS# PROJ# %ARBZEIT
101
11
60
101
12
40
102
13
100
Auch jetzt steckt in der Relation PERSONEN noch Redundanz. Für jede Person ist
der Abteilungsname gespeichert, obwohl dieser mit der Abteilungsnummer funktional gekoppelt ist.
3. Normalform (3NF)
Def.: Eine Relation ist in der 3NF, wenn sie sich in der 2NF befindet und keine funktionalen
Abhängigkeiten zwischen Attributen existieren, die nicht als Schlüssel definiert sind
(d.h. keine transitiven Abhängigkeiten definiert sind).
Beispiel:
Die Relation
PERSONEN(PERS#,PERSNAME,ABT#,ABTNAME)
befindet sich nicht in der 3NF, weil ABTNAME über ABT# transitiv von PERS# abhängt.
Lösung: Aufspalten der Relation in zwei Relationen:
PERSONEN(PERS#,PERSNAME,ABT#)
ABTEILUNGEN(ABT#,ABTNAME)
Beziehungen zwischen Relationen: Globale Normalisierung
Die globale Normalisierung verbindet die existierenden Beziehungen zwischen Entitätsmengen mit
der Normalisierung des Relationenmodells.
Def.: Ein Attribut heißt global, wenn es mindestens in einer Relation im Identifikationsschlüssel
vorkommt.
Def.: Ein Attribut heißt lokal, wenn es nur in einer einzigen Relation und dort nicht im Identifikationsschlüssel vorkommt.
Es kann nach diesen Definitionen Attribute geben, die weder global noch lokal sind. Solche
Attribute treten bei sich überlappenden“ Entitätsmengen auf.
”
Beispiel:
Fritzsche, Wirtschaftsinformatik
26
5 DATENMODELLIERUNG (LOGISCHER DATENBANKENTWURF)
Angestellte und Studierende sind Hochschulangehörige. Doktoranden sind sowohl Angestellte als auch Studierende. Angenommen, die Attribute NAME und ADRESSE
werden sowohl in einer Relation ANGESTELLTE als auch in einer Relation STUDIERENDE verwaltet:
ANGESTELLTE(A#,NAME,ADRESSE,LOHNGRUPPE)
STUDIERENDE(S#,NAME,ADRESSE,STUDIENGANG)
In diesem Fall sind die Attribute NAME und ADRESSE weder lokal noch global.
Attribute, die weder global noch lokal sind, sind Quelle von Redundanz und deshalb zu eliminieren. Sie sind einer neuen, übergeordneten Relation zuzuordnen (Generalisierung).
Beispiel:
HOCHSCHULANGEHOERIGE(PERS#,NAME,ADRESSE)
ANGESTELLTE(PERS#,A#,LOHNGRUPPE)
STUDIERENDE(PERS#,S#,STUDIENGANG)
Die gewonnenen Erkenntnisse können nun in einer zweiten Strukturregel zusammengefaßt werden:
Strukturregel SR2:
Die Datenbasis muß aus Relationen in der 3NF bestehen, die nur globale und lokale Attribute
enthalten.
Verbindungen zwischen Relationen werden nunmehr ausschließlich über Globalattribute hergestellt. Trotz der Einhaltung der Normalformen und der Vermeidung von Attributen, die weder
global noch lokal sind, können – zunehmend bei großen Datenmengen – Konsistenzverletzungen
auftreten.
Mit dem Begriff des Fremdschlüssels wird die Möglichkeit geschaffen, auszudrücken, daß Wertebereiche für Attribute einer Relation von den aktuell in einer anderen Relation vorhandenen
Datensätzen bestimmt werden.
Def.: Ein Fremdschlüssel (foreign key) in einer Relation R2 ist ein Attribut (oder eine Attributkombination), welches dem Identifikationsschlüssel in einer anderen Relation R1 entspricht,
und dessen zugehöriger Wertebereich die Menge genau jener Werte umfaßt, welche die aktuell
in R1 enthaltenen Tupel identifizieren. R1 heißt Basisrelation des Fremdschlüssels.
Beispiel:
Sei R1
PERSONEN(PERS#,PERSNAME,ABT#)
und R2
PERS-PROJ-TAETIGK(PERS#,PROJ#,%ARBZEIT)
PERS# ist Fremdschlüssel in PERS-PROJ-TAETIGK und Identifikationsschlüssel in
PERSONEN. PERSONEN ist Basisrelation.
Def.: Die referentielle Integrität ist eine Konsistenzbedingung, welche verlangt, daß Fremdschlüssel
in R2 nur Tupel in R1 referenzieren, die z.Z. tatsächlich existieren.
27
Def.: Ein statischer Wertebereich ist eine Menge von Werten, welche bei der Definition der Datenbasis festgelegt wird, und die sich im Verlaufe der Zeit nicht ändert.
Def.: Ein dynamischer Wertebereich ist eine Menge von Identifikationsschlüsselwerten oder wertkombinationen einer Basisrelation, die für Fremdschlüssel zur Verfügung stehen.
Strukturregel SR3:
Lokale Attribute müssen statische Wertebereiche verwenden.
Jedes Global–Attribut darf nur in einer einzigen Relation auf einem statischen Wertebereich
basieren und muß in dieser Relation Identifikationsschlüssel sein. In allen anderen Relationen
muß es auf einem dynamischen Wertebereich basieren, d.h. als Fremdschlüssel aus einer anderen
Relation eingebracht werden.
Normalisierungen können auch anhand von Entitätendiagrammen vorgenommen werden. Hierarchische Beziehungen lassen sich direkt mit Fremdschlüsseln und dynamischen Wertebereichen
darstellen. Zur Modellierung konditioneller und netzwerkartiger Beziehungen sind zusätzliche Relationen erforderlich. Rekursive Beziehungen müssen unter Bildung von Beziehungsrelationen aufgelöst werden.
6
Datenbankorganisation
6.1
Architektur von Datenbanksystemen
Grundlage für die Architektur von DBS bildet das 3-Ebenen-Modell.
Anwender benutzen Anwendungsprogramme über deren Benutzeroberfläche. Anwendungsprogramme greifen über das DBMS auf die Datenbasis zu.
Anwendungsprogramme lösen über Befehle der verwendeten Datenmanipulationssprache (DML)
Transaktionen an das DBMS aus. Das DBMS formt Transaktionen in Anweisungen an das Betriebssystem um. Das Betriebssystem verwaltet die Speicher und löst Operationen für Speicherzugriffe aus.
Das DBBMS hat wichtige Aufgaben. Es
- stellt Abfrage- und Modifikationsoperationen bereit,
- sichert die Datenintegrität (sorgt insbesondere für die Einhaltung der Konsistenzbedingungen und die korrekte Ausführung parallel auszuführender Transaktionen),
- verwaltet Datenbeschreibungen (Schemaverwaltung).
Funktionsschichten des DBMS sind
• Relationenverwalter: Abbildung der Mengenoperationen auf Tupeloperationen,
• Tupelverwalter: Umsetzen der Tupelorganisation in Speicherblockorganisation
• Speicherverwalter: Organisation der Speicherblöcke
Man spricht von einer Hierarchie abstrakter Maschinen“.
”
Zum Aufbau einer Datenbankanwendung ist neben dem DBMS ein Entwicklungswerkzeug – das
Datenbankentwicklungssystem (DB-ES)– erforderlich.
Systembestandteile werden von unterschiedlichen Partnern bereitgestellt (d.h. Partnern in unterschiedlichen Rollen):
Fritzsche, Wirtschaftsinformatik
28
7 DATENSICHERHEIT UND DATENSCHUTZ
• DB-ES + DBMS: globaler Anbieter (Datenbankhaus)
• Datenschema + Anwenderprogramm: Anwendungsentwickler, Datenbankingenieur
• Inhalt der Datenbasis: Anwender
6.2
Überblick zu Datenbankmanagementsystemen
Datensysteme auf mehreren Rechnern
Ist Dezentralisierung sinnvoll?
Bei verteilten Datenbanken wird die Datenbasis auf mehrere Rechner verteilt. Die Aufteilung
erfolgt nach zentralen Regeln.
6.3
Konsistenz und Transaktionen
Daten sind konsistent, wenn sie vordefinierte Konsistenzbedingungen einer Datenbank erfüllen.
Man unterscheidet Konsistenzbedingungen, die
• dauernd erfüllt sein müssen,
• temporär Inkonsistenzen erlauben.
Bei Anwendung eines sog. Sperrprotokolls können parallele Transaktionen konsistent ausgeführt
werden.
Eine Transaktion T erfüllt die Konsistenzbedingungen, falls gilt
a) T sperrt alle Datenbereiche exklusiv, die sie ändert.
b) T sperrt alle Datenbereiche mit Teilsperren, die sie liest.
c) T gibt erst Sperren frei, nachdem alle notwendigen Sperren gesetzt sind.
7
7.1
Datensicherheit und Datenschutz
Datensicherheit
Datensicherheit (data security) umfaßt alle organisatorischen und technischen Maßnahmen für
die Sicherstellung der notwendigen Verfügbarkeit und Abschirmung der Daten.
Verfügbarkeit bedeutet, auf bestimmte Daten zugreifen zu können.
Abschirmung bedeutet, den Zugriff auf Daten für Unbefugte verhindern zu können.
7.2
Datenschutz
Datenschutz (data protection) ist der Schutz der durch die Daten dargestellten Sachverhalte des
realen Lebens vor jeder Art von Mißbrauch.
Zum Datenschutz gehört die Abschirmung gegen Unberechtigte, aber auch deren Verfügbarkeit
für Berechtigte. Der Datenschutz schließt rechtliche und ethische Problemstellungen ein.
Zielkonflikte:
29
• Datenverfügbarkeit verlangt Duplikate, Datenabschirmung will Duplikate vermeiden.
• Mehrbenutzersysteme erschweren die Datensicherheit
• Datenkonsistenz kann sehr leistungsbehindernd sein
• Datenschutzmaßnahmen können neue Datenschutzprobleme schaffen.
8
Kommunikationssysteme
8.1
Technisch-technologische Grundlagen
Prozess Ein Prozess ist ein sich auf einem Rechner in Abarbeitung befindliches Programm. Ein
Programm kann mit dem Benutzer auf unterschiedliche Art kommunizieren
• gar nicht (Dämon-Prozess)
• über die Kommandozeile
• über eine grafische Oberfläche (GUI = Graphical User Interface)
Prozess-Kommunikation Prozesse können untereinander auf unterschiedliche Art kommunizieren. Sockets sind Kommunikationsendpunkte für die Kommunikation von Prozessen, die auf
unterschiedlichen Rechnern laufen können. Ein Socket ist durch IP-Adresse und Port-Nummer
eindeutig identifiziert.
Client-Server–Prinzip Prozesse realisieren Dienste“, indem sie in einer gewissen Weise zu”
sammenarbeiten. Zu einem Dienst gehören ein Dienstanbieter (Server) und Dienstnutzer (Clients).
Client-Server–Architektur Alle in einem Netzwerk zusammengeschlossenen Rechner können
sich gegenseitig Dienste anbieten. Client und Server eines bestimmten Dienstes können also auch
durch Prozesse auf demselben Rechner gebildet werden!
8.2
Kommunikationsdienste
World Wide Web
Das World Wide Web (WWW) ist nicht das Internet, sondern ein Dienst, der im Internet angeboten wird. Grundlage der Kommunikation ist das Hypertext Transfer Protocol (HTTP), ein Protokoll, das in der Anwendungsschicht liegt. Über das HTTP sollen vom Server (dem Web-Server)
bereitgestellte Dokumente zum Client übertragen und vom Client (einem Browser) visualisiert
werden.
Dokumente in Netzwerken Netzwerke haben unser Verständnis vom Umgang mit (elektronischen) Dokumenten verändert. Man kann bei der Vielzahl existierender unterschiedlicher Systeme
zur Dokumentenerstellung und -visualisierung (z.B. MS Word, Wordstar, ...) als Anbieter nicht
erwarten, das jeder Client über ein System verfügt, das zu dem bei der Dokumenterstellung verwendeten System kompatibel ist.
Fritzsche, Wirtschaftsinformatik
30
8 KOMMUNIKATIONSSYSTEME
Dokumentenbeschreibungssprachen
lichen Aspekte von Dokumenten
ermöglichen die explizite Beschreibung der drei wesent-
• Daten
• Struktur
• Format
Damit unterscheidet sich die Darstellung von Dokumenten mittels Dokumentenbeschreibungssprachen wesentlich von der mit Hilfe von WYSIWYG-Systemen (WYSIWYG = What You See Is
What You Get. Beispiel: MS Word). Jedes Dokument muß nach Inhalt und Struktur erschlossen
werden. Die Formatierung wird weitgehend dem Client überlassen und ist von dessen Möglichkeiten abhängig. Eine Standardisierung von Formaten wird mittels Stylesheets angestrebt.
SGML ist eine Meta-Sprache zur Definition von Sprachen zur Beschreibung von Dokumenttypen
(z.B. Dokumenttyp Geschäftsbrief“). HTML ist eine von SGML erzeugte Sprache zur Beschrei”
bung von Dokumenten des Typs Web-Dokument“.
”
Unabhängigkeit von der Codierung Für die Notation der SGML-Deklaration selbst ist immer der ASCII-Zeichensatz zu verwenden. Andere zu verwendende Basis-Zeichensätze können
(unter Verwendung von ASCII) bekannt gemacht werden.
Unabhängigkeit vom Alphabet Praktisch muß eine unbegrenzte Menge von Zeichen darstellbar sein. Zur Definition von Zeichen werden sog. Entitäten eingeführt. Es gibt standardisierte
Alphabeterweiterungen.
Der telnet-Dienst
Das Kommando telnet (Client) ermöglicht ein Login auf einem entfernten Rechner. Der Server
lauscht“ auf dem entfernten Rechner am Port 23. Vorsicht vor der Benutzung dieses Dienstes:
”
Daten und auch Passwörter werden unverschlüsselt über das Netz übertragen! (Abhilfe: ssh)
Der finger-Dienst
Mit dem Kommando finger (Client) können Informationen über einen Benutzer auf einem angegebenen System angezeigt werden, das den finger-Dienst anbietet (Server). Der Dienst (Server)
lauscht“ am Port 79.
”
8.2 Kommunikationsdienste
31
Glossar
Data Dictionary In DBS werden Datenbeschreibungen (Datentypen und Zusammenhänge) an
einer zentralen Stelle, im Data Dictionary, verwaltet.
Integrität einer DB In der DB gespeicherte Daten sind nicht widersprüchlich.
Relation Teilmenge des kartesischen Produktes über den Wertebereichen von R. Ein Element
einer Relation heißt Tupel.
Performance Arbeitsgeschwindigkeit eines Informationsverarbeitungssystems.
Fritzsche, Wirtschaftsinformatik
32
LITERATUR
Literatur
[1] A. Hald and W. Nevermann. Datenbank-Engineering für Wirtschaftsinformatiker. Vieweg,
1995.
[2] H. R. Hansen. Wirtschaftsinformatik I. Gustav-Fischer-Verlag Stuttgart, 6. Auflage, 1992.
[3] A. Heuer. Objektorientierte Datenbanken – Konzepte, Modelle, Systeme. Addison-Wesley,
1992.
[4] A. Kehl. Visual dBASE 5.5 – Kompendium. Markt & Technik, 1995.
[5] A. Meier. Relationale Datenbanken – Eine Einführung in die Praxis. Springer, 1992.
[6] Mertens, Bodendorf, König, Picot, and Schumann. Wirtschaftsinformatik. Springer, 2. Auflage, 1992.
[7] H. Sauer. Relationale Datenbanken – Theorie und Praxis inclusive SQL. Addison-Wesley, 2.
Auflage, 1992.
[8] P. Stallknecht. Einfhrung in die Wirtschaftsinformatik. Springer, 7. Auflage, 1995.
[9] B. Thurnherr and C. A. Zehnder. Global Database Aspects, Consequences for the Relation
Model and a Conceptual Schema Language. ETH Zürich, Institut für Informatik, Bericht No.
30, 1979.
[10] G. Vossen.
Datenmodelle, Datenbanksprachen und Datenbank-Management-Systeme.
Addison-Wesley, 1987.
[11] G. Vossen. Datenbankmodelle, Datenbanksprachen und Datenbank-Management-Systeme.
R.Oldenbourg, 1999.
[12] C. A. Zehnder. Informationssysteme und Datenbanken. vdf Hochschulverlag an der ETH
Zürich, 1998.
Herunterladen