Präsentation - Fakultät Informatik/Mathematik

Werbung
Wirtschaftsinformatik II
Datenorganisation – Datenbanken - Kommunikation
Studiengang Wirtschaftsingenieurwesen
Sommersemester 2009
(2. Semester)
2 SWS Vorlesung
2 SWS Praktikum
Prof. Fritzsche
5 Gruppen,
Prof. Fritzsche /Frau H. Schubert
Beleg als Zulassungsvoraussetzung zur Prüfung
Schriftliche Prüfung (Klausur, 90 min., ohne Unterlagen)
Note Wirtschaftsinformatik = W-Inf I (40 %) + W-Inf II (60 %)
Prof. Dr. Hartmut Fritzsche
Fachbereich Informatik/Mathematik
Raum Z 366
Tel. (0351) 462 2606
[email protected]
www.informatik.htw-dresden.de/~fritzsch
Inhalt
1.
Grundlagen der Datenorganisation
2.
Einführung in das relationale Datenmodell
3.
MS Access
4.
Programmentwicklung mit VBA
5.
Datenmodellierung
6.
Datenbankorganisation
7.
Datenschutz und Informationssicherheit
8.
Kommunikationssysteme
1.
Grundlagen der Datenorganisation
1.1 Motivation: Speichern und Wiederfinden
Programmverarbeitung findet grundsätzlich im Hauptspeicher (HS) statt.
Datenverwaltung
„intern“: HS, Register, Puffer (Cache)
„extern“: Festplatte, CD-ROM, DVD, ...
intern:
„statisch“
Anforderung bereits zur
Übersetzungszeit
bekannt (Compiler)
vs.
„dynamisch“
Anforderung erst zur
Laufzeit bekannt
Dateien
Persistenz
Übersetzen, Verbinden und Ausführen von Programmen:
übersetzen
x.c
verbinden
(linken)
HS
x.o
a.out
y.h
Bibliotheksprogramme
Quellprogramme
Objektprogramme
(Zielprogramme)
Ausführbares Programm
(Lademodul, Executable)
Organisationsformen
ungeordnete
Folge
geordnete
Folge
Binärer
Baum
B*-Baum
Hashtabelle
Basisoperationen
• Einfügen eines Elementes in die Datenbasis
• Suchen eines Elementes in der Datenbasis
• Entfernen eines Elementes aus der Datenbasis
Reihenfolge der Verarbeitung
• bestimmte Reihenfolge
• beliebige Reihenfolge
Zugriffsverfahren
• sequentiell
• binär/trichotom (bei Bäumen)
• Hash-Verfahren (direkt oder indirekt)
a) eine Folge von Bytes (Beispiel UNIX)
b) eine Folge von Datensätzen (Beispiel CP/M)
c) ein Baum
1.2 Datenbanksysteme
Datenbanksystem (DBS)
Datenbankmanagementsystem (DBMS)
Datenbank (DB)
DBS =
DBMS + DB
DBS sind eine spezielle Art von
Informationssystemen
Ziel: weitgehende Unabhängigkeit der Daten
von den mit ihnen
arbeitenden Programmen bzw. Benutzern
3 Ebenen
- Externe Ebene (Benutzersichten)
- Konzeptuelle Ebene (Logische Gesamtsicht)
- Interne Ebene (physische Sicht)
2.
Einführung Relationales Datenmodell
Relationenmodell nach E. F. Codd, 1970
Strukturteil: Beschreiben von Objekttypen durch Relationenschemata
Operationsteil: Satz von Operationen für
Anfragen (Selektion)
Definitionen
Modifikationen (Einfügen, Entfernen)
2.1 Strukturteil
Objekttyp beschrieben durch Menge von Attributen mit Wertebereichen
Objekt
besitzt Ausprägungen (Werte) zu Attributen
Relationenschema
R
umfasst Objekttyp, Attribute, Wertebereiche
Relationen
r(R)
Teilmenge des kartesischen Produktes über den Wertebereichen
von R
Ein Element einer Relation heisst Tupel
Basisrelation
Die in der Datenbank aktuell vorhandene Relation
zu einem definierten Relationenschema
Datenbank
Menge aller Basisrelationen
Datenbankschema
Menge aller Relationenschemata
Eigenschaften einer Relation:
•
•
•
•
keine mehrfachen Tupel vorhanden
keine festgelegte Reihenfolge der Tupel in der Relation
keine Festlegung der Reihenfolge der Attribute
Attributwerte sind „atomar“ (sog. 1 Normalform)
Tabellendarstellung von Relationen:
•
•
•
•
Relation
Attribut
Tupel
Wertebereich
• Grad (degree)
• Kardinalität
Tabelle
Spalte
Datensatz, Zeile
Domäne
Anzahl der Attribute
Anzahl der Datensätze
Beispiel für das gesamte Semester:
4 Objekttypen aus dem Geschäftsbereich einer Handelsfirma (Kaufen, Verkaufen)
enthalten
Bestellungen
Artikel
werden geliefert von
Lieferanten
Vorlesung:
Praktikum:
enthalten
Kunden
Kunden, Bestellungen
Artikel, Bestellungen
Lieferanten
LNR
LNAME
…
Kunden
KNR
Kundennummer
NAME
VORNAME
STRASSE
PLZ
ORT
UMSATZ
SUMOFFEN
Summe unbez. Rechnungen
LETZTRECH
Datum der letzten Rechnung
FRECHOFFEN
unbez. Rechn. vor LETZTRECH
2.2 Operationsteil
Relationenalgebra
Normsprache SQL
Relationenalgebra:
Satz von Grundoperationen
Selektion

Projektion

Natürlicher Verbund


Mengenoperationen
, , 
Umbenennung

Selektion
Wählt Tupel (Zeilen) aus einer Relation (Tabelle) entsprechend einer Selektionsbedingung aus.
Selektionsbedingung kann sein:
Attribut – Konstanten – Vergleich
Attribut – Attribut – Vergleich
Verknüpfung von Selektionsbedingungen durch Operatoren , , ¬
Beispiele:
ORT = “Dortmund“ (r(Kunden))
SUMOFFEN <> 0 (r(Kunden))
NAME = VORNAME (r(Kunden))
SUMOFFEN <> 0 AND UMSATZ > 10000 (r(Kunden))
Projektion
Wählt Spalten aus einer Relation (Tabelle) aus.
es entsteht eine neue Relation
Mehrfache Tupel werden in der Ergebnismenge eliminiert
Natürlicher Verbund
Verknüpfung von Relationen über allen gemeinsamen Attributen.
Nur Tupel mit gemeinsamen gleichen Attributwerten werden zu neuen Tupeln verbunden.
Mengenoperationen
Übliche Mengenoperationen auf Relationen anwenden, die das gleiche Relationenschema
besitzen.
Umbenennung
Dient zum „kompatibel machen“ von Relationenschemata, die später vereinigt werden sollen.
SQL (Standard Query Language)
zur
•
•
•
•
Definition von Relationenschemata
Erzeugung von Zugriffspfaden
Anfragen
Datenmanipulationen
Hier nur Anfrageteil behandelt.
SQL-Abfrage (SFW_Block):
SELECT …
(Attributliste, kein Entfernen von Duplikaten,
* für alle Attribute)
FROM
…
(beteiligte Relationen, kartesisches Produkt)
WHERE
…
(komplexe Selektionsbedingung) ;
Semantik:
1.
Kartesisches Produkt der Relationen hinter FROM mit dem Relationsnamen als
Präfix
2.
Anwendung der Bedingungen der WHERE-Klausel auf das Ergebnis der FROMKlausel
3.
Projektion auf die Attribute der SELECT-Klausel
Beispiel:
Personen
Name
Vorname
Geburtsdatum
Wohnort
Meyer
Peter
10.05.1960
Berlin
Meyer
Peter
20.08.1966
Dresden
Schmitt
Susanne
01.01.1970
Aue
Schmitt
Petra
01.01.1970
Rostock
Name
Vorname
Geburtsdatum
Hobby
Meyer
Peter
10.05.1960
Surfen
Meyer
Peter
10.05.1960
Klavierspiel
Meyer
Peter
20.08.1966
Fußball
Schmitt
Susanne
01.01.1970
Tanzen
Schmitt
Petra
01.01.1970
Surfen
Pers_Hobbies
3.
MS ACCESS
Leistungsmerkmale (eines DBMS):
Systematische Verwaltung der Daten in Tabellen,
Verbindung von Tabellen
Bildschirmformulare zur Pflege der Daten (GUI)
Werkzeuge zur Abfrage von Daten
Komplexe Auswertungen, Erstellen von Verzeichnissen
3.1 Die Arbeitsoberfläche
3.2 Eine neue Datenbank anlegen
3.3 Tabellen
3.4 Abfragen
3.5 Formulare
3.6 Beziehungen zwischen Tabellen
3.7 Berichte
3.8 Makros
3.1 Die Arbeitsoberfläche
Name der Datenbank
Statusleiste
Datenbankfenster
3.2 Eine neue Datenbank anlegen
nach dem Starten von MS ACCESS können in einem File-Dialog
Verzeichnis und Dateiname für eine neu anzulegende Datenbank gewählt werden
für die LV wird Handelsfirma.mdb festgelegt.
MS ACCESS Datenbanken haben die Dateinamen-Extension .mdb
das Datenbankfenster wird geöffnet, in der Titelleiste erscheint der Name der DB.
Über das Datenbankfenster kann mit der DB gearbeitet werden.
3.3 Tabellen
Es wird unterschieden (beim Erstellen/Öffnen):
Datenblattansicht
Entwurfsansicht
- Entwurfsansicht
- Datenblattansicht
Datentyp
Erklärung
Größe
Text
für Zeichenketten aus Buchstaben, Ziffern und Sonderzeichen
max. 255 Zeichen
Memo
für längere Texte
max. 65535 Zeichen
Zahl
für Ganzzahl-, Gleitkomma- und Dezimalzahltypen
je nach Typ 1,2,4 oder 8 Byte
Datum/Uhrzeit
Jedes gültige Datum zwischen 1.1.100 und 31.12.9999 ist
erlaubt.
8 Byte
Währung
Zahlenwerte, diese werden automatisch um ein
Währungssymbol ergänzt, mit zwei Nachkommastellen
dargestellt und bündig angeordnet
8 Byte
AutoWert
Zahlenwert, dient der fortlaufenden Vergabe von Nummern. Der
Wert wird für jeden neu eingefügten Datensatz automatisch um
1 erhöht. Das Feld ist für die Dateneingabe gesperrt. Der
Datentyp AutoWert darf nur einmal pro Tabelle vergeben
werden.
4 Byte
Ja/Nein
Es gibt genau zwei Werte, die die möglichen Ergebnisse einer
Entscheidungsfrage repräsentieren (sog. Boolesches Feld)
1 Bit
OLE-Objekt
Ein OLE-Objekt wurde in einem anderen Programm erstellt
(z.B. Excel) und kann eine
Grafik, eine Excel-Tabelle oder ähnliches sein. OLE steht für
Object linking and embedding.
bis zu 1 GByte
Hyperlink
Werte sind Hyperlinks, beim Klicken darauf werden die
verlinkten Objekte geöffnet und angezeigt.
max. 64000 Zeichen
Nachschlagliste
Feldwerte können aus einer Liste ausgewählt werden. Der Liste
kann z.B. eine andere Tabelle zugrunde liegen.
4 Byte
Eingabeformat:
• Definition von Mustern für die Dateneingabe
z.B. PLZ
00000;;*
*****
• Literalzeichen:
Klammern, Punkte, Bindestriche, …
(werden automatisch durch Programm eingefügt)
• Platzhalter (Joker):
Formatzeichen
Syntax:
eingabeformat ; speicherangabe ; platzhalter
Standard: underline
0: Literalzeichen sollen mit gespeichert werden
1: nur eingegebene Daten gespeichert
0
eine Dezimalziffer (0 – 9), Eingabe zwingend
9
eine Dezimalziffer (0 – 9) oder ein Leerzeichen, Eingabe optional
#
eine Dezimalziffer, ein Leerzeichen oder Plus- bzw. Minuszeichen
L
ein Buchstabe (A – Z), Eingabe zwingend
?
ein Buchstabe (A – Z), Eingabe optional
A
ein Buchstabe oder eine Ziffer, Eingabe zwingend
a
ein Buchstabe oder eine Ziffer, Eingabe optional
&
ein beliebiges Zeichen (einschließlich Leerzeichen), Eingabe zwingend
C
ein beliebiges Zeichen (einschließlich Leerzeichen), Eingabe optional
.,:;-/
Dezimal-, Tausender-, Datums und Zeittrennzeichen
(tatsächliche Darstellungen sind länderspezifisch!)
\
das nachfolgende Zeichen wird als Konstante ausgegeben
<
nachfolgende Zeichen werden in Kleinbuchstaben umgewandelt
>
nachfolgende Zeichen werden in Großbuchstaben umgewandelt
Gültigkeitsprüfung während der Dateneingabe
►
integrierte Gültigkeitsprüfung für
Datum/Uhrzeit
Zahlen
Boolesche Werte
►
nutzerdefiniert
Gültigkeitsregeln
Syntax:
Gültigkeitsprüfung
(+ Gültigkeitsmeldung)
regel   vergleichsoperator  vergleichswert 
vergleichsoperator  
vergleichswert 
Verknüpfung von Regeln:
=  <  >  WIE
 datum  zahl  log. wert   text  funktion
UND  ODER  NICHT  ZWISCHEN
Nachschlaglisten:
-> Eingabewerte kommen aus Tabellen, Abfragen, selbst definierten Listen
-> Vermeiden von Fehlern bei der Dateneingabe
3.4 Abfragen
Abfragen erstellen
Abfragearten:
• Auswahlabfragen
• Parameterabfragen
• Aktionsabfragen
-Tabellenerstellungsabfragen
- Aktualisierungsabfragen
- Anfügeabfragen
- Löschabfragen
• Kreuztabellenabfragen
• Pivot-Tabellenabfragen
• SQL-Abfragen
Zum Erstellen einer Auswahlabfrage ist im Datenbankfenster das Objekt Abfragen zu wählen.
Die gewünschte Tabelle hinzufügen und das Fenster schließen.
Auf dem Bildschirm erscheint das Abfragefenster in der Entwurfsansicht:
Parameterabfragen:
Aktionsabfragen
•
Tabellenerstellungsabfragen
neue Tabelle als Kopie
•
Aktualisierungsabfragen
Änderungen an einer Gruppe von Datensätzen
z.B. Erhöhung der Preise
•
Anfügeabfragen
•
Löschabfragen
Datensätze aus einer Tabelle in
zweite Tabelle einfügen
löschen von Datensätzen aus einer Tabelle,
die eine bestimmte Bedingung erfüllen
Neue Bezeichnung!
3.5 Formulare
Wahl eines Layouts:
•
•
•
•
•
Einspaltige Darstellung,
Tabellarische Darstellung,
Datenblattdarstellung,
Block-Darstellung
Hauptformular mit Unterformular
Formularansicht, einspaltig :
Formularansicht, tabellarisch :
Formularassistent:
Erstellen eines Formulars in der Entwurfsansicht:
Entwurfsansicht:
Die Steuerelemente
Bezeichnung - Textfeld
Listen- u. Kombinationsfeld
Linien/Rechtecke/ …
Befehlsschaltflächen
Eigenschaften von Steuerelementen
Aktivierungsreihenfolge festlegen
3.6 Beziehungen zwischen Tabellen
1.
Konzeptuelle Grundlagen
2.
Praktische Handhabung
Beispiel: Hauptformular mit Unterformular
Entity – Relationship – Modelle (Kap. 5)
3.7 Berichte
In Berichten werden Daten aus Tabellen, Abfragen oder Formularen
für den Druck aufbereitet und dargestellt.
Zum Beispiel können in einem Bericht Diagramme erzeugt und dargestellt werden.
Es wird wie bei Tabellen, Abfragen und Formularen unterschieden:
Entwurf
Dabei wird ein Objekt vom Typ Bericht erstellt, in dem Bezüge zu
Datenquellen und Festlegungen zur Gestaltung enthalten sind.
Präsentation
Dabei wird das im Entwurf erstellte Objekt „ausgeführt“, d.h. es wird ein
aktueller Bericht erzeugt.
Struktur von Berichten:
Berichtskopf
Berichtsfuß
Seitenkopf
Seitenfuß
Gruppenkopf
Gruppenfuß
Detailbereich
(auf der 1. Seite des Berichts)
(auf der letzten Seite des Berichts)
(auf jeder Berichtsseite)
(auf jeder Berichtsseite)
(nur für Gruppierungsbericht)
(nur für Gruppierungsbericht)
In einem gruppierten Bericht werden die Daten nach bestimmten Datenfeldern
gruppiert dargestellt.
Beispiel: Artikel nach der ersten Stelle der Artikelnummer (der Artikelgruppe)
gruppiert darstellen
3.8 Makros
Makros sind Befehlsfolgen, die unter einem Namen in der Datenbank
abgespeichert und ausgeführt werden können.
Makros eignen sich besonders zur Gestaltung von Menüsteuerungen.
Beispiel:
Erzeugen eines Formulars FormMakroTest, das eine Befehlsschaltfläche
mit der Beschriftung „Formularaufruf“ enthält.
Durch ein mit der Schaltfläche verknüpftes Makro MakroTestFormular
soll bewirkt werden, dass
• ein bereits existierendes Formular Form1Artikel geöffnet und
• das Formular FormMakroTest geschlossen wird.
Klick
Lösung:
•
Objekt Makros → Neu
•
Einfügen Aktionen:
- Öffnen Formular
- Schließen
Formularname:
Objekttyp:
Objektname:
Form1Artikel
Formular
FormMakroTest
•
Speichern des Makros unter dem Namen MakroTestFormular
•
Zuordnen des Makros zur Schaltfläche Befehl0 im Formular FormMakroTest,
Ereignis: Beim Klicken
•
Testen der Schaltfläche im Formular FormMakroTest
4.
Programmentwicklung mit VBA
Module enthalten Prozeduren, sie sind selbst nicht ausführbar.
Modultypen:
Modul
Standardmodul
Klassenmodul
Formularmodul
Berichtsmodul
Ein Standardmodul ist für die gesamte Datenbank gültig und sollte deshalb Prozeduren und
Funktionen für häufig an verschiedenen Stellen benötigte Aufgaben enthalten.
Ein Klassenmodul ist mit einem Objekt verbunden.
Jedem Formular oder Bericht ist genau ein Klassenmodul zugeordnet.
Access erstellt Formular- und Berichtsmodule automatisch, wenn eine Ereignisprozedur
für ein Formular oder einen Bericht erstellt wird.
Prozeduren sind Einheiten, die ausführbare Programme repräsentieren.
→ Notation als Quelltext in der Sprache VBA
→ Automatische Übersetzung (Compilation) in maschinen-internen Code
→ Unterscheidung: Deklaration und Ausführung (expliziter oder impliziter Aufruf)
Prozedurtypen:
Aufrufe
• verarbeiten Parameter (Argumente)
• Geben keinen Wert zurück
Prozedur
FunctionProzedur
Aufrufe
• verarbeiten Parameter (Argumente)
• Geben Wert an den Aufrufer zurück
SubProzedur
Allgemeine
Prozedur
Werden als Reaktion auf
Ereignisse implizit ausgeführt
EreignisProzedur
Konstanten bezeichnen Werte, die während der Abarbeitung eines Programms unveränderlich
sind.
Die Werte werden
a. in einer externen Darstellung angegeben (sog. Literale) . Mit der Bezeichnung der
Konstanten wird ihr Datentyp festgelegt.
Beispiele:
4,
"Dresden",
#12.04.2005#
b. durch eine Konstantendeklaration festgelegt, wobei die Konstante einen Namen erhält.
Beispiel:
Const mws = 0.16
Variablen
bezeichnen Speicherplätze, die während der Abarbeitung eines Programms
nacheinander verschiedene Werte eines bestimmten Datentyps aufnehmen
können.
Beispiel:
summe ist der Name einer Variablen.
Die Zuordnung eines Datentyps zu einer Variablen erfolgt explizit durch eine
Variablendeklaration oder implizit.
Syntax:
<vartyp> <variable> As <datentypname> [, <variable> As <datentypname> ] …
Beispiel:
Dim menge As Integer, preis As Integer
Mittels Wertzuweisungen können Variablen Werte zugewiesen werden.
Beispiel:
summe = 2+3
Der Variablen mit dem Namen links vom Zuweisungssymbol (=) wird der Wert
zugewiesen, der sich bei der Berechnung des rechts vom Zuweisungssymbol stehenden
Ausdrucks ergibt.
Programm:
Folge (Sequenz) von Anweisungen
Anweisungen sind
► Wertzuweisungen
► Prozeduraufrufe
(keine Funktionsaufrufe!)
► Steuerstrukturen zur Ablaufsteuerung
Regeln für Sichtbarkeit (Scope ) und Lebensdauer (Extent) von Variablen
Bezeichner
Variablentyp
Sichtbarkeitsbereich
Lebensdauer
Public
Globale Variable
jede Prozedur der
gesamte Laufzeit der
gesamten
Datenbankanwendung
Datenbankanwendung
Private
Global für Modul
jede Prozedur des
Moduls, in dem die
Variable deklariert ist
gesamte Laufzeit der
Datenbankanwendung
Dim
Lokale Variable
nur die Prozedur, in
der die Variable
deklariert ist
nur während der
Ausführungszeit der
Prozedur
Static
Lokale Variable
nur die Prozedur, in
der die Variable
deklariert ist
gesamte Laufzeit der
Datenbankanwendung
Beispiel:
Prozedur, die einen Zähler realisiert, der bei jedem Prozeduraufruf
den Wert einer Zustandsvariablen z um 1 erhöht.
Der Wert wird in einer „Message Box“ ausgegeben.
Prozedurdeklaration:
Public Sub Zähler()
Static z As Integer
z = z + 1
MsgBox "Zustand:" & z, vbInformation
End Sub
Prozeduraufruf:
Zähler
Prozedurausführung:
Das im Beispiel verwendete Meldungsfenster (MsgBox) kann sowohl als Funktion als auch
als Sub-Prozedur angewendet werden.
Syntax:
MsgBox( <text>, <schaltflächen>, <titel> )
Verwendung als Funktion
MsgBox <text>, <schaltflächen>, <titel>
Verwendung als Prozedur
<text>
enthält den anzuzeigenden Meldungstext
<schaltflächen>
spezifiziert die anzuzeigenden Schaltflächen.
Es existieren vordefinierte Symbole, die mit Konstanten benannt
werden können.
<titel>
bestimmt den Text in der Titelleiste des Meldungsfensters
Bei Anwendung als Funktion liefert der MsgBox-Aufruf den Wert der betätigten Schaltfläche.
Folgende Werte werden von den in Meldungsfenstern dargestellten Schaltflächen geliefert:
Wert
Konstante
Gewählte Schaltfläche
1
vbOK
OK
2
vbCancel
Abbrechen
3
vbAbort
Abbrechen
4
vbRetry
Wiederholen
5
vbIgnore
Ignorieren
6
vbYes
Ja
7
vbNo
Nein
Vordefinierte Konstanten für das Anzeigen von Schaltflächen, Symbolen und anderen Einstellungen:
Beachte: Kombinationen der Werte bei Verwendung von Schaltflächen und Symbolen.
Eingabedialoge
Public Function Mehrwertsteuer()
Dim wert
wert = InputBox("Bitte Betrag eingeben:", _
"Berechnung der Mehrwertsteuer")
wert = FormatCurrency((Nz(wert, 0) * 0.19), 2)
MsgBox "Ergebnis:" & wert
End Function
Die Gestaltung von Eingabedialogen erfolgt mittels InputBox.
Syntax:
InputBox( <text>, <titel>, <vorgabe> )
Verwendung als Funktion
<text>
enthält einen Meldungstext als Eingabeaufforderung
<titel>
spezifiziert den Text in der Titelleiste des Fensters
<vorgabe>
Wert der im Eingabefeld als Vorgabe angezeigt werden soll
Semantik:
Rückgabewert ist die Eingabe des Anwenders im Eingabefeld. Der Datentyp
des Rückgabewertes ist String bzw. Variant.
Bei Betätigen der Schaltfläche „Abbrechen“ ist der Rückgabewert ein leerer
String.
Operatoren
In den bisherigen Beispielen wurden bereits Operatoren in Ausdrücken verwendet.
Grundsätzlich werden Klassen von Operatoren unterschieden:
► Zeichenkettenoperatoren
Verkettungsoperator: &
Bsp.:
"Datenbank" & "fenster" →
"Datenbankfenster"
► Arithmetische Operatoren
+,-,*, /
\
ganzzahlige Division – Quotient
MOD
ganzzahlige Division – Rest (modulo – Operator)
^
Potenz
► Vergleichsoperatoren
=, <>, >, <, >=, <=, Like
► Logische Operatoren
Not, And, Or, Xor
Steuerstrukturen
Ein Programm besteht aus einer (zeilenweise notierten) Folge von Anweisungen, die der
Reihe nach ausgeführt werden. Eine solche Folge nennt man Anweisungssequenz.
Als Alternative wird eine Programmkonstruktion bezeichnet, die es erlaubt,
-
eine Anweisungsfolge in Abhängigkeit vom Ergebnis der Auswertung einer
Bedingung auszuführen oder nicht auszuführen, oder
-
zwei unterschiedliche Anweisungsfolgen je nach Ergebnis der Auswertung einer
Bedingung (True oder False ) auszuführen.
Syntax:
If
End If
<bedingung> Then
<anweisungsfolge>
If
<bedingung> Then
<anweisungsfolge1>
Else
<anweisungsfolge2>
End If
Beispiel:
Public Sub Rabatt()
Dim anzahl As Integer, ausgabe As String
Dim einzelpreis As Double, gesamtpreis As Double
anzahl = InputBox("Wieviele Teile bestellt: ")
einzelpreis = 10
gesamtpreis = anzahl * einzelpreis
If gesamtpreis >= 100 Then
ausgabe = "rabatt möglich"
Else
ausgabe = "kein Rabatt möglich!"
End If
MsgBox ausgabe
End Sub
Beispiel für eine Fallauswahl:
Public Sub Noten()
Dim note As Integer, text As String
note = InputBox("Bitte Note eingeben:","Noteneingabe")
Select Case note
Case 1
text = "Note: sehr gut"
Case 2
text = "Note: gut"
Case 3
text = "Note: befriedigend"
Case 4
text = "Note: genügend"
Case 5
text = "Note: ungenügend"
Case Else
text = "keine gültige Note!"
End Select
MsgBox text, vbInformation, "Beispiel Noten"
End Sub
Als Iteration (Schleife) wird eine Programmkonstruktion bezeichnet, die es ermöglicht, eine
Anweisungsfolge wiederholt auszuführen.
Die Anzahl der Wiederholungen kann durch einen Zähler gesteuert werden oder
vom Ergebnis der Auswertung einer Bedingung in jedem Schleifendurchlauf abhängen.
Zähler-gesteuerte Iteration
Syntax:
For <zähler> = <startwert> To <endwert> [Step <schrittweite>]
<anweisungsfolge>
Next
Semantik:
Für <zähler> ist der Name einer Variablen einzusetzen. <startwert>, <endwert> und
<schrittweite> stehen für Ausdrücke, deren Auswertung jeweils eine ganze Zahl liefert.
Die <anweisungsfolge> wird wiederholt ausgeführt. Die Anzahl der Wiederholungen
ergibt sich aus <endwert> - <startwert>+1, falls keine <schrittweite> angegeben wurde,
d.h. die <schrittweite> ist in diesem Fall gleich 1.
Die <anweisungsfolge> wird das erste Mal mit dem <startwert> als Wert für <zähler>
ausgeführt,
anschließend wird der <zähler> um die <schrittweite> erhöht bzw. erniedrigt und geprüft,
ob der <endwert> über- bzw. unterschritten wurde. Ist das nicht der Fall,
wird die <anweisungsfolge> erneut ausgeführt usw.
Bedingungs-gesteuerte Iteration:
„anfangsgesteuert“
Syntax:
Do While <bedingung>
<anweisungsfolge>
Loop
Semantik:
Zuerst wird <bedingung> ausgewertet.
Liefert die Auswertung des als <bedingung> formulierten Ausdrucks True,
wird anschließend die <anweisungsfolge> ausgeführt und
es wird mit der erneuten Auswertung der <bedingung> fortgesetzt.
Die Iteration wird beendet, wenn die Auswertung der <bedingung> erstmals den
Wert False liefert. Die Abarbeitung wird in diesem Fall mit der auf Loop logisch
folgenden Anweisung fortgesetzt.
“endegesteuert”
Syntax:
Do
<anweisungsfolge>
Loop Until <bedingung>
Semantik:
Zuerst wird die <anweisungsfolge> ausgeführt.
Anschließend wird <bedingung> ausgewertet.
Liefert die Auswertung des als <bedingung> formulierten Ausdrucks True,
wird die Iteration beendet. Die Abarbeitung wird in diesem Fall mit der auf Loop
logisch folgenden Anweisung fortgesetzt.
Liefert die Auswertung des als <bedingung> formulierten Ausdrucks False, wird
anschließend die <anweisungsfolge> ausgeführt und es wird mit der erneuten
Auswertung der <bedingung> fortgesetzt.
Beispiel:
Berechnung des größten gemeinsamen Teilers zweier natürlicher Zahlen
p und q , mit p > 0 und q > 0.
Public Function ggt(p As Long, q As Long)
Dim h As Long, r As Long
If q > p Then
h = p
p = q
q = h
End If
r = p Mod q
Do While r <> 0
p = q
q = r
r = p Mod q
Loop
ggt = q
End Function
Objekte in Access
Access-Elemente – wie Tabellen, Formulare, Berichte, Steuerelemente usw. –
sind Objekte. Von einem VBA-Programm kann auf Objekte zugegriffen werden.
► Jedes Objekt besitzt individuelle Eigenschaften, d.h. Ausprägungen von Merkmalen.
► Auf jedes Objekt können Operationen angewendet werden. Solche Operationen
werden als Methoden bezeichnet.
Bestimmte Access-Objekte haben definierte Namen und können über diese Namen
angesprochen werden. Man spricht: „... können referenziert werden“.
Wichtige Objekte zeigt die folgende Übersicht:
Objektname
Bedeutung
Application
Die MS_Access - Anwendung
Controls
Auflistung aller Steuerelemente eines Formulars
oder Berichts
Debug
Direktfenster
DoCmd
Interpreter für Aktionen (Makrointerpreter)
Forms
Auflistung geöffneter Formulare
Reports
Auflistung geöffneter Berichte
Module
Formular- oder Berichtsmodul
Das Objekt Application wird von Access beim Öffnen einer Datenbank erzeugt.
Zwischen den Objekten ist eine Hierarchiebeziehung „enthält“ definiert:
Application enthält Formulare (Forms), Berichte (Reports), das Direktfenster (Debug),
den Makrointerpreter (DoCmd) usw.
Forms repräsentiert eine Auflistung (Collection) enthaltener Elemente,
also alle definierten Formulare.
Jedes Formular enthält das Objekt Controls. Das Objekt Controls repräsentiert eine
Auflistung (Collection) enthaltener Steuerelemente.
Reports repräsentiert eine Auflistung (Collection) enthaltener Elemente,
also alle definierten Berichte.
Jeder Bericht enthält das Objekt Controls. Das Objekt Controls repräsentiert eine
Auflistung (Collection) enthaltener Steuerelemente.
Weitere Objektnamen vergibt Access automatisch beim Erzeugen von Steuerelementen
in Formularen und Berichten.
Falls eine hierarchische Folge von Objekten vorliegt, werden die einzelnen Objekte
nacheinander und durch Punkt (.) getrennt notiert.
Mit Ausrufezeichen (!) schließt man den Namen eines Objekts (Formulars oder Berichts)
an ein Auflistungs-Objekt an, wenn man ein bestimmtes Objekt der Auflistung
referenzieren möchte.
<objektreferenz>
steht nachfolgend
• für den Namen eines Objekts oder
• für einen Ausdruck, der das Objekt in der Objekthierarchie eindeutig bestimmt,
d.h. für eine Auflistung von Objektnamen, die jeweils durch . oder ! getrennt sind.
Beispiel:
Application.Forms!FormTestArtikel.Caption
Name des Formulars
Auflistung aller Formulare
Bei Auflistungen ! Statt .
Eigenschaftsname:
Beschriftung des Formulars
Syntax zum Zugriff auf Objekteigenschaften:
.
<objektreferenz> <merkmalsname>
Diese Notation ist wie ein Variablenname zu verwenden:
•
•
auf der rechten Seite einer Wertzuweisung repräsentiert sie einen Zugriff auf den
Merkmalswert.
auf der linken Seite einer Wertzuweisung bedeutet sie, dass der bisherige Merkmalswert
durch das Ergebnis der Auswertung des rechts stehenden Ausdrucks ersetzt wird.
Me ist ein spezielles Schlüsselwort in VBA. Es bezeichnet das jeweils aktuelle Objekt.
Innerhalb der Prozeduren eines Formularmoduls kann mittels des Schlüsselwortes Me auf
das zum Modul gehörige (und gerade geöffnete) Formular Bezug genommen werden.
Beispiel: Um einem Textfeld Text1, das sich auf einem geöffneten Formular
FormT1 befindet, die Zeichenkette "Dresden" zuzuweisen, können die
folgenden Notationen gleichwertig benutzt werden:
Application.Forms!FormT1.Text1 = "Dresden″
Me.Text1 = "Dresden″
Objektvariablen sind eine spezielle Art von Variablen, die Referenzen auf Objekte
aufnehmen können. Objektvariablen sind vom Nutzer wie andere Variablen auch zu
deklarieren.
Syntax:
Dim <objektvariablenname> As <objektdatentyp>
4.4 Laufzeitfehler
Laufzeitfehler machen sich zur „Lauf-Zeit“ – also während der Ausführung – eines
Programms bemerkbar, sie führen zum ungewollten Abbruch der Abarbeitung.
Laufzeitfehler werden von Fehlern unterschieden, die zur „Compile-Zeit“ – also während
der Übersetzung – eines Programms feststellbar sind.
Zur Compile-Zeit feststellbar:
→ Syntax-Fehler
→ Fehler bzgl. der statische Semantik
Beispiel:
Funktionsprozedur ggt zur Berechnung des größten gemeinsamen Teilers zweier
Zahlen p und q.
Falls der kleinere der beiden Parameterwerte gleich 0 ist, gibt es einen Abbruch
aufgrund einer versuchten Division durch 0 an der Stelle:
…
r = p Mod q
…
► Ein Programm kann so gestaltet werden, dass im Falle des Auftretens von Laufzeitfehlern
und in Abhängigkeit des Typs dieser Fehler
vom Nutzer zur Behandlung vorgesehene Programmteile ausgeführt werden.
In diesen Programmteilen können möglicherweise sogar Fehlerursachen behoben werden.
In diesen Fällen ist es sinnvoll, an der Stelle mit der Abarbeitung fortzusetzen, an der ein
Abbruch aufgrund eines Fehlers stattgefunden hat. Ist dies nicht möglich, kann das
Programm zumindest kontrolliert beendet werden.
Beispiel:
Funktionsprozedur ggt. Falls der kleinere der beiden Parameterwerte gleich 0 ist, gibt es
keinen Abbruch aufgrund einer Division durch 0.
Als größter gemeinsamer Teiler wird in diesem Fall 0 geliefert.
Public Function ggt(p As Long, q As Long)
Dim h As Long, r As Long
On Error GoTo ggt_err
If q > p Then
h = p
p = q
q = h
End If
r = p Mod q
Do While r <> 0
p = q
q = r
r = p Mod q
Loop
ggt = q
Exit Function
ggt_Exit:
ggt = 0
Exit Function
ggt_err:
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
Resume ggt_Exit
End Function
► Einschalten der Fehlerüberwachung
On Error GoTo
►
<sprungmarke>
Aktuelle Prozedur verlassen und Fehlerüberwachung abschalten
Exit Sub
►
Fortsetzung des Programms mit der Ausführung der Anweisung,
in der die Unterbrechung aufgetreten war
(Vorsicht Endlosschleife!)
Resume
►
Fortsetzung mit der auf die fehlerhafte Anweisung folgenden
Anweisung
Resume Next
►
Fortsetzung an der mit <sprungmarke> gekennzeichneten Anweisung
Resume
<sprungmarke>
Datenzugriff mit VBA
1. Domänenfunktionen für Tabellen
2. Datenzugriffsobjekte
(Data Access Objects – DAO)
3. Seit Access 2000:
ActiveX-Datenobjekte (ActiveX Data Objects – ADO)
Die ADO-Architektur
► Mit Hilfe von ADO-Objekten können Client-Anwendungen komfortabel auf Daten
eines Datenbankservers zugreifen.
► Die ADO-Architektur wird hier speziell für den Umgang mit Datenobjekten verwendet,
also z.B. nicht für Strukturänderungen an der Datenbank.
► ADO besteht aus mehreren Teilen, von denen hier nur die Bibliothek ADODB
betrachtet wird, die für Datenzugriffe benötigt wird.
Hierarchie des Objektmodells:
Connection
Errors
Command
Recordset
Parameters
Fields
Mit dem Objekt Connection wird eine Datenverbindung zu einer Datenquelle hergestellt.
Das Objekt repräsentiert die geöffnete Verbindung.
Über die Merkmale (Eigenschaften) des Connection-Objekts werden
Provider, Cursortyp, die Standarddatenbank und das Zeitlimit für eine Verbindung festgelegt
Das Command-Objekt kapselt Informationen zu einem Befehl (z.B. SQL-Anweisung).
Das Objekt Recordset ermöglicht einen Zugriff auf die einzelnen Datensätze einer geöffneten
Datenquelle.
Mit der folgenden Deklaration wird eine Variable vom Typ Recordset im Programm angelegt:
Dim rs As ADODB.Recordset
Erzeugen eines Recordset-Objektes und Initialisieren der Variablen mit dem erzeugten Objekt:
Set rs = new ADODB.Recordset
Öffnen einer Datenquelle:
rs.Open <datenherkunft>, <verbindung>, <cursortyp>,<sperrtyp>
<datenherkunft> ein Objektname (Tabellenname) oder eine SQL-Anweisung als String .
Beispiel: "Artikel"
<verbindung>
Beispiel:
<cursortyp>
Name des aktuellen Connection-Objekts, über das zuvor eine Verbindung
zur Datenquelle aufgebaut worden ist.
CurrentProject.Connection
liefert die gerade geöffnete Verbindung zur aktuellen Datenbank.
Art der Öffnung des Recordset
(davon ist abhängig, welche Aktionen möglich sind).
<sperrtyp>
Art der Sperrmethode, die bei einem gemeinsamen Datenzugriff
anzuwenden ist.
Cursortypen:
adOpenForwardOnly
Einmaliges Durchlaufen der Datensätze;
nur Lesen, nicht Ändern;
geringster Ressourcenverbrauch;
Defaultwert
adOpenStatic
Statische Kopie der Daten verwendet;
beliebige Navigation möglich;
geringer Ressourcenverbrauch
adOpenKeyset
Ändern, Einfügen und Löschen von Zeilen möglich;
Nur die zum Zeitpunkt des Öffnens vorhandenen
Datensätze werden berücksichtigt.
adOpenDynamic
Ändern, Einfügen und Löschen von Zeilen möglich;
Auch Datensätze berücksichtigt, die nach dem Öffnen
durch andere Benutzer eingefügt wurden;
Hoher Ressourcenverbrauch
Sperrtypen:
adLockReadOnly
Es wird ein Recordset erzeugt, in dem nur gelesen werden kann
adLockPessimistic
Pessimistische Sperrmethode:
Datensatz wird gesperrt, sobald mit dem Schreiben begonnen
wird. Es bleibt solange gesperrt, bis die Änderung abgeschlossen
ist.
adLockOptimistic
Optimistische Sperrmethode:
Datensatz wird erst gesperrt, wenn Update erfolgt. Paralleles
Editieren ist möglich. Wer zuerst speichert, dessen Änderung
wird in die Tabelle übernommen.
adLockBatchOptimistic
Änderungen werden in einem Cache gespeichert und später
ausgeführt.
Navigieren innerhalb eines Recordset
MoveFirst
Datensatzzeiger auf den ersten Datensatz stellen
MoveLast
Datensatzzeiger auf den letzten Datensatz stellen
MoveNext
~
nächsten
~
MovePrevious
~
vorherigen
~
Move <anzahl>
~ um <anzahl> weiter
(bei negativer Zahl zurück)


True
wenn Recordset keinen Datensatz enthält
oder nach Anwendung von MovePrevious,
wenn DS-Zeiger auf erstem Datensatz stand
False
sonst
BOF = 


~
EOF =





True
wenn Recordset keinen Datensatz enthält
oder nach Anwendung von MoveNext,
wenn DS-Zeiger auf letzten Datensatz stand
False
sonst
Prüfen, ob in einem Recordset Datensätze vorhanden sind:
If rs.EOF And rs. BOF Then
Aktion, wenn keine Datensätze vorhanden
Else
Aktion, wenn keine Datensätze vorhanden
End If
Merke:
Der Zugriff auf ein Datenfeld führt zu einem Laufzeitfehler,
wenn der DS-Zeiger auf BOF oder EOF steht.
Suchen eines Datensatzes im Recordset
Um festzustellen, ob eine Suche (mit find) erfolgreich war, wird
die Eigenschaft EOF (End of File) überprüft:
If rs.EOF Then
Suche war erfolglos
Else
Suche war erfolgreich
End If
Public Sub ArtikelLöschen()
Dim rs As ADODB.Recordset
Dim nr As String
Set rs = New ADODB.Recordset
rs.Open "Artikel3", CurrentProject.Connection, adOpenDynamic, _
adLockOptimistic
nr = InputBox("Artikelnummer:", "Artikel löschen")
Do While Not nr = "*"
rs.Find "ARTNR =" & nr
If rs.EOF Then
Debug.Print "zu löschender Datensatz wurde nicht gefunden!"
Else
If MsgBox("Datensatz" & nr & "wirklich löschen?", vbYesNo, _
"Datensatz löschen") = vbYes Then
rs.Delete
Debug.Print "Datensatz wurde gelöscht"
Else
Debug.Print "Datensatz wurde nicht gelöscht"
End If
End If
nr = InputBox("Artikelnummer:", "Artikel löschen")
Loop
rs.Close
Debug.Print "Programm beendet"
End Sub
Recordset mit SQL-Anweisung öffnen
Beispiel:
Dim
Dim
Set
sql
tabelle As ADODB.Recordset
sql As String
tabelle = new ADODB.Recordset
= "Select ARTNR,ARTBEZEICH,BESTAND
From Artikel Where BESTAND > 100"
tabelle.Open sql,CurrentProject.Connection,adOpenStatic,adLockReadOnly
Tabelle ARTIKEL
Recordset
SQL-String
eingeschränkte Tabelle
Beispiel: Auswahl eines Datensatzes nach Eingabe einer Artikelnummer über ein Formular
Dim tabelle As Recordset
Dim sql As String
Dim nr As String
Set tabelle = new Recordset
nr = Forms!Formularx.text1
sql = "Select ARTNR,ARTBEZEICH,BESTAND
From Artikel Where ARTNR='" & nr & "'"
tabelle.Open sql,CurrentProject.Connection,adOpenStatic,adLockReadOnly
Mit der Funktion
VarType( <variablenname> )
kann der Variablentyp einer Variablen ermittelt werden.
Rückgabewert:
Zahl
0
1
2
3
vb-Konstante
vbEmpty
vbNull
vbInteger
vbLong
.
.
.
Datentyp
Empty
Null
Integer
LongInteger
Unterschied:
x = Null
Zuweisung des Null-Wertes
oder
keine Wertzuweisung
→
vbNull
→
vbEmpty
Empty ist ein Subtyp von Variant, der bei einer Deklaration (also vor einer Wertzuweisung)
zugewiesen wird.
Anwendung:
→ Deklaration
Ermitteln, ob ein Recordset initialisiert ist:
Private rs
vor den Ereignisprozeduren eines Formularmoduls
- Typ Variant
- Gültig in allen Prozeduren des Moduls
→
If VarType(rs) = vbEmpty Then
nicht initialisiert
Else
bereits initialisiert
End If
Aktivieren einer Ereignisprozedur bei Auswahl aus Listenfeld
Bericht öffnen mit Bestellungen
5. 4.1 Datenmodellierung
Dienste verwalten
5.1 Das Entity-Relationship-Modell
→ bereits behandelt
5.2 Schlüsselarten / Anforderungen an den Schlüsselaufbau
Ein Schlüssel (key) 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 ggf. auch mehrere Entitäten einer Entitätsmenge angesprochen werden.
• Sortierschlüssel (sort key)
Bestimmt bei einer gegebenen Ordnung der Schlü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.
Indizieren
1. Indexverwaltung
2. Primärschlüsseleigenschaften
3. Indizes erstellen (einfach – zusammengesetzt)
Identifikationsschlüssel
Def.:
Ein Identifikationsschlüssel ist ein Attribut oder
eine minimale Attributkombination, anhand dessen bzw. deren jedes
Tupel der Relation eindeutig 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, dass 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:
•
•
•
•
Eindeutigkeit
(Unveränderlichkeit)
laufende Zuteilbarkeit
(neu auftretende Entität erhält Schlüssel sofort)
Kürze und Schreibbarkeit
„sprechende“ Schlüssel
(aus den Schlüsselwerten sollen bestimmte Eigenschaften der beschriebenen
Entität erkennbar werden)
Verbundschlüssel umfassen einen
→ Identifikationsteil und einen
→ Klassifikationsteil.
Parallelschlüssel sind Verbundschlüssel, bei denen es keine Beziehung zwischen
klassifizierendem und identifizierendem Teil gibt.
Bsp.:
Zugbezeichnung
IC 100.
IC bezeichnet einen Zug der Klasse IC.
100 ist eine willkürliche Bezeichnung, die keine Aussage über
die Art des Zuges liefert.
5.3 Entwurf von Relationen
Strukturregel SR1:
Bei der Darstellung von Entitätsmengen durch Relationen muss für jede Relation ein
Identifikationsschlüssel festgelegt werden.
Notation:
R(A,B,... )
mit
R : Name der Relation (Tabelle)
A,B, … : Namen von Attributen (Spalten)
Die zum Identifikationsschlüssel gehörigen Attribute werden unterstrichen.
Warum kommt es auf einen guten Entwurf von Relationen an ?
→
es kann Anomalien oder Redundanz geben
Anomalien
1. „Insertion“- Anomalie
2. „Deletion“- Anomalie
3. „Update“- Anomalie
Attributabhängigkeiten
1. funktionale Abhängigkeit
2. volle funktionale Abhängigkeit
3. Transitive Abhängigkeit
4. Mehrwertige Abhängigkeit
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.
volle funktionale Abhängigkeit
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.
Def.:
(neu)
Ein Identifikationsschlüssel (IS) ist ein Attribut oder eine Attributkombination,
so dass gilt:
Jedes Attribut einer Relation ist vom IS funktional abhängig,
und kein Attribut aus dem IS ist von den übrigen Attributen des IS
funktional abhängig.
volle funktionale 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.
mehrwertige Abhängigkeit
Def.: In R(A, B, C) ist das Attribut C mehrwertig abhängig von A, wenn
zu einem A-Wert für jede Kombination dieses A-Wertes mit einem B-Wert eine
identische Menge von C-Werten existieren kann.
Normalformen
1 NF
2NF
3NF
BCNF (Boyce/Codd)
4NF
5NF
Beispiel:
Die nachfolgende Relation PERSONEN mit PERS# als Identifikationsschlüssel ist nicht
in der 1NF, da sie für PROJ#, PROJNAME und %ARBZEIT Mehrfacheinträge aufweist.
PERSONEN
PERS#
PERSNAME
ABT#
ABTNAME
PROJ#
PROJNAME
%ARBZEIT
101
Meyer
1
Planung
11,12
A,B
60,40
102
Krause
2
Projektierung
13
C
100
Lösung:
Die Inhalte der Tupel mit Mehrfacheinträgen müssen auf mehrere Tupel
aufgeteilt werden, so dass 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.
Beispiel: Die modifizierte Relation PERSONEN (jetzt PERS-PROJ-TAETIGK) mit dem
Identifikationsschlüssel (PERS#,PROJ#) befindet sich in der 1NF, aber nicht in der 2NF.
PERS-PROJ-TAETIGK
PERS#
PERSNAME
ABT#
ABTNAME
PROJ#
PROJNAME
%ARBZEIT
101
Meyer
1
Planung
11
A
60
101
Meyer
1
Planung
12
B
40
102
Krause
2
Projekti
erung
13
C
100
→ PROJNAME ist von PROJ# allein funktional abhängig.
→ Auch ABT# ist von PERS# allein funktional abhängig
(Annahme: 1 Person kann nicht gleichzeitig zu mehreren Abteilungen gehören).
Lösung:
Aufspalten der Relation PERS-PROJ-TAETIGK
in 3 Relationen PERSONEN, PROJEKTE, PERS-PROJ-TAETIGK
PERSONEN
PERS#
PERSNAME
ABT#
ABTNAME
101
Meyer
1
Planung
102
Krause
2
Projektierung
PROJEKTE
PROJ#
PROJNAME
11
A
12
B
13
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.
→ 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 PERSONEN in zwei Relationen:
PERSONEN(PERS#,PERSNAME,ABT#)
ABTEILUNGEN(ABT#,ABTNAME)
Relationen in der 3NF heißen „normalisiert“.
Beziehungen zwischen Relationen: Globale Normalisierung
Die globale Normalisierung verbindet die existierenden Beziehungen zwischen
Entitätsmengen (ER-Diagramme) 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.
( Sie kommen in mehreren Relationen nicht im Identifikationsschlüssel vor)
Solche Attribute treten bei „sich überlappenden“ Entitätsmengen auf.
Beispiel:
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 zusammengefasst
werden:
Strukturregel SR2:
Die Datenbasis muss 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, dass
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 (welche) dem Identifikationsschlüssel in einer anderen
Relation R1 entspricht, und dessen zugehöriger Wertebereich die Menge genau
jener Werte umfasst, 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.
PERS-PROJ-TAETIGK
PERS#
PERSONEN
PROJ#
%ARBZEIT
Fremdschlüssel
101
11
60
PERS#
PERSNAME
ABT#
101
Meyer
1
101
12
40
102
Krause
2
102
13
100
103
Müller
2
103
11
20
104
Schulze
1
103
12
50
103
13
30
Basisrelation
Def.:
Die referentielle Integrität ist eine Konsistenzbedingung, welche verlangt,
dass Fremdschlüssel in R2 nur Tupel in R1 referenzieren, die z. Z. tatsächlich
existieren.
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 muss in dieser Relation Identifikationsschlüssel sein.
In allen anderen Relationen muss es auf einem dynamischen Wertebereich basieren,
d.h. als Fremdschlüssel aus einer anderen Relation eingebracht werden.
Normalisierungen anhand von ER-Diagrammen
Beziehungstypen bei Relationen:
1
c
m
mc
1
1-1
c-1
m-1
mc - 1
Hierarchische Beziehung
c
1-c
c-c
m-c
mc - c
Konditionelle Beziehung
m
1-m
c-m
m-m
mc - m
Netzwerkartige Beziehung
mc
1 - mc
c - mc
m - mc
mc - mc
Def.:
→
Eine hierarchische Beziehung (H-Beziehung) besteht zwischen den Relationen R1
und R2 genau dann, wenn ein Attribut (oder eine Attributkombination) in R2 als
Fremdschlüssel auf R1 basiert.
Hierarchische Beziehungen lassen sich direkt mit Fremdschlüsseln und dynamischen
Wertebereichen darstellen.
→ Zur Modellierung konditionelle Beziehungen sind zusätzliche Relationen erforderlich.
MÄNNER
c
c
MÄNNER
FRAUEN
FRAUEN
1
1
c
EHE
c
→ Zur Modellierung netzwerkartiger Beziehungen sind zusätzliche Relationen erforderlich.
PERSONEN
mc
m
PERSONEN
PROJEKTE
PROJEKTE
1
1
m
mc
PERS_PROJ_TÄTIGK
Strukturregel SR4:
Rekursive Beziehungen zwischen Entitätstypen sind untersagt (direkte und indirekte).
mc
PERSONEN
↑
Vorgesetzter
↓
Unterstellter
↑
leitet
direkte Rekursion
c
c
ABTEILUNGEN
1
m
↑
PERSONEN
1
gehört zu
indirekte Rekursion
Auflösung: Einführung einer „Beziehungsrelation“
PERSONEN
1
1
mc
mc
vorgesetzt
HIERARCHIE
unterstellt
6.
Datenbankorganisation
6.1
Klassifizierung und Architektur von Datenbanksystemen
6.2
Konsistenz und Transaktionen
6.1
Klassifizierung und Architektur von Datenbanksystemen
1. hierarchische DBS (HDBS)
z.B.: IMS (Fa. IBM, 1968)
2. Netzwerk-DBS
z.B.: IDMS
3. Relationale DBS (RDBS)
z.B.: INGRES, ORACLE, MS ACCESS, dBASE, SYBASE, MySQL
4. Objektorientierte DBS (OODBS)
z.B.: O2, ORION/ITASCA, POET, UniSQL
Das DBMS
-
stellt Abfrage und Modifikationsoperationen bereit
-
gewährleistet die Datenintegrität
-
verwaltet Datenbeschreibungen (Schemaverwaltung)
Funktionsschichten
des DBMS:
Relationenverwalter
Tupelverwalter
Speicherverwalter
Betriebssystem
6.2
Konsistenz und Transaktionen
Konsistenz = Richtigkeit und Widerspruchsfreiheit in einer Ansammlung von Daten.
→
Daten sind konsistent, wenn sie vordefinierte Konsistenzbedingungen einer Datenbank
erfüllen.
→
Man unterscheidet Konsistenzbedingungen, die
Beispiel:
•
dauernd erfüllt sein müssen (Zustandsbedingungen),
•
temporär Inkonsistenzen erlauben (Übergangsbedingungen).
Transaktion: Überweisung 500.- €
Eigenschaften von Transaktionen:
•
•
•
•
atomar
isoliert
consistent
dauerhaft (persistent)
7.
Datenschutz und Informationssicherheit
7.1
Datensicherheit und Datenschutz
7.2
Sicherheit in Netzwerken
7.1
Datensicherheit und Datenschutz
Datensicherheit (data security) umfasst 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.
Datenschutz ist der Schutz der durch Daten dargestellten Sachverhalte des realen Lebens
vor jeder Art von Missbrauch, insbesondere bei Daten über Personen.
Zum Datenschutz gehört die Abschirmung gegen Unberechtigte, aber auch deren
Verfügbarkeit für Berechtigte.
Beispiel:
Aus Datenschutzgründen Bibliotheksnummern für Login-Kennzeichen
Zielkonflikte
► Datenverfügbarkeit verlangt Duplikate, Datenabschirmung will Duplikate vermeiden
► Mehrbenutzersysteme erschweren die Datensicherheit
(Synchronisation, inkrementelle Duplizierung)
► Datenkonsistenz kann sehr leistungsbehindernd sein
► Datenschutzmaßnahmen können neue Datenschutzprobleme schaffen
7.2
Sicherheit in Netzwerken
Anforderungen:
Vertraulichkeit
- Vertraulichkeit von Nachrichteninhalten
- Anonymität von Sender und/oder Empfänger
- Unbeobachtbarkeit
- keine Preisgabe des Ortes mobiler Kommunikationsstationen
Integrität
- Erkennbarkeit von Fälschungen des Nachrichteninhaltes
Verfügbarkeit
- Kommunikation zwischen allen Partnern, die dies wünschen
Verbindlichkeit/Zurechenbarkeit
- Nachweisbarkeit, dass Instanz x Nachricht y (mit korrektem Inhalt) gesendet hat
- Beweismittel für Betreiber über Diensteinanspruchnahmen
Geheime Kommunikation
Kryptographie
Transposition
Steganographie
Substitution
Kryptologie = Kryptographie + Kryptoanalyse
Maria Stuart
enthauptet am 8.2.1587
wegen Hochverrats
Crypto system
M : plaintext space
C : ciphertext space
K : key space
M  M : plaintext message
C  C : ciphertext message
K  K : key
E = Encrypt
D = Decrypt
E(M )=C
E:M× KC
D(C )=M
D:C× KM
DK (EK (M) ) = M
| M  M
Schlüsselaustausch nach Diffie/Hellman (1976)
Die Kommunikationspartner A und B können jeder einen gemeinsamen Schlüssel K erzeugen, ohne
geheime Informationen austauschen zu müssen.
Beispiel:
A
B
A und B vereinbaren zwei Zahlen g = 4 und p = 11
A wählt seinen privaten Schlüssel XA = 3
B wählt seinen privaten Schlüssel XB=4
A berechnet seinen öffentlichen Schlüssel
B berechnet seinen öffentlichen Schlüssel
YA
= g XA mod p
YB
= 4 3 mod 11 = 64 mod 11 = 9
= g XB mod p
= 4 4 mod 11
= 256 mod 11
=3
A sendet YA an B
B sendet YB an A
A berechnet den Sitzungsschlüssel K:
B berechnet den Sitzungsschlüssel K:
K = YBXA = 33 mod 11 = 27 mod 11 = 5
K = YAXB = 94 mod 11 = 6561 mod 11 = 5
Whitfield Diffie, * 1944
Martin Hellman, * 1946
Random number
symmetric encryption
k = secure key
Key
generator
k
ciphertext
plaintext
x
encrypt
C(x)
plaintext
decrypt
x
B
A
asymmetric encryption
s = private key
Key
generator
t = public key
ciphertext
plaintext
x
decrypt
A
C(x)
plaintext
encrypt
B
x
8.
Kommunikationssysteme
8.1
Technisch- technologische Grundlagen
8.2
Kommunikationsdienste
8.1
Technisch-technologische Grundlagen
► Prozess:
ein sich gerade auf einem Rechner in Abarbeitung befindliches
Programm (z.B. Explorer, MS Access, PuTTY, … )
mit GUI oder über Kommandozeile bedienbar/startbar
► Computer arbeiten in einem Netzwerk zusammen. Auf jedem Rechner laufen
Prozesse (P1, …) ab.
Rechner 1
P1
Rechner 2
P2
P3
Betriebssystem-“Kern“
Verteiltes System → Netzwerkbetriebssystem: Jeder Benutzer ist sich der Existenz mehererer
Rechner im Netz bewusst
► Prozesse können miteinander kommunizieren über
• Temporäre Dateien
• Pipes
• Signale
• Shared Memory
• Semaphore
• Messages
• Sockets (IP-Adresse + Portnummer)
► Client – Server – Prinzip
Prozesse realisieren Dienste:
Dienstenutzer (Clients) -
Diensteanbieter (Server)
Rechner 1
P1
Rechner 2
P2
P3
Socket
Socket
► Alle angeschlossenenen Rechner können sich gegenseitig Dienste anbieten
► Client und Server können sich auf demselben Rechner befinden
IP-Adressen:
(IPv4)
4 Zahlen zwischen 0 und 255, jeweils durch Punkt getrennt,
weltweit eindeutig vergeben.
Beispiel:
192.168.24.105
192.168.24
Netzadresse
Rechneradresse
Subnetzmaske
105
255.255.255.0
Klasse
W-Werte
Netzwerk-ID
Host-Id
max Netzwerke
max Hosts
A
1-126
w
x.y.z
126
16.777.214
B
128-191
w.x
y.z
16384
65.534
C
192-223
w.x.y
z
2.097.151
254
127 für Loop-back-Tests (127.0.0.1) Komm. Zwischen Prozessen auf lokalem Rechner
Adressübersetzung
► Um Datenpakete aus Netzwerken weiterleiten zu können, werden Router eingesetzt.
► Routing ist das Weiterleiten von Datenpaketen aus einem Netzwerk in ein anderes.
LAN 192.168.0.0
myPC
192.168.0.104
Internet
Router
Home-win
192.168.0.101
karlsPC
192.168.0.102
ISDN
195.234.113.11
NAT (Network Address Translation) :
Das gesamte LAN ist nur als 195.234.113.11
ansprechbar.
8.2
Kommunikationsdienste
Beispiel: An der Eingabeaufforderung feststellen, ob ein Computer erreichbar ist
ping 141.56.20.1
ping iaix1.informatik.htw-dresden.de
Beispiel: Finger-Dienst - Informationen über Nutzer im System
finger s52663
finger Arnoldt
Informationen können vom Nutzer in einer Datei bereitgestellt werden.
→ Textdatei .plan im Homeverzeichnis
Herunterladen