Wirtschaftsinformatik II Datenorganisation Datenbanken Kommunikation Studiengang Wirtschaftsingenieurwesen Sommersemester
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 fritzsche@informatik. htw-dresden. de 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, . . . Dateien Persistenz intern: „statisch“ vs. Anforderung bereits zur Übersetzungszeit bekannt (Compiler) „dynamisch“ Anforderung erst zur Laufzeit bekannt
Ü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 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 Tabelle Spalte Datensatz, Zeile Domäne • Grad (degree) • Kardinalität Anzahl der Attribute Anzahl der Datensätze
Beispiel für das gesamte Semester: 4 Objekttypen aus dem Geschäftsbereich einer Handelsfirma (Kaufen, Verkaufen) Artikel enthalten werden geliefert von Lieferanten Vorlesung: Praktikum: Bestellungen enthalten 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 – 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. 1970 Aue Schmitt Petra 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. 1970 Tanzen Schmitt Petra 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 - 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 Auto. Wert 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 Auto. Wert darf nur einmal pro Tabelle vergeben werden. 4 Byte Ja/Nein Es gibt genau zwei Werte, 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 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 Datensätze aus einer Tabelle in zweite Tabelle einfügen löschen von Datensätzen aus einer Tabelle, die eine bestimmte Bedingung erfüllen • Löschabfragen
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) (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 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 Form. Makro. Test, das eine Befehlsschaltfläche mit der Beschriftung „Formularaufruf“ enthält. Durch ein mit der Schaltfläche verknüpftes Makro. Test. Formular soll bewirkt werden, dass • ein bereits existierendes Formular Form 1 Artikel geöffnet und • das Formular Form. Makro. Test geschlossen wird.
Klick
Lösung: • Objekt Makros → Neu • Einfügen Aktionen: - Öffnen Formularname: Form 1 Artikel - Schließen Objekttyp: Formular Objektname: Form. Makro. Test • Speichern des Makros unter dem Namen Makro. Test. Formular • Zuordnen des Makros zur Schaltfläche Befehl 0 im Formular Form. Makro. Test, Ereignis: Beim Klicken • Testen der Schaltfläche im Formular Form. Makro. Test
4. Programmentwicklung mit VBA Module enthalten Prozeduren, sie sind selbst nicht ausführbar. Modultypen: Modul Standardmodul Formularmodul Klassenmodul 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 Function. Prozedur Aufrufe • verarbeiten Parameter (Argumente) • Geben Wert an den Aufrufer zurück Sub. Prozedur Allgemeine Prozedur Werden als Reaktion auf Ereignisse implizit ausgeführt Ereignis. Prozedur
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: Beispiel: <vartyp> <variable> As <datentypname> [, <variable> As <datentypname> ] … 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 sind ► Wertzuweisungen ► Prozeduraufrufe (keine Funktionsaufrufe!) ► Steuerstrukturen zur Ablaufsteuerung
Regeln für Sichtbarkeit (Scope ) und Lebensdauer (Extent) von Variablen Bezeichner Variablentyp Sichtbarkeitsb Lebensdauer ereich Public Globale Variable jede Prozedur der gesamten Datenbankanw endung gesamte Laufzeit der Datenbankanw endung Private Global für Modul jede Prozedur des Moduls, in dem die Variable deklariert ist gesamte Laufzeit der Datenbankanw endung Dim Lokale Variable nur die Prozedur, in der die Variable deklariert ist nur während der Ausführungsze it der Prozedur Static Lokale Variable nur die Prozedur, in der die gesamte Laufzeit der Datenbankanw
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 Msg. Box "Zustand: " & z, vb. Information End Sub Prozeduraufruf: Zähler Prozedurausführung:
Das im Beispiel verwendete Meldungsfenster (Msg. Box) kann sowohl als Funktion als auch als Sub-Prozedur angewendet werden. Syntax: Msg. Box( <text>, <schaltflächen>, <titel> ) Verwendung als Funktion Msg. Box <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 Msg. Box-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 vb. OK OK 2 vb. Cancel Abbrechen 3 vb. Abort Abbrechen 4 vb. Retry Wiederholen 5 vb. Ignore Ignorieren 6 vb. Yes Ja 7 vb. No 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 = Input. Box("Bitte Betrag eingeben: ", _ "Berechnung der Mehrwertsteuer") wert = Format. Currency((Nz(wert, 0) * 0. 19), 2) Msg. Box "Ergebnis: " & wert End Function
Die Gestaltung von Eingabedialogen erfolgt mittels Input. Box. Syntax: Input. Box( <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 <anweisungsfolge 1> Else <anweisungsfolge 2> End If
Beispiel: Public Sub Rabatt() Dim anzahl As Integer, ausgabe As String Dim einzelpreis As Double, gesamtpreis As Double anzahl = Input. Box("Wieviele Teile bestellt: ") einzelpreis = 10 gesamtpreis = anzahl * einzelpreis If gesamtpreis >= 100 Then ausgabe = "rabatt möglich" Else ausgabe = "kein Rabatt möglich!" End If Msg. Box ausgabe End Sub
Beispiel für eine Fallauswahl: Public Sub Noten() Dim note As Integer, text As String note = Input. Box("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 Msg. Box text, vb. Information, "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-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 Do. Cmd 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 (Do. Cmd) 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!Form. Test. Artikel. 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 Text 1, das sich auf einem geöffneten Formular Form. T 1 befindet, die Zeichenkette "Dresden" zuzuweisen, können die folgenden Notationen gleichwertig benutzt werden: Application. Forms!Form. T 1. Text 1 = "Dresden″ Me. Text 1 = "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 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 Go. To 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: Msg. Box Err. Number & vb. Cr. Lf & Err. Description, vb. Critical, "Error!" Resume ggt_Exit End Function
► Einschalten der Fehlerüberwachung On Error Go. To ► <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: 4. Active. X-Datenobjekte (Active. X 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. Current. Project. 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: ad. Open. Forward. Only Einmaliges Durchlaufen der Datensätze; nur Lesen, nicht Ändern; geringster Ressourcenverbrauch; Defaultwert ad. Open. Static Statische Kopie der Daten verwendet; beliebige Navigation möglich; geringer Ressourcenverbrauch ad. Open. Keyset Ändern, Einfügen und Löschen von Zeilen möglich; Nur die zum Zeitpunkt des Öffnens vorhandenen Datensätze werden berücksichtigt. ad. Open. Dynamic Ä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: ad. Lock. Read. Only Es wird ein Recordset erzeugt, in dem nur gelesen werden kann ad. Lock. Pessimistic Pessimistische Sperrmethode: Datensatz wird gesperrt, sobald mit dem Schreiben begonnen wird. Es bleibt solange gesperrt, bis die Änderung abgeschlossen ist. ad. Lock. Optimistic Optimistische Sperrmethode: Datensatz wird erst gesperrt, wenn Update erfolgt. Paralleles Editieren ist möglich. Wer zuerst speichert, dessen Änderung wird in die Tabelle übernommen. ad. Lock. Batch. Optimistic Änderungen werden in einem Cache gespeichert und später ausgeführt.
Navigieren innerhalb eines Recordset Move. First Datensatzzeiger auf den ersten Datensatz stellen Move. Last Datensatzzeiger auf den letzten Datensatz stellen Move. Next ~ nächsten ~ Move. Previous ~ vorherigen ~ Move <anzahl> ~ um <anzahl> weiter (bei negativer Zahl zurück) True wenn Recordset keinen Datensatz enthält oder nach Anwendung von Move. Previous, wenn DS-Zeiger auf erstem Datensatz stand False sonst BOF = ~
EOF = True wenn Recordset keinen Datensatz enthält oder nach Anwendung von Move. Next, 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 End If Suche war erfolgreich
Public Sub Artikel. Löschen() Dim rs As ADODB. Recordset Dim nr As String Set rs = New ADODB. Recordset rs. Open "Artikel 3", Current. Project. Connection, ad. Open. Dynamic, _ ad. Lock. Optimistic nr = Input. Box("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 Msg. Box("Datensatz" & nr & "wirklich löschen? ", vb. Yes. No, _ "Datensatz löschen") = vb. Yes Then rs. Delete Debug. Print "Datensatz wurde gelöscht" Else Debug. Print "Datensatz wurde nicht gelöscht" End If nr = Input. Box("Artikelnummer: ", "Artikel löschen") Loop rs. Close Debug. Print "Programm beendet" End Sub
Recordset mit SQL-Anweisung öffnen Beispiel: Dim tabelle As ADODB. Recordset Dim sql As String Set tabelle = new ADODB. Recordset sql = "Select ARTNR, ARTBEZEICH, BESTAND From Artikel Where BESTAND > 100" tabelle. Open sql, Current. Project. Connection, ad. Open. Static, ad. Lock. Read. Only 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. text 1 sql = "Select ARTNR, ARTBEZEICH, BESTAND From Artikel Where ARTNR='" & nr & "'" tabelle. Open sql, Current. Project. Connection, ad. Open. Static, ad. Lock. Read. Only
Mit der Funktion Var. Type( <variablenname> ) kann der Variablentyp einer Variablen ermittelt werden. Rückgabewert: Zahl 0 1 2 3 vb-Konstante vb. Empty vb. Null vb. Integer vb. Long. . . Datentyp Empty Null Integer Long. Integer Unterschied: x = Null Zuweisung des Null-Wertes oder keine Wertzuweisung → vb. Null → vb. 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 Var. Type(rs) = vb. Empty 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 SR 1: 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(S 1, S 2, A) ist das Attribut A von (den Schlüsseln) S 1, S 2 voll funktional abhängig, wenn A von dem zusammengesetzten Attribut (S 1, S 2) funktional abhängig ist, nicht aber von einem einzelnen Attribut S 1 oder S 2.
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 2 NF 3 NF BCNF (Boyce/Codd) 4 NF 5 NF
Beispiel: Die nachfolgende Relation PERSONEN mit PERS# als Identifikationsschlüssel ist nicht in der 1 NF, 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 1 NF, aber nicht in der 2 NF. 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 3 NF, 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 3 NF 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#, STUDIENGANG) Die gewonnenen Erkenntnisse können nun in einer zweiten Strukturregel zusammengefasst werden: Strukturregel SR 2: Die Datenbasis muss aus Relationen in der 3 NF 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 R 2 ist ein Attribut (oder eine Attributkombination), welches (welche) dem Identifikationsschlüssel in einer anderen Relation R 1 entspricht, und dessen zugehöriger Wertebereich die Menge genau jener Werte umfasst, welche die aktuell in R 1 enthaltenen Tupel identifizieren. R 1 heißt Basisrelation des Fremdschlüssels.
Beispiel: Sei R 1 PERSONEN(PERS#, PERSNAME, ABT#) und R 2 PERS-PROJ-TAETIGK(PERS#, PROJ#, %ARBZEIT) → PERS# ist Fremdschlüssel in PERS-PROJ-TAETIGK und Identifikationsschlüssel in 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 104 Schulze 1 103 11 20 103 12 50 103 13 30 Basisrelation Def. : Die referentielle Integrität ist eine Konsistenzbedingung, welche verlangt, dass Fremdschlüssel in R 2 nur Tupel in R 1 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 SR 3: 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 mc - 1 Hierarchische Beziehung c 1 - c c - c mc - c Konditionelle Beziehung m 1 - m c - m mc - m Netzwerkartige Beziehung mc 1 - mc c - mc mc - mc Def. : → Eine hierarchische Beziehung (H-Beziehung) besteht zwischen den Relationen R 1 und R 2 genau dann, wenn ein Attribut (oder eine Attributkombination) in R 2 als Fremdschlüssel auf R 1 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 1 1 c EHE c
→ Zur Modellierung netzwerkartiger Beziehungen sind zusätzliche Relationen erforderlich. PERSONEN mc m PERSONEN PROJEKTE 1 1 m mc PERS_PROJ_TÄTIGK
Strukturregel SR 4: Rekursive Beziehungen zwischen Entitätstypen sind untersagt (direkte und indirekte). mc PERSONEN ↑ Vorgesetzter ↓ direkte Rekursion Unterstellter c c ABTEILUNGEN 1 m ↑ gehört zu PERSONEN 1 ↑ leitet indirekte Rekursion
Auflösung: Einführung einer „Beziehungsrelation“ PERSONEN vorgesetzt 1 1 mc mc 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, d. BASE, SYBASE, My. SQL 4. Objektorientierte DBS (OODBS) z. B. : O 2, ORION/ITASCA, POET, Uni. SQL
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, 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 YB = g XA mod p = 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, Pu. TTY, … ) mit GUI oder über Kommandozeile bedienbar/startbar ► Computer arbeiten in einem Netzwerk zusammen. Auf jedem Rechner laufen Prozesse (P 1, …) ab. Rechner 1 P 1 Rechner 2 P 2 P 3 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 P 1 Rechner 2 P 2 P 3 Socket ► Alle angeschlossenenen Rechner können sich gegenseitig Dienste anbieten ► Client und Server können sich auf demselben Rechner befinden
IP-Adressen: (IPv 4) 4 Zahlen zwischen 0 und 255, jeweils durch Punkt getrennt, weltweit eindeutig vergeben. Beispiel: 192. 168. 24. 105 192. 168. 24 105 255. 0 Netzadresse Rechneradresse Subnetzmaske 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 Internet my. PC 192. 168. 0. 104 Router Home-win 192. 168. 0. 101 karls. PC 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 iaix 1. informatik. htw-dresden. de
Beispiel: Finger-Dienst - Informationen über Nutzer im System finger s 52663 finger Arnoldt Informationen können vom Nutzer in einer Datei bereitgestellt werden. → Textdatei. plan im Homeverzeichnis
- Slides: 169