Wirtschaftsinformatik II Datenorganisation – Datenbanken – Kommunikation Skript zur Lehrveranstaltung Hartmut Fritzsche Hochschule für Technik und Wirtschaft Dresden (FH) Fachbereich Informatik/Mathematik 6. Juni 2006 Inhaltsverzeichnis 1 GRUNDLAGEN DER DATENORGANISATION .......................................................... 3 1.1 Motivation: Speichern und Wiederfinden .................................................................. 3 1.2 Datenbanksysteme ...................................................................................................... 3 2 EINFÜHRUNG IN DAS RELATIONALE DATENMODELL........................................ 4 2.1 Strukturteil .................................................................................................................. 4 2.2 Operationsteil ............................................................................................................. 5 3 MS ACCESS ...................................................................................................................... 8 3.1 Die Arbeitsoberfläche ................................................................................................ 8 3.2 Eine neue Datenbank anlegen .................................................................................... 9 3.3 Tabellen .................................................................................................................... 10 3.4 Abfragen ................................................................................................................... 13 3.5 Formulare ................................................................................................................. 17 3.6 Beziehungen zwischen Tabellen .............................................................................. 20 3.7 Berichte .................................................................................................................... 22 3.8 Makros ...................................................................................................................... 23 4 PROGRAMMENTWICKLUNG MIT VBA ................................................................... 24 4.1 Grundlagen ............................................................................................................... 24 4.2 Steuerstrukturen ....................................................................................................... 29 4.3 Objekte in Access ..................................................................................................... 33 4.4 Laufzeitfehler ........................................................................................................... 34 4.5 Die ADO-Architektur ............................................................................................... 36 5 DATENMODELLIERUNG............................................................................................. 41 5.1 Das Entity-Relationship-Modell .............................................................................. 41 5.2 Schlüsselarten / Anforderungen an den Schlüsselaufbau ......................................... 42 5.3 Entwurf von Relationen ........................................................................................... 43 6 DATENBANKORGANISATION ................................................................................... 48 6.1 Klassifizierung und Architektur von Datenbanksystemen ....................................... 48 6.2 Konsistenz und Transaktionen ................................................................................. 49 7 DATENSCHUTZ UND INFORMATIONSSICHERHEIT............................................. 49 7.1 Datensicherheit und Datenschutz ............................................................................. 49 7.2 Sicherheit in Netzwerken ......................................................................................... 50 8 KOMMUNIKATIONSSYSTEME .................................................................................. 51 8.1 Technisch-technologische Grundlagen .................................................................... 51 8.2 Kommunikationsdienste ........................................................................................... 51 LITERATUR ............................................................................................................................ 51 H. Fritzsche, Wirtschaftsinformatik II 2 1 GRUNDLAGEN DER DATENORGANISATION 1.1 Motivation: Speichern und Wiederfinden Die Datenverwaltung in Anwendungssystemen erfolgt grundlegend nach folgenden Gesichtspunkten: extern vs. intern Die Bezeichnung „intern“ bezieht sich auf Hauptspeicher und Register, mit „externer“ Speicherung ist die Verwaltung der Daten auf Festplatte, CD-ROM, DVD usw. gemeint. statisch vs. dynamisch Ist der für Datenobjekte intern benötigte Speicherplatz zur Programmierzeit bekannt, spricht man von statischen Datenstrukturen. Für statisch zu verwaltende Daten stellt der Compiler zur Übersetzungszeit Speicherplatz bereit. Ist die Kardinalität der Datenobjekte zur Programmierzeit nicht bekannt, muss dem Programm vom Betriebssystem Speicherplatz zur „Laufzeit“ (d.h. zur Ausführungszeit des Programms) bereitgestellt werden. In diesem Fall spricht man von dynamischen Datenstrukturen. Dynamisch verwaltete, nicht-elementare Datenbestände können auf unterschiedliche Art und Weise organisiert sein. Beispiele sind: Ungeordnete Folge, geordnete Folge, (binärer) Baum, gerichteter/ungerichteter Graph, Hash-Tabelle. B*-Bäume sind spezielle Bäume, bei denen die Informationen ausschließlich in Blattknoten liegen. Entsprechend den Organisationsformen gibt es unterschiedliche Verfahren der Verarbeitung (z.B. sequentiell, binär, durch direktes oder indirektes Hash-Verfahren), die auf grundlegenden Zugriffsarten (z.B. sequentiell, wahlfrei, indexsequentiell, assoziativ) basieren. Die Reihenfolge der Verarbeitung kann vorbestimmt (z.B. sequentiell) oder frei wählbar sein. Basisoperationen für die Verarbeitung sind das Einfügen eines Elementes in die Datenbasis das Suchen eines bestimmten Elementes in der Datenbasis das Entfernen eines Elementes aus der Datenbasis 1.2 Datenbanksysteme Ein Datenbanksystem (DBS) umfasst eine oder mehrere Datenbasen bzw. Datenbanken (DB) und ein Datenbankmanagementsystem (Data Base Management System = DBMS): DBS = DB + DBMS Datenbankmanagementsysteme werden auch als Datenbankbetriebssysteme bezeichnet. Datenbanksysteme sind eine spezielle Art von Informationssystemen, die Daten speichern und zentral verwalten. Ziel ist die Gewährleistung einer weitgehenden Unabhängigkeit der Daten von den mit ihnen arbeitenden Programmen bzw. Benutzern. Es wird zwischen einer physischen und einer logischen Datenunabhängigkeit unterschieden. Unter logischer Datenunabhängigkeit versteht man, dass die anwendungsbezogene Sicht auf die DB losgelöst von der logischen Gesamtstruktur existiert. Die globale Struktur soll änderbar sein, ohne lokale Anwendungen ändern zu müssen. Wesentliche Arten von DBS sind hierarchische DBS (HDBS), Netzwerk--DBS, relationale DBS (RDBS) und objektorientierte DBS (OODBS). In der Praxis dominieren derzeit RDBS. OODBS sind gegenwärtig noch Forschungsgegenstand, gewinnen aber zunehmend auch Bedeutung für die Praxis. H. Fritzsche, Wirtschaftsinformatik II 3 2 EINFÜHRUNG IN DAS RELATIONALE DATENMODELL Die mathematische Grundlage für relationale Datenbanken bildet das Relationenmodell von E. F. Codd (1970). Das Relationenmodell umfasst einen Strukturteil und einen Operationsteil. Der Strukturteil enthält Beschreibungen von Objekttypen auf der Basis von Relationenschemata. Der Operationsteil beschreibt einen Satz von Operationen für Anfragen und Modifikationen. Es werden als Beschreibungsmittel unterschieden: die Relationenalgebra die Normsprache SQL 2.1 Strukturteil Bei der Beschreibung von wirklichen oder gedachten Gegenständen wird eine objektzentrierte Sicht verfolgt (im Unterschied z.B. zu einer prädikatzentrierten Sicht, die bei der logikorientierten Programmierung zugrundegelegt wird): Ein Objekt ist etwas, über das etwas ausgesagt werden kann. Objekte besitzen Ausprägungen für Attribute (d.h. Merkmale). Die Struktur eines Objektes ergibt sich, indem man dem Objekt eine Reihe von Attribut Wert Paaren zuordnet. Mögliche Ausprägungen (Merkmalswerte oder kurz Werte) eines Attributs sind jeweils aus einem Wertebereich entnommen. Beispiel: Sei Objekt1 das Buch "Objektorientierte Datenbanken ... " von Andreas Heuer. Objekt Attribut Wert ISBN Autor Titel Verlag 3-83319-315-4 Andreas Heuer Objektorientierte Datenbanken Addison Wesley Ein Objekttyp ist durch eine Menge von Attributen mit entsprechenden Wertebereichen charakterisiert. Ein Relationenschema R umfasst die Objekttypbezeichnung sowie die Attribute und deren Wertebereiche. Eine Relation r(R) ist – mathematisch definiert – eine Teilmenge des kartesischen Produkts über den Wertebereichen von R. Ein Element einer Relation heißt Tupel. 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) H. Fritzsche, Wirtschaftsinformatik II 4 Attributwerte sind „atomar“, wenn sie einem Objekttyp angehören, der nicht wieder in Form eines Relationenschemas beschrieben wird, also in diesem Sinne der Objektbeschreibung nicht weiter zerlegbar ist. Eine Basisrelation ist die in der Datenbank aktuell vorhandene Relation zu einem Relationenschema. Die Datenbank ist die Menge aller Basisrelationen. Das Datenbankschema ist die Menge aller Relationenschemata einer Datenbank. Relationen werden im Zusammenhang mit RDBS in Form von Tabellen dargestellt. In der Datenbankterminologie gelten in diesem Sinne folgende Entsprechungen: Relation – Tabelle Attribut – Spalte Tupel – Datensatz bzw. Zeile Wertebereich – Domäne Als Grad wird die Anzahl der Attribute einer Relation, d.h. der Spalten der Tabelle bezeichnet. Mit dem Begriff Kardinalität wird die Anzahl der Datensätze, d.h. der Zeilen bezeichnet. 2.2 Operationsteil Verbreitete Beschreibungsmittel für Operationen sind die Relationenalgebra und die Normsprache SQL (Standard Query Language). Relationenalgebra Es wird ein Satz von Grundoperationen definiert: Selektion: σ Projektion : π (natürlicher) Verbund: ׀<>׀ Mengenoperationen: , ∩, \ Umbenennung: β Ergebnisse von Operationen sind jeweils wieder Relationen. Die Operatoren definieren eine relationale Algebra zur Bearbeitung von Objekten. Selektion (auch: Restriction) Wählt Tupel (Zeilen) aus einer Relation (Tabelle) entsprechend einer Selektionsbedingung aus. Selektionsbedingung kann sein: Attribut – Konstanten – Vergleich Attribut – Attribut – Vergleich Verknüpfung von Selektionsbedingungen durch Operatoren and, or, not Beispiele: sumoffen <> 0 (r(Kunden)) ort = “Dortmund“ (r(Kunden)) Projektion Wählt Attribute (Spalten) aus einer Relation (Tabelle) entsprechend einer Projektionsbedingung aus. H. Fritzsche, Wirtschaftsinformatik II 5 Achtung: Durch Projektion können Tupel entstehen, die sich nicht mehr unterscheiden. Duplikate werden in der Ergebnisrelation eliminiert! (natürlicher) Verbund (auch: Join) Der natürliche Verbund verknüpft Relationen über allen gemeinsamen Attributen. Nur Tupel mit gemeinsamen gleichen Attributwerten werden zu neuen Tupeln verbunden. Mengenoperationen lassen sich auf Relationen anwenden, die das gleiche Relationenschema besitzen. Beispiel: r1 A 1 1 2 B 1 2 0 C 1 2 2 B 1 2 0 C 1 2 2 D 1 1 0 r2 A 1 0 2 D 1 1 0 r3 C 1 0 2 2 D 1 1 1 2 E 0 1 0 1 r1 |><| r2 A 1 1 2 ( r1 |><| r2 ) |><| r3 A 1 1 B 1 2 C 1 2 D 1 1 E 0 0 Durch Umbenennen können Relationenschemata für eine (spätere) Verknüpfung kompatibel gemacht werden. Beispiel: Umbenennen der Attributbezeichnung Wohnort in Ort. SQL Die Normsprache SQL unterstützt unterschiedliche Arten von Operationen: Definition von Relationenschemata Erzeugung von Zugriffspfaden Anfragen Datenmanipulationen Hier wird nur der Anfrage-Teil besprochen. Eine SQL-Anfrage besteht aus einem sog. SFWBlock: SELECT … Attributliste H. Fritzsche, Wirtschaftsinformatik II 6 FROM … WHERE … beteiligte Relationen komplexe Selektionsbedingung ; Semantik: 1. Kart. Produkt der Relationen hinter FROM mit dem Relationsnamen als Präfix 2. Anwendung der Bedingungen der WHERE-Klausel auf das Ergebnis der FROM-Klausel 3. Projektion auf die Attribute der SELECT-Klausel Beispiel: Personen Name Meyer Meyer Schmitt Schmitt Vorname Peter Peter Susanne Petra Geburtsdatum 10.05.1960 20.08.1966 01.01.1970 01.01.1970 Wohnort Berlin Dresden Aue Rostock Pers_Hobbies Name Meyer Meyer Meyer Schmitt Schmitt Vorname Peter Peter Peter Susanne Petra Geburtsdatum 10.05.1960 10.05.1960 20.08.1966 01.01.1970 01.01.1970 Hobby Surfen Klavierspiel Fußball Tanzen Surfen 1) SELECT FROM * Personen,Pers_Hobbies ; Liefert eine Relation mit 8 Spalten und 20 Zeilen. Der * steht für die Auswahl aller Attribute. Ist keine WHERE-Klausel angegeben, wird jede Zeile der ersten Relation mit jeder Zeile der zweiten Relation kombiniert. 2) 3) SELECT FROM WHERE Name, Vorname Pers_Hobbies Hobby=’Surfen’ ; Name Meyer Schmitt Vorname Peter Petra SELECT FROM WHERE AND Y.Vorname, Y.Name Pers_Hobbies As X, Pers_Hobbies As Y X.Name='Schmitt' X.Hobby=Y.Hobby ; H. Fritzsche, Wirtschaftsinformatik II 7 Name Meyer Schmitt Schmitt Vorname Peter Petra Susanne Liefert zu allen Schmitts die Namen der Personen, die mit diesen mindestens ein Hobby teilen. Durch Nachstellen einer Tupelvariablen findet ein Umbenennen statt. Das ist notwendig, wenn eine Relation nach FROM mehrfach vorkommt. 3 MS ACCESS 3.1 Die Arbeitsoberfläche Eine MS Access-Datenbank ist als Datei gespeichert. MS Access 2002 ist ein Programm zur Ausführung von Datenbankoperationen, das DBMS. Nach dem Start des Programms MS Access 2002 präsentiert diese Anwendung eine für MS Windows typische grafische Benutzeroberfläche mit Titelleiste (darin: „Microsoft Access“), Menüleiste, Symbolleiste, Arbeitsfläche und Statusleiste: Es kann gewählt werden, ob eine neue Datenbank erstellt oder eine bereits existierende Datenbank geöffnet werden soll. H. Fritzsche, Wirtschaftsinformatik II 8 Beim Öffnen einer bereits bestehenden Datenbank wird entweder das AccessDatenbankfenster angezeigt oder ein vorher bereits erstelltes Startformular. In beiden Fällen können anschließend Objekte der angezeigten Typen (Tabellen, Abfragen, Formulare etc. erstellt, bearbeitet oder (bei Objekten der Typen Abfragen, Formulare und Berichte) angewendet werden. 3.2 Eine neue Datenbank anlegen Eine neue Datenbank kann mit dem DB-Assistenten erstellt oder „von Hand“ erzeugt werden. Soll eine neue Datenbank von Hand erstellt werden, sind im angezeigten Filedialog das gewünschte Verzeichnis und der Dateiname anzugeben. Dateityp soll „Microsoft AccessDatenbanken“ sein ( Schaltfläche ERSTELLEN). Beispiel: Anlegen einer Datenbank c:\temp\Handelsfirma. MS AccessDatenbankdateien haben die Extension .mdb. Es wird also eine Datei Handelsfirma.mdb auf c:\temp angelegt. Das Datenbankfenster wird jetzt automatisch geöffnet (falls es nicht bereits geöffnet war) und in der Titelleiste erscheint der Datenbank-Name. Über das Datenbankfenster kann fortan mit der Datenbank gearbeitet werden. H. Fritzsche, Wirtschaftsinformatik II 9 3.3 Tabellen Eine Tabelle kann in der Entwurfsansicht unter Verwendung des Assistenten in der Datenblattansicht erstellt werden: Durch Doppelklick auf das entsprechende Symbol wird mit der Erstellung begonnen. Alternative: TABELLEN → Doppelklick auf Symbol H. Fritzsche, Wirtschaftsinformatik II : 10 1. Erstellen einer Tabelle in der Entwurfsansicht: In der Entwurfsansicht einer (nicht nur neuen) Tabelle können die Namen der Datenfelder (d.h. der Attribute der Relation) und ihre jeweiligen Datentypen (als Felddatentyp bezeichnet) festgelegt werden, d.h. das Relationenschema wird festgelegt. Zusätzlich kann eine max. 255 Zeichen lange erläuternde Erklärung als Beschreibung für jedes definierte Datenfeld angegeben werden. Bei der späteren Dateneingabe erscheint die Beschreibung in der Statusleiste. Es existieren folgende Datentypen: Datentyp TEXT MEMO ZAHL DATUM/UHRZEIT Erklärung für Zeichenketten aus Buchstaben, Ziffern und Sonderzeichen für längere Texte für Ganzzahl-, Gleitkomma- und Dezimalzahltypen Jedes gültige Datum zwischen 1.1.100 und H. Fritzsche, Wirtschaftsinformatik II Größe max. 255 Zeichen max. 65535 Zeichen je nach Typ 1,2,4 oder 8 Byte 8 Byte 11 WÄHRUNG AUTOWERT JA/NEIN OLE-OBJEKT HYPERLINK NACHSCHLAGLISTE 31.12.9999 ist erlaubt. Zahlenwerte, diese werden automatisch um ein Währungssymbol ergänzt, mit zwei Nachkommastellen dargestellt und bündig angeordnet 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. Es gibt genau zwei Werte, die die möglichen Ergebnisse einer Entscheidungsfrage repräsentieren (sog. Boolesches Feld) 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. Werte sind Hyperlinks, beim Klicken darauf werden die verlinkten Objekte geöffnet und angezeigt. Feldwerte können aus einer Liste ausgewählt werden. Der Liste kann z.B. eine andere Tabelle zugrunde liegen. 8 Byte 4 Byte 1 Bit bis zu 1 GByte max. 64000 Zeichen 4 Byte Im unteren Teil der Entwurfsansicht können - abhängig vom jeweiligen Datentyp zusätzliche Feldeigenschaften spezifiziert werden. „Eingabe erforderlich“: Bestimmt, ob beim späteren Ausfüllen eines Datensatzes eine Eingabe in das Feld erforderlich ist oder nicht. Mit „Eingabeformat“ kann die Dateneingabe in die Tabelle qualifiziert werden. Für die Datentypen TEXT, ZAHL, WÄHRUNG und DATUM/UHRZEIT können Muster definiert werden. Die Definition eines Eingabeformates ist eine Zeichenfolge, die Literalzeichen und Platzhalterzeichen enthalten kann. Literalzeichen werden bei der Dateneingabe automatisch eingefügt. Platzhalterzeichen schränken die möglichen Eingaben ein: 0 9 # L ? A a & C . , : ; -/ \ < > eine Dezimalziffer (0 – 9), Eingabe zwingend eine Dezimalziffer (0 – 9) oder ein Leerzeichen, Eingabe optional eine Dezimalziffer, ein Leerzeichen oder Plus- bzw. Minuszeichen ein Buchstabe (A – Z), Eingabe zwingend ein Buchstabe (A – Z), Eingabe optional ein Buchstabe oder eine Ziffer, Eingabe zwingend ein Buchstabe oder eine Ziffer, Eingabe optional ein beliebiges Zeichen (einschließlich Leerzeichen), Eingabe zwingend 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 H. Fritzsche, Wirtschaftsinformatik II 12 „Gültigkeitsregel“: Ermöglicht die Festlegung bestimmter Gültigkeitsprüfungen während der Eingabe von Daten in eine Tabelle durch den Nutzer. Nutzerdefinierte Regeln ergänzen die standardmäßig vorhandenen Gültigkeitsregeln. Standardmäßig wird z.B. überprüft, ob eine Datumsangabe ein gültiges Datum darstellt. Die Angabe 22.14.2005 etwa ist kein gültiges Datum. Beispiele für nutzerdefinierte Regeln: o wie "#*" ein TEXT muss mit einem Zifferzeichen beginnen und kann nachfolgend beliebig viele beliebige Zeichen enthalten. o < #20.10.2004# Ein DATUM muss vor dem 20.10.2004 liegen. o < Datum() Ein Datum muss vor dem aktuellen Tagesdatum liegen. Über die Registerkarte NACHSCHLAGEN kann für die Datentypen Text, Zahl und Ja/Nein als Unterstützung für die Dateneingabe festgelegt werden, dass ein Wert aus einer Menge in einem Menü angezeigter Werte ausgewählt werden kann (STEUERELEMENT ANZEIGEN : Listenfeld). Die angezeigten Werte entstammen dabei z.B. einer „Werteliste“. Bei DATENSATZHERKUNFT können in diesem Fall durch Semikolon getrennte Bezeichnungen angegeben werden. Beim Tabellenentwurf kann ein Datenfeld als Primärschlüsselfeld festgelegt werden. Dadurch bekommt das Datenfeld eine besondere Bedeutung. Die Werte dieses Datenfeldes sollen dazu dienen, jeden Datensatz der Tabelle eindeutig zu identifizieren. Es können also nicht zwei gleiche Werte innerhalb einer Tabelle vergeben werden. 3.4 Abfragen MS Access bietet verschiedene Abfragearten: Auswahlabfragen, Parameterabfragen, Aktionsabfragen, Kreuztabellenabfragen, Pivot-Tabellenabfragen und SQL-Abfragen. Zum Erstellen einer Auswahlabfrage ist im Datenbankfenster das Objekt Abfragen zu wählen. Beim „manuellen“ Erstellen einer Abfrage in der Entwurfsansicht ist zunächst die Tabelle zu wählen, auf die sich die Abfrage beziehen soll: H. Fritzsche, Wirtschaftsinformatik II 13 Die gewünschte Tabelle HINZUFÜGEN und das Fenster SCHLIEßEN. Auf dem Bildschirm erscheint das Abfragefenster in der Entwurfsansicht: Im geöffneten Abfragefenster sind die Felder zu bestimmen, die in die Abfrage aufgenommen werden sollen (Projektion). Diese werden aus der Feldliste im oberen Teil des Abfragefensters ausgewählt (z.B. Anklicken und nach unten ziehen oder Doppelklick in Titelleiste und nach unten ziehen). Zur Ausführung der Anfrage ist im Access – Anwendungsfenster auf das Symbol ! zu klicken (Alternative: ABFRAGE → AUSFÜHREN). H. Fritzsche, Wirtschaftsinformatik II 14 Das Speichern einer Abfrage erfolgt über DATEI → SPEICHERN. Im folgenden Dialogfenster kann ein Name für die Abfrage festgelegt werden. Für eine Abfrage können Kriterien definiert werden. In verschiedene Felder können eine oder mehrere Bedingungen eingetragen werden. Die Bedingungen einer Zeile werden mittels and verknüpft. In unterschiedlichen Zeilen eingetragene Bedingungen werden mittels or verknüpft. Für Abfragen wird auch die ANSICHT → SQL-ANSICHT angeboten! Kriterien mit Objektnamen, Datum und Text Für Bezugnamen auf Objekte(z.B. Feldnamen) und konstante Datums- bzw. Textangaben muss folgende Syntax benutzt werden: Zugriff auf Objekte Syntax [Name] Datum Text (Zeichenkette) #Datum# "Text" Bedeutung Name von Feldern, Berichten oder Formularen ein konstantes Datum Zeichenketten-Konstante Beispiel [EINPREIS]*1,16 #12.02.2003# MS Access Besonders zu beachten ist die Zeichenkette, die kein Zeichen enthält. Sie wird als leere Zeichenkette bezeichnet und durch "" repräsentiert. Soll eine Zeichenkette das Zeichen "selbst enthalten, ist dieses innerhalb der Zeichenkette doppelt anzugeben. Beispiel: Hotel "Dresden" wird durch "Hotel ""Dresden""" repräsentiert. Der Vergleichsoperator WIE (LIKE) Mit Hilfe dieses Operators können Textfelder (Strings) auf bestimmte enthaltene Zeichenkombinationen geprüft werden. Im Auswahlkriterium können Platzhalterzeichen verwendet werden: Zeichen Bedeutung Beispiel * Beliebige Anzahl beliebiger Zeichen WIE K* ? Ein beliebiges Zeichen WIE ???M* # Eine beliebige Ziffer WIE #* MS Access bietet auch die Möglichkeit, Parameterabfragen zu erstellen. In Bedingungen auftretende Konstanten werden dabei erst zur Ausführungszeit der Abfrage festgelegt. Es wird ein Dialogfenster eingeblendet, in das ein Wert (oder ein Kriterium) einzugeben ist. Beispiel: Auswahl einer Zeile der Kundentabelle anhand des Kundennamens Im Entwurf ist als Kriterium der später im Dialogfenster anzuzeigende Text in eckige Klammern einzuschließen. H. Fritzsche, Wirtschaftsinformatik II 15 Anwendung: DK auf das Symbol „ParameterabfrageKunden“ öffnet das kleine Fenster. Nach Eingabe des Kundennamens erfolgt die Selektion. H. Fritzsche, Wirtschaftsinformatik II 16 Mit Hilfe von Aktionsabfragen können durch eine Operation Änderungen an Tabellen bzw. Datensätzen vorgenommen werden. o Tabellenerstellungsabfrage: Aus den Ergebnissen einer Abfrage kann eine neue Tabelle erstellt werden. o Aktualisierungsabfrage: An einer Gruppe von Datensätzen können Änderungen durchgeführt werden. o Anfügeabfrage: Aus einer Tabelle können Datensätze in eine andere Tabelle eingefügt werden. o Löschabfrage: Aus einer abgefragten Tabelle können Datensätze gelöscht werden. 3.5 Formulare Die Datensätze einer Tabelle können in der Datenblattansicht der Tabelle gleichzeitig dargestellt und bearbeitet werden. Es gibt allerdings nur sehr eingeschränkte Möglichkeiten zur Gestaltung des Datenblattes. Formulare bieten komfortable und individuelle Gestaltungsmöglichkeiten. Zur Erstellung von Formularen bietet MS Access folgende Mittel an: AutoFormular zur automatischen Erstellung von Formularen, Formular-Assistent, Diagramm-Assistent, Pivot-Tabellen-Assistent, Entwurfsansicht. Bei der Erstellung von Formularen kann zwischen folgenden Layouts gewählt werden: Einspaltige Darstellung, Tabellarische Darstellung, Datenblattdarstellung, Block-Darstellung H. Fritzsche, Wirtschaftsinformatik II 17 Hauptformular mit Unterformular Erstellen von Formularen mittels AutoFormular AutoFormular dient der automatischen Erstellung eines Formulars zu ausgewählten Datenfeldern einer Tabelle oder Abfrage. Als Layout-Möglichkeiten stehen zur Verfügung: Einspaltige Darstellung, Tabellarische Darstellung und die Datenblattansicht. MS Access öffnet das Formular in der Formularansicht. In dieser Darstellung können Daten gesucht, bearbeitet oder eingegeben werden. Änderungen werden auch in der zugrundeliegenden Tabelle gespeichert. Beim tabellarischen Autoformular hat man keine Möglichkeit, die Spaltenbreite zu verändern: Formular-Assistent Schritt 1: Tabelle und Datenfelder auswählen H. Fritzsche, Wirtschaftsinformatik II 18 Schritt 2: Layout wählen. Es kann zwischen einspaltiger Darstellung tabellarischer Darstellung Datenblattansicht Blockdarstellung gewählt werden. Schritt 3: Format wählen (z.B. Standard) Schritt 4: Formularnamen wählen. Formulare in der Entwurfsansicht bearbeiten Die wesentlichen Elemente der Entwurfsansicht sind die Formularbereiche und die Steuerelemente. In der Entwurfsansicht kann ein Formular individuell gestaltet werden, das meist auf einem bereits bestehenden Formular basiert. Zum Ändern der Datenquelle eines in der Entwurfsansicht geöffneten Formulars: Kontextmenü Formular → EIGENSCHAFTEN → DATENSATZHERKUNFT → Menü-Auswahl Das Erstellen eines Hauptformulars mit Unterformular setzt voraus, dass H. Fritzsche, Wirtschaftsinformatik II 19 sowohl für das Hauptformular als auch für das Unterformular eine Tabelle ausgewählt wurde in der Tabelle für das Hauptformular ein Primärschlüssel auf das die Tabellen verbindende Attribut festgelegt wurde und das Hauptformular über eine 1:n-Beziehung mit dem Unterformular verbunden wurde. 3.6 Beziehungen zwischen Tabellen Die konzeptuellen Grundlagen für das Verknüpfen von Tabellen werden im Kapitel „Datenmodellierung“ beschrieben. Zur Definition von Beziehungen stellt MS Access ein Beziehungsfenster bereit. Es wird unterschieden zwischen Standardbeziehungen Beziehungen mit referentieller Integrität Anzeigen des Beziehungsfensters: MS Access – Symbolleiste . Falls noch keine Beziehungen zwischen den in der Datenbank vorhandenen Tabellen bestehen, öffnet MS Access automatisch ein Dialogfenster: Es können Tabellen und/oder Abfragen zum Beziehungsfenster hinzugefügt werden. Das Dialogfenster wird alternativ durch geöffnet. Beispiel für die Handelsfirma: H. Fritzsche, Wirtschaftsinformatik II 20 Beziehungen erzeugen: Markieren des Namens des Datenfeldes der Haupttabelle (Master), auf dem die Beziehung basieren soll. Ziehen des markierten Datenfeldes mit der Maus auf das Datenfeld der Detailtabelle, mit dem die Verknüpfung erfolgen soll. Die Option „Mit referentieller Integrität“ wird verwendet, wenn das Verknüpfungsfeld der Mastertabelle als Primärschlüssel dient, die Verknüpfungsfelder den gleichen Datentyp aufweisen. H. Fritzsche, Wirtschaftsinformatik II 21 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. Ein Objekt vom Typ Bericht ist mit den im Entwurf festgelegten Datenquellen verbunden, so dass zum Zeitpunkt der Präsentation eines Berichts jeweils auf die aktuellen Daten Bezug genommen wird. MS Access bietet verschiedene Assistenten zur Erstellung von Berichten an. 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. Zum Beispiel können Artikel nach der ersten Stelle der Artikelnummer (der Artikelgruppe) gruppiert dargestellt werden. Einem Bericht können (wie Formularen) Steuerelemente hinzugefügt werden. H. Fritzsche, Wirtschaftsinformatik II 22 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 MakTestFormular soll bewirkt werden, dass ein bereits existierendes Formular Form1Artikel geöffnet und das Formular FormMakroTest geschlossen wird. Form1Artikel: FormMakroTest: Lösung: 1. Objekt Makros → NEU 2. Einfügen Aktionen: - Öffnen Formular H. Fritzsche, Wirtschaftsinformatik II Formularname: Form1Artikel 23 - Schließen Objekttyp: Formular Objektname: FormMakroTest 3. Speichern des Makros unter dem Namen MakTestFormular 4. Zuordnen des Makros zur Schaltfläche Befehl0 im Formular FormMakroTest, Ereignis: Beim Klicken 5. Testen der Schaltfläche im Formular FormMakroTest Die folgenden Abbildungen verdeutlichen die Schritte 2 und 4: Die Aktionen werden in der Reihenfolge ausgeführt, in der sie untereinander in der Spalte AKTION aufgeführt sind. 4 PROGRAMMENTWICKLUNG MIT VBA 4.1 Grundlagen H. Fritzsche, Wirtschaftsinformatik II 24 VBA (Visual Basic for Application) ist die Programmiersprache der Office-Anwendungen Word, Access und Excel. VBA-Programme werden in der Entwicklungsumgebung entwickelt. In einem MS Access Projekt kann VBA-Code an folgenden Stellen gespeichert sein: in Formularen bzw. Berichten, in übergreifenden Moduln, in gekapselten Klassen. Vor der Verwendung eines Programms wird es compiliert. Zur Ausführung von Programmen: PROGRAMMEDITOR → ANSICHT → DIREKTFENSTER. Module enthalten Prozeduren, sie sind selbst nicht ausführbar. Modultypen: - Standardmodul - Klassenmodul 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. Prozedurtypen: H. Fritzsche, Wirtschaftsinformatik II 25 Prozedur FunctionProzedur SubProzedur Allgemeine Prozedur EreignisProzedur Aufrufe von Prozeduren des Typs „Function-Prozedur“ (Funktionsprozedur genannt, oder kurz: Funktion) liefern einen Wert zurück. Sub-Prozeduren (kurz: Prozeduren) liefern keinen Wert zurück. 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. 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. Durch die Anweisung option explicite im Kopf eines Moduls kann verlangt werden, dass für alle im Modul verwendeten Variablen eine Variablendeklaration erfolgen muss. Syntax einer Variablendeklaration: Dim variable As datentypname [, variable As datentypname] … Dim ist dabei einer von vier möglichen Bezeichnern, die die Sichtbarkeit und Lebensdauer der deklarierten Variablen bestimmen. Beispiel: Dim menge As Integer, preis As Currency Regeln für Sichtbarkeit (Scope ) und Lebensdauer (Extent) von Variablen Bezeichner Public Variablentyp Globale Variable H. Fritzsche, Wirtschaftsinformatik II Sichtbarkeitsbereich Lebensdauer jede Prozedur der gesamte Laufzeit der gesamten Datenbankanwendung Datenbankanwendung 26 Private Global für Modul jede Prozedur des gesamte Laufzeit der Moduls, in dem die Datenbankanwendung Variable deklariert ist 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 Es ist zu beachten, dass Deklarationen mittels Public oder Private am Anfang des Moduls im Deklarationsteil platziert werden müssen (nicht innerhalb einer Prozedur)! 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. 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: ... H. Fritzsche, Wirtschaftsinformatik II 27 Das im Beispiel verwendete Meldungsfenster (MsgBox) kann sowohl als Funktion als auch als Sub-Prozedur angewendet werden. Syntax: MsgBox(<anzeigetext>, <schaltflächen>, <titel>) MsgBox <anzeigetext>, <schaltflächen>,<titel> Verwendung als Funktion Verwendung als Prozedur 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 1 2 3 4 5 6 7 Konstante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Gewählte Schaltfläche OK ABBRECHEN ABBRECHEN WIEDERHOLEN IGNORIEREN JA NEIN Eingabedialoge Public Function Mehrwertsteuer() Dim wert wert = InputBox("Bitte Betrag eingeben:", _ "Berechnung der Mehrwertsteuer") wert = FormatCurrency((Nz(wert, 0) * 0.16), 2) MsgBox "Ergebnis:" & wert End Function H. Fritzsche, Wirtschaftsinformatik II 28 Operatoren In den bisherigen Beispielen wurden bereits Operatoren in Ausdrücken verwendet. Grundsätzlich werden Klassen von Operatoren unterschieden: a. Zeichenkettenoperatoren Verkettungsoperator: & Bsp.: "Datenbank" & "fenster" → "Datenbankfenster" b. Arithmetische Operatoren +,-,*, / \ ganzzahlige Division – Quotient MOD ganzzahlige Division – Rest (modulo – Operator) ^ Potenz c. Vergleichsoperatoren =,<>,>,<,>=,<=,Like d. Logische Operatoren Not, And, Or, Xor 4.2 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 <bedingung> then <anweisungsfolge> End If oder If <bedingung> then <anweisungsfolge1> Else <anweisungsfolge2> End If Beispiel: H. Fritzsche, Wirtschaftsinformatik II 29 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 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ählergesteuerte Iteration: Syntax: H. Fritzsche, Wirtschaftsinformatik II 30 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>, 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. Bedingungsgesteuerte 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. Es gibt zwei Möglichkeiten: 1. 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. 2. Liefert die Auswertung des als <bedingung> formulierten Ausdrucks False, wird anschließend die <anweisungsfolge> erneut ausgeführt und im Anschluss daran wird wiederum die <bedingung> ausgewertet usw. H. Fritzsche, Wirtschaftsinformatik II 31 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 Es stehen in VBA weitere Arten von Anweisungen zur Steuerung des Kontrollflusses zur Verfügung. Sprunganweisungen mit GoTo Syntax: GoTo <sprungziel> Das Sprungziel ist ein Name mit maximal 200 Zeichen, gefolgt von einem Doppelpunkt. Semantik: Fortsetzung der Verarbeitung an der mit <sprungziel> markierten Stelle. Schleifen-/Programmabbruch Exit Do Verlassen einer bedingungsgesteuerten Schleife (Iteration). Exit For Verlassen einer zählergesteuerten Schleife (Iteration). Exit Function Verlassen einer Function - Prozedur. Exit Sub Verlassen einer Sub - Prozedur. Exit- und GoTo- Anweisungen führen zu unübersichtlichen Programmstrukturen und sollten deshalb sehr sparsam verwendet werden. H. Fritzsche, Wirtschaftsinformatik II 32 Andererseits kann mittels Exit der Programmcode zum Teil wesentlich verkürzt werden. 4.3 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 Application Controls Debug DoCmd Forms Reports Module Bedeutung Die MS_Access - Anwendung Auflistung aller Steuerelemente eines Formulars oder Berichts Direktfenster Interpreter für Aktionen (Makrointerpreter) Auflistung geöffneter Formulare Auflistung geöffneter Berichte 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. H. Fritzsche, Wirtschaftsinformatik II 33 <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. 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 bestimmtes 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 Formulars 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. 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 geeignete Maßnahmen ergriffen und möglicherweise sogar Fehlerursachen behoben werden. In diesen letzteren 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: H. Fritzsche, Wirtschaftsinformatik II 34 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 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 Erläuterung: Die On Error – Anweisung schaltet die Fehlerüberwachung in der Prozedur ein, in der die Anweisung steht. Im Falle des fehlerfreien Ablaufs wird durch Exit Function die Funktion verlassen und die Fehlerüberwachung ausgeschaltet. Im Falle des Abbruchs der Verarbeitung aufgrund einer Division durch 0 wird an der mit dem Sprungziel ggt_err gekennzeichneten Anweisung fortgesetzt. Die von MS Access automatisch erzeugten Werte für die Fehlernummer und den Text einer Fehlerbeschreibung werden in einer Messagebox ausgegeben. Resume ggt_Exit bewirkt ein Wiederaufsetzen, d.h. eine Fortsetzung der H. Fritzsche, Wirtschaftsinformatik II 35 Abarbeitung des Programms an der mit der Sprungmarke ggt_Exit gekennzeichneten Anweisung, wobei die Fehlerüberwachung erneut wirksam wird. 4.5 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. ADODB enthält nur wenige Objekte in einer flachen Hierarchie. Hauptobjekte sind Connection, Command und Recordset. Diese Objekte verfügen über weitere Objekte, die Auflistungen von Einzelobjekten sind: Errors, Parameters und Fields. 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. Praktisch wird oft Objektbezeichnern der Name ADODB vorangestellt, um Verwechselungen zu vermeiden. 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> H. Fritzsche, Wirtschaftsinformatik II 36 <datenherkunft> ein Objektname (Tabellenname) oder eine SQL-Anweisung als String . Beispiel: "Artikel" <verbindung> Name des aktuellen Connection-Objekts, über das zuvor eine Verbindung zur Datenquelle aufgebaut worden ist. Beispiel: CurrentProject.Connection liefert die gerade geöffnete Verbindung zur aktuellen Datenbank. <cursortyp> 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 adOpenStatic adOpenKeyset adOpenDynamic Einmaliges Durchlaufen der Datensätze; nur Lesen, nicht Ändern; geringster Ressourcenverbrauch; Defaultwert Statische Kopie der Daten verwendet; beliebige Navigation möglich; geringer Ressourcenverbrauch Ändern, Einfügen und Löschen von Zeilen möglich; Nur die zum Zeitpunkt des Öffnens vorhandenen Datensätze werden verwendet. Ä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 adLockPessimistic adLockOptimistic adLockBatchOptimistic Es wird ein Recordset erzeugt, in dem nur gelesen werden kann Pessimistische Sperrmethode: Datensatz wird gesperrt, sobald mit dem Schreiben begonnen wird. Es bleibt solange gesperrt, bis die Änderung abgeschlossen ist. Optimistische Sperrmethode: Datensatz wird erst gesperrt, wenn Update erfolgt. Paralleles Editieren ist möglich. Wer zuerst speichert, dessen Änderung wird in die Tabelle übernommen. Änderungen werden in einem Cache gespeichert und später ausgeführt. Positionieren des Datensatz- (DS-) Zeigers - navigieren innerhalb eines Recordsets: H. Fritzsche, Wirtschaftsinformatik II 37 MoveFirst MoveLast MoveNext MovePrevious Move <zahl> DS-Zeiger auf den ersten Datensatz positionieren. DS-Zeiger auf den letzten Datensatz positionieren DS-Zeiger auf den nächsten Datensatz positionieren DS-Zeiger auf den vorhergehenden Datensatz positionieren DS-Zeiger um <zahl> Datensätze weitersetzen. Ist <zahl> negativ, wird der DS-Zeiger um <zahl> Datensätze zurückgesetzt. Das Positionieren des Datensatzzeigers auf einen nicht vorhandenen Datensatz löst keinen Laufzeitfehler aus; erst die Bezugnahme auf ein Datenfeld bei einer ungültigen Position des DS-Zeigers löst einen Laufzeitfehler aus. Ein Laufzeitfehler wird bei einer Bezugnahme auf ein Datenfeld ausgelöst, wenn der DS-Zeiger vor dem ersten Datensatz (Position BOF – Begin of File) oder hinter dem letzten Datensatz (EOF – End of File) positioniert ist. Sind in einem Recordset keine Datensätze vorhanden, haben BOF und EOF den Wert True: If rs.EOF And rs.BOF Then Rem keine Datensätze vorhanden End If Die folgenden Methoden sind auf ein Recordset anwendbar. Suchen eines Datensatzes im Recordset: Find <kriterium>,<auslassen>,<suchrichtung>,<start> <kriterium> ein Suchkriterium entsprechend der in der SQL-WHERE-Klausel verwendeten Syntax . <auslassen> eine positive ganze Zahl. Entsprechend viele Datensätze werden von der aktuellen Position des Datensatzzeigers an von der Suche ausgeschlossen <suchrichtung> adSearchForward | adSearchBackward <start> Startposition für die Suche Hinzufügen eines Datensatzes zum Recordset: AddNew Alle Felder des Datensatzes enthalten nach Ausführung der Methode Null—Werte. Nach Zuweisung von Werten erfolgt mit Update die Speicherung des neuen Datensatzes. Löschen eines Datensatzes: Delete Löscht den Datensatz, auf dem der DS-Zeiger steht, verschiebt aber nicht den Datensatz. Ein gelöschter DS steht nicht mehr zur Verfügung. Aktualisieren der Datenquelle (Tabelle): Update Verwerfen einer Änderung: H. Fritzsche, Wirtschaftsinformatik II 38 CancelUpdate Schließen der Verbindung mit der Datenquelle (Tabelle): Close Ein Recordset kann auch mit einer SQL-Anweisung geöffnet werden. Achtung: Der SQL-Dialekt unter ADO 2.0 verwendet folgende Joker-Zeichen: % anstelle von * _ anstelle von ? Beispiel: 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 Beispiel: Ermitteln, ob ein Recordset initialisiert ist. Falls nein, initialisieren und öffnen: Es sei rs der Name eine Variablen (1) Deklaration Private rs vor den Ereignisprozeduren des Formularmoduls. Der Typ ist Variant und die Variable ist in allen Prozeduren des Moduls sichtbar. (2) If VarType(rs) = vbEmpty then Set rs = New Recordset rs.Open … End If VarType liefert eine Zahl als Rückgabewert. Die Zahl kennzeichnet den Datentyp der Variablen, deren Name als Parameter angegeben wurde. Empty ist ein Subtyp von Variant, der Variant-Variablen automatisch nach der Deklaration zugeordnet wird, und bevor der Variablen ein Wert zugewiesen wird. Der Datentyp Empty wird durch die VBA-Konstante vbEmpty bezeichnet. Beispiel: Mit Hilfe von Listenfeldern (als ungebundene Steuerelemente) ist es möglich, aus einer festen Anzahl von (im Listenfeld angezeigten) Werten einen Wert zu selektieren und in einer Ereignisprozedur auf diesen ausgewählten Wert Bezug zu nehmen. Als Wert der Eigenschaft Herkunftstyp ist Werteliste beim Listenfeld einzutragen. Die einzelnen Werte werden unter der Eigenschaft Datensatzherkunft eingetragen. Beispiel für die Notation: "Otto";"Paul";"Karl". H. Fritzsche, Wirtschaftsinformatik II 39 Mit Hilfe von Listenfeldern (als gebundene Steuerelemente) ist es möglich, aus den Werten einer Tabellenspalte zu selektieren und in einer Ereignisprozedur auf diesen ausgewählten Wert Bezug zu nehmen. Bei eingeschaltetem Assistenten wird ein Listenfeld auf einem Formular platziert: H. Fritzsche, Wirtschaftsinformatik II 40 Zum Öffnen eines Berichts ist in der Ereignisprozedur z.B. zu notieren: DoCmd.OpenReport "Ber3b", acViewPreview, , "ARTNR= '" & _ Me!Liste0 & "'" 5 DATENMODELLIERUNG Der Datenbankentwurf beschäftigt sich mit der Organisation der Daten in physisch getrennten Relationen. Dabei wird unterteilt in: Logischer Datenbankentwurf Definieren der konzeptionellen und externen Ebene. Dabei erfolgt das Aufteilen der für eine Domäne ermittelten Objekttypen und Attribute auf Relationen. Die Korrektheit der Datenbankoperationen ist zu sichern. Physischer Datenbankentwurf Definieren der internen Ebene (Auswahl des Datenbanksystems usw.). Hauptziele sind die Performanz und der Schutz vor Datenverlust. 5.1 Das Entity-Relationship-Modell Beim Entwurf eines konzeptionellen Datenschemas geht es zunächst um die Beschreibung eines Ausschnittes aus der realen Welt. Dieser Vorgang heißt Modellbildung. Eine Entitätsmenge entspricht einer Klasse von Objekten mit gleichen Merkmalen, aber von Objekt zu Objekt unterschiedlichen Merkmalsausprägungen. Wir bezeichnen eine Entitätsmenge auch als Objekttyp (OT). Eine binäre Assoziation (OT1, OT2) legt fest, wie viele Entitäten aus OT2 einem Objekt aus OT1 zugeordnet sein können. Wir unterscheiden folgende Assoziationstypen: 1: einfache Assoziation H. Fritzsche, Wirtschaftsinformatik II 41 c: m: mc: konditionelle Assoziation multiple Assoziation multipel-konditionelle Assoziation Kombiniert man eine Assoziation (OT1,OT2) mit ihrer Gegenassoziation, so ergibt dies die Beziehung (relationship) zwischen den beiden betrachteten Entitätsmengen. 5.2 Schlüsselarten / Anforderungen an den Schlüsselaufbau Ein Schlüssel ist ein Merkmal oder eine Kombination von Merkmalen, womit Datensätze (Entitäten) in einer Menge von Datensätzen ausgezeichnet werden können. Schlüsselarten: Suchschlüssel (search key) Schlüssel, dessen Wert mit den entsprechenden Merkmalswerten genau der Entitäten übereinstimmt, die bei einer Abfrage gesucht werden. Mit einem Suchschlüsselwert können ggf. auch mehrere Entitäten einer Entitätsmenge angesprochen werden (z.B. SEEK). 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. Identifikationsschlüssel (unique key) Eine Entität wird durch den Wert ihres Identifikationsschlüssels eindeutig und dauerhaft bezeichnet. Def.: Ein Identifikationsschlüssel ist ein Attribut oder eine minimale Attributkombination, anhand dessen bzw. deren jedes Tupel der Relation 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 laufende Zuteilbarkeit Kürze und Schreibbarkeit „sprechende“ Schlüssel (aus den Schlüsselwerten sollen bestimmte Eigenschaften der beschriebenen Entität erkennbar werden) H. Fritzsche, Wirtschaftsinformatik II 42 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, …) R: Name der Relation (Tabelle) A,B, … : Namen von Attributen (Spalten) Die zum Identifikationsschlüssel gehörigen Attribute werden unterstrichen. mit Attributabhängigkeiten Es gibt unterschiedliche Arten von Attributabhängigkeiten: 1. funktionale Abhängigkeit Def.: In R(A,B) ist das Attribut B vom Attribut A funktional abhängig, wenn zu jedem Wert von A genau ein Wert von B gehört. Die Attribute können sich nicht unabhängig voneinander ändern. Beispiel: Gewicht und Farbe eines Teiles sind von der Teilenummer funktional abhängig: zu unterschiedlichen Gewichten gehören immer unterschiedliche Teile, zu unterschiedlichen Teilenummern aber nicht unbedingt unterschiedliche Gewichte. Zu einer Teilenummer können nicht unterschiedliche Gewichte gehören. Das gleiche gilt für die Farbe. 2. 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. 3. transitive Abhängigkeit Def.: In R(S,A,B) ist das Attribut B vom Schlüssel S (der auch ein zusammengesetzter Schlüssel sein kann) transitiv abhängig, wenn A von S funktional abhängig ist, S jedoch nicht von A, und wenn B von A funktional abhängig ist. H. Fritzsche, Wirtschaftsinformatik II 43 Normalformen 1. Normalform (1NF) Def.: Eine Relation ist in der 1NF, wenn alle Attribute nur atomare Werte besitzen. Für jedes Tupel und jedes Attribut im Tupel gibt es jeweils nur einen Wert. Insbesondere kann ein Wert nicht wieder eine Tabelle sein. 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# 101 Meyer 1 102 Krause 2 ABTNAME PROJ# Planung 11,12 Projektierung 13 PROJNAME %ARBZEIT A,B 60,40 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. 2. Normalform (2NF) Def.: Eine Relation ist in der 2NF, wenn sie sich in der 1NF befindet und wenn jedes NichtSchlüssel-Attribut funktional abhängig ist vom Gesamtschlüssel, nicht aber von den einzelnen Schlüsselteilen (d.h. jedes Nicht-Schlüssel-Attribut ist voll funktional abhängig vom Gesamtschlüssel). Beispiel: Die modifizierte Relation PERSONEN (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# 101 Meyer 1 101 Meyer 1 102 Krause 2 ABTNAME Planung Planung Projektierung PROJ# 11 12 13 PROJNAME A B C %ARBZEIT 60 40 100 PROJNAME ist von PROJ# allein funktional abhängig. Auch ABT# ist von PERS# allein funktional abhängig (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 H. Fritzsche, Wirtschaftsinformatik II 44 PERS# 101 102 PERSNAME Meyer Krause ABT# 1 2 ABTNAME Planung 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. 3. Normalform (3NF) Def.: Eine Relation ist in der 3NF, wenn sie sich in der 2NF befindet und keine funktionalen Abhängigkeiten zwischen Attributen existieren, die nicht als Schlüssel definiert sind (d.h. keine transitiven Abhängigkeiten definiert sind). Beispiel: Die Relation PERSONEN(PERS#, PERSNAME, ABT#, ABTNAME) befindet sich nicht in der 3NF, weil ABTNAME über ABT# transitiv von PERS# abhängt. Lösung: Aufspalten der Relation 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 mit der Normalisierung des Relationenmodells. Def.: Ein Attribut heißt global, wenn es mindestens in einer Relation im Identifikationsschlüssel vorkommt. Def.: Ein Attribut heißt lokal, wenn es nur in einer einzigen Relation und dort nicht im Identifikationsschlüssel vorkommt. Es kann nach diesen Definitionen Attribute geben, die weder global noch lokal sind. Solche Attribute treten bei „sich überlappenden“ Entitätsmengen auf. H. Fritzsche, Wirtschaftsinformatik II 45 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) H. Fritzsche, Wirtschaftsinformatik II 46 PERS# ist Fremdschlüssel in PERS-PROJ-TAETIGK und Identifikationsschlüssel in PERSONEN. PERSONEN ist Basisrelation. Def.: Die referentielle Integrität ist eine Konsistenzbedingung, welche verlangt, 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 können auch anhand von Entitäten-Diagrammen vorgenommen werden. Beziehungstypen bei Relationen: 1 c m mc 1 1-1 1-c 1-m 1 - mc c c-1 c-c c-m c - mc m m-1 m-c m-m m - mc mc mc - 1 mc - c mc - m mc - mc Hierarchische Beziehung Konditionelle Beziehung Netzwerkartige Beziehung 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 konditioneller und netzwerkartiger Beziehungen sind zusätzliche Relationen erforderlich. Rekursive Beziehungen müssen unter Bildung von Beziehungsrelationen aufgelöst werden. Strukturregel SR4: Rekursive Beziehungen zwischen Entitätstypen sind untersagt. H. Fritzsche, Wirtschaftsinformatik II 47 6 DATENBANKORGANISATION 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 MS Access 2000 vereinigt Entwicklungssystem und DBMS und besteht eigentlich aus zwei Produkten: Der Jet-Datenbankmodul dient dem Entwickeln von Datenbanklösungen für Desktops. Mit Microsoft Data Engine (MSDE) ist die Verwaltung einer Backend-Datenbank möglich. MSDE ist wie ein Miniatur-Datenbankserver einzustufen. Die MSDE wird standardmäßig nicht mit Access 2000 mit installiert. Grundlage für die Architektur von DBS bildet das 3-Ebenen-Modell. Anwender benutzen Anwendungsprogramme über deren Benutzeroberfläche. Anwendungsprogramme greifen über das DBMS auf die Datenbasis zu. Anwendungsprogramme lösen über Befehle der verwendeten Datenmanipulationssprache (DML) Transaktionen an das DBMS aus. Das DBMS formt Transaktionen in Anweisungen an das Betriebssystem um. Das Betriebssystem verwaltet die Speicher und löst Operationen für Speicherzugriffe aus. H. Fritzsche, Wirtschaftsinformatik II 48 Funktionsschichten des DBMS: Relationenverwalter Tupelverwalter Speicherverwalter 6.2 Konsistenz und Transaktionen Daten sind konsistent, wenn sie vordefinierte Konsistenzbedingungen einer Datenbank erfüllen. Man unterscheidet Konsistenzbedingungen, die dauernd erfüllt sein müssen, temporär Inkonsistenzen erlauben. 7 DATENSCHUTZ UND INFORMATIONSSICHERHEIT 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. H. Fritzsche, Wirtschaftsinformatik II 49 Zum Datenschutz gehört die Abschirmung gegen Unberechtigte, aber auch deren Verfügbarkeit für Berechtigte. 7.2 Sicherheit in Netzwerken Sicherheit in netzbasierten Anwendungen ist mehrseitig. Es treffen unterschiedliche Akteure mit unterschiedlichen Interessen aufeinander: Nutzer, Systembetreiber, Wartungsdienste, Systemhersteller, ... 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 Schlüsselaustausch nach Diffie/Hellman Die Kommunikationspartner A und B können jeder einen gemeinsamen Schlüssel K erzeugen, ohne geheime Informationen austauschen zu müssen. Beispiel: A und B seien zwei Kommunikationspartner, die vertraulich kommunizieren möchten und einen gemeinsamen Schlüssel K zur Verschlüsselung ihrer Informationen vereinbaren möchten. K selbst wird nicht ausgetauscht! A A und B vereinbaren zwei Zahlen g = 4 und p = 11 B A wählt seinen privaten Schlüssel XA = 3 B wählt seinen privaten Schlüssel XB=4 A berechnet seinen öffentlichen Schlüssel YA = g XA mod p = 4 3 mod 11 = 64 mod 11 = 9 B berechnet seinen öffentlichen Schlüssel YB = 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: K = YBXA = 33 mod 11 = 27 mod 11 = 5 B berechnet den Sitzungsschlüssel K: K = YAXB = 94 mod 11 = 6561 mod 11 = 5 H. Fritzsche, Wirtschaftsinformatik II 50 8 KOMMUNIKATIONSSYSTEME 8.1 Technisch-technologische Grundlagen Prozess: Ein sich gerade auf einem Rechner in Abarbeitung befindliches Programm. Verteiltes System (Netzwerkbetriebssystem): Computer arbeiten in einem Netzwerk zusammen. Auf jedem Computer läuft ein eigenes Betriebssystem. Der Nutzer ist sich der Existenz mehrerer Computer bewusst (im Unterschied zu einem „echten“ verteilten System). Sockets bieten eine Möglichkeit zur Kommunikation zwischen nicht verwandten Prozessen. Socket : IP-Adresse + Portnummer IP-Adressen identifizieren einen Computer im Netzwerk eindeutig. Portnummern identifizieren Dienste (d.h. Prozesse, die durch die Ausführung von Programmen einen bestimmten Dienst erbringen. 8.2 Kommunikationsdienste Finger Mit Hilfe des Dienstes Finger können Informationen über Nutzer bereitgestellt werden. Ein Finger-Client (Programm finger) ermöglicht es, Informationen zu entfernten Nutzern abzufragen. Ein Server (Programm fingerd) liefert die Informationen. World Wide Web Das World Wide Web (WWW) ist nicht das Internet, sondern ein Dienst, der im Internet angeboten wird. Grundlage der Kommunikation ist das Hypertext Transfer Protocol (HTTP), ein Protokoll, das in der Anwendungsschicht liegt. Über das HTTP sollen vom Server (dem Web-Server) bereitgestellte Dokumente auf Anforderung vom Client zum Client übertragen und vom Client (einem Browser) visualisiert werden. LITERATUR P. Lomax: VB & VBA in a Nutshell: The Language. O’Reilly, 1998. RRZN / Universität Hannover (Hrsg.): ACCESS 2000 – Automatisierung, Programmierung. 1. Auflage, Februar 2000. RRZN / Universität Hannover (Hrsg.): ACCESS 2000 – Fortgeschrittene Techniken für Datenbank-Entwickler. 1. Auflage, Mai 2000. E. Tiemeyer, K. Konopasek: Unternehmensdatenbanken mit MS SQL Server und Access – planen, entwickeln, einsetzen. Markt+Technik Verlag, 2001. H. Fritzsche, Wirtschaftsinformatik II 51