Datenbanksysteme I Dipl.-Inf. , Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik [email protected] Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik: Datenbanksysteme I 1 Inhalt 1. Grundlegende Begriffe der Datenbanktechnologie 2. Datenbankentwurf / Datenmodelle 3. ER-Modell / ER-Diagramm 4. SQL-Sprache 5. Normalisierung FB Automatisierung und Informatik: Datenbanksysteme I 2 1 Grundlagen der DBMS SQL- Grundlagen FB Automatisierung und Informatik: Datenbanksysteme I 3 Informationsspeicherung und Oracle Jede Behörde, jede Bildungseinrichtung und jedes Unternehmen hat einen gewissen Informationsbedarf Informationen werden in DB erfasst und mittels DBMS verwaltet – – DB: organisierte Sammlung von Daten DBMS: Managementsystem für die Daten Oracle ist ein DBMS (Oracle 7 ein relationales, Oracle 8 ein objekt-relationales) – ein DBMS ist ein Programm, um Daten auf Anforderung in der DB zu speichern, daraus abzurufen und zu bearbeiten FB Automatisierung und Informatik: Datenbanksysteme I 4 2 Oracle relational Auf der Basis des Codd‘schen Modelles (relationales Modell) Definition gemäß Oracle-Handbuch – – – – Ansammlung von Objekten oder Relationen Reihe von Operatoren, die auf die Relationen angewendet werden können Datenintegrität für Genauigkeit und Konsistenz kurz: „eine relationale Datenbank ist eine Reihe von Relationen oder zweidimensionalen Tabellen“ Beispiel: Mitarbeiterdatenbank, die in verschiedenen Tabellen unterschiedliche Informationen über die Mitarbeiter speichern: – – – Mitarbeitertabelle Abteilungstabelle Gehaltstabelle FB Automatisierung und Informatik: Datenbanksysteme I 5 Datenmodelle Datenmodelle werden zu folgenden Zwecken verwendet: – – – – – – – – kommunizieren kategorisieren beschreiben spezifizieren untersuchen entwickeln analysieren imitieren FB Automatisierung und Informatik: Datenbanksysteme I 6 3 ER-Modell In einem effizienten System sind Daten in bestimmte Kategorien (oder entities) unterteilt. Ein ER-Modell ist eine Darstellung verschiedener entities innerhalb eines Unternehmens und den Beschreibungen zwischen diesen ein ER-Modell wird aus Unternehmensspezifikationen oder Schilderungen abgeleitet und in der Analysephase des Systementwicklungszyklus erstellt ER-Modelle trennen die für ein Unternehmen erforderlichen Informationen von den in diesem Unternehmen ausgeführten Aktivitäten - auch wenn sich Aktivitäten ändern, bleiben Art und Struktur der Informationen weitgehend konstant FB Automatisierung und Informatik: Datenbanksysteme I 7 ER-Modell und Oracle Oracle unterstützt die ER-Modellierung (Designer) Krähenfuß-Notation es nutzt dabei die folgende Notation (hier m : 1-Beziehung): FB Automatisierung und Informatik: Datenbanksysteme I 8 4 ER-Modell Unique identifier: beliebige Kombination von Attributen oder Beziehungen (oder beide), die dazu dienen, das Vorkommen (die Existenz) einer Entität zu unterscheiden. Jede Entität muss eindeutig identifizierbar sein! Jedes Attribut, das Teil der UID ist, wird mit einem Nummernzeichen gekennzeichnet: # Fachbereich # Nummer * Name ° Standort * = „zwingend“ ° = „optional“ FB Automatisierung und Informatik: Datenbanksysteme I 9 Terminologie Zeile oder Tupel Spalte oder Attribut, die/das den Primärschlüssel darstellt Spalte(n) oder Attribut(e), die keine Primärschlüssel darstellen Spalte oder Attribut, das ggf. als Fremdschlüssel fungiert Feld: „Schnittstelle“ zwischen Zeile und Spalte jede Tabelle enthält Daten, die genau eine Entität beschrieben Verknüpfung von Tabellen über Fremdschlüssel (= Spalte oder Gruppe von Spalten, die auf einen Primärschlüssel in derselben oder in einer anderen Tabelle verweisen) diese Terminologie deckt sich mit den Inhalten der Vorlesungsstunde zum relationalen Modell FB Automatisierung und Informatik: Datenbanksysteme I 10 5 Oracle Eigenschaften Bietet Zugriffs- und Bearbeitungsmöglichkeiten durch Ausführung von SQL-Anweisungen enthält eine Ansammlung von Tabellen ohne physikalische Zeiger verwendet eine Reihe von Operatoren diese Terminologie deckt sich mit den Inhalten der Vorlesungsstunde zum relationalen Modell der Anwender muss nicht den Zugriffspfad zu Tabellen kennen; er muss auch nicht wissen, wie die Daten physikalisch angeordnet sind um auf die Datenbank zuzugreifen, führt der Anwender eine SQL-Anweisung aus – – SQL ist ein Standard des ANSI (American National Standards Institute) SQL enthält viele Operatoren zum Partitionieren und Kombinieren von Relationen und zur Modifikation der Datenbank FB Automatisierung und Informatik: Datenbanksysteme I 11 Kommunikation mit dem RDBMS über SQL SQL> SELECT loc 2 FROM dept; Anweisung geht an Datenbank Datenbank LOC ------------------NEW YORK RIO TOKYO Daten werden angezeigt FB Automatisierung und Informatik: Datenbanksysteme I 12 6 Oracle RDBMS Server Tabelle A Data Dictionary Tabelle B Tabelle C FB Automatisierung und Informatik: Datenbanksysteme I 13 Oracle Eigenschaften Relationales Datenbank Managementsystem (RDBMS) SQL PL/SQL Speicherung von Programmeinheiten Sicherheitsfunktionen, die Zugriff und Verwendung der Daten steuern Funktionen zur Gewährleistung der Konsistenz Datenschutzfunktionen Oracle-Anwendungen – – – auf demselben Rechner wie der Oracle Server alternativ: Benutzer nutzt lokales System; Oracle Server auf remote system (Client/Server) Vorteil der Alternative: es kann auf große Rechnerressourcen zurückgegriffen werden (Bsp.: Fluggesellschaft-Buchungssystem; Client: Rechner im Reisebüro; Server (remote) verwaltet Flugdaten) FB Automatisierung und Informatik: Datenbanksysteme I 14 7 Internet-Plattform High Performance Plattform für E-commerce und data warehousing beinhaltet alle Funktionalitäten, die zur Entwicklung, dem Einsatz und der Verwaltung von Internet-Anwendungen benötigt werden Entwicklungswerkzeuge mit GUI zur Erstellung von Geschäftsanwendungen einschl. umfangreichen Paketes an Software-Anwendungen für viele Geschäfts- und Industriebereiche Prozeduren können unter SQL, PL/SQL und besteht aus drei Modulen: – – – Oracle Eigenschaften Browser-basierte Clients zur Verarbeitung der Präsentation (Anzeige) Anwendungs-Server zur Ausführung der Unternehmenslogik und Bereitstellung von Präsentationslogik an die Browser-basierten Clients Datenbanken zur Ausführung von Datenbank-intensiver Unternehmenslogik und Datenbereitstellung FB Automatisierung und Informatik: Datenbanksysteme I Datenabruf Data Manipulation Language (DML) – – – – – – – – CREATE ALTER DROP RENAME TRUNCATE Transaktionssteuerung – – – INSERT UPDATE DELETE SQLAnweisungen Data Definition Language (DDL) – SELECT 15 COMMIT ROLLBACK SAVEPOINT Data Control Language (DCL) – – GRANT REVOKE FB Automatisierung und Informatik: Datenbanksysteme I 16 8 SQL Oracle SQL entspricht Industriestandards Oracle Corporation garantiert weitere Übereinstimmung mit neu entwickelten Standards durch die aktive Teilnahme seines Personals an SQLStandardisierungskommitees – ANSI (American Standards Institute) – International Standards Organization (ISO) – (beide haben SQL als Standardsprache für Datenbanken akzeptiert) FB Automatisierung und Informatik: Datenbanksysteme I 17 Oracle/SQL-Operationen Tabellen erstellen Daten einfügen Daten abrufen Daten bearbeiten Tabellen ändern FB Automatisierung und Informatik: Datenbanksysteme I 18 9 Oracle/SQL-Grundfunktionalität FB Automatisierung und Informatik: Datenbanksysteme I 19 Oracle: Beispieltabellen EMPLOYEES – Daten aller Mitarbeiter einer Firma DEPARTMENTS – Daten über die Abteilungen der Firma LOCATIONS – Adressen JOB_GRADES – Gehaltsangaben Grundlage der SQL-Übungen: ORACLE-Beispieltabellen (s.o.) ORACLE: Professioneller Einstieg in Oracle SQL (Teil I SQL Grundlagen, Band 1) 2001/2002 FB Automatisierung und Informatik: Datenbanksysteme I 20 10 DBMS: Sprachen, SQL oder: wie arbeitet man mit Datenbanken? FB Automatisierung und Informatik: Datenbanksysteme I 21 Datenbanksprachen Storage Structure Language (SSL) Dateiorganisation (Systemadministrator) Data Definition Language (DDL) View Definition Language (VDL) Interactive Query Language (IQL) oder Data Manipulation Language (DML) Data Base Programming Language (DBPL) Schnittstellen der Anwendungen (Menüs, Masken usw.) Schema erzeugen (Datenbankadministrator (DBA)) Sichten erzeugen (Anwendungsadministrator) Daten abfragen und editieren (ausgebildete Endanwender) Anwendungen erstellen (Programmierer) Daten abfragen und editieren (Endanwender ohne DB-Kenntnisse) FB Automatisierung und Informatik: Datenbanksysteme I 22 11 Structured Query Language (SQL) SQL wird von den meisten relationalen DBMS unterstützt (Oracle, Dbase, Microsoft Access, MySQL, SQL Server, etc.) gewinnt für Client/Server Anwendungen zunehmend an Bedeutung vom ANSI (American National Standard Institute) entwickelt und als Standardsprache für relationale DBMS erklärt – ABER: viele DBS-Hersteller haben den Sprachumfang von SQL für ihre eigenen Systeme erweitert es gibt also ANSI-SQL und Systemhersteller-spezifische Erweiterungen/Modifikationen von SQL FB Automatisierung und Informatik: Datenbanksysteme I 23 Structured Query Language (SQL) Relationales Modell deklarativ (spezifizieren, was man sucht, nicht wie es gesucht werden soll) Datenbankschema muss bekannt sein Standard (z. B. SQL2 von 1992, gegenwärtig: SQL3 von 1999) Weiterentwicklung – SQL3 (Objektorientierung) – GeoSQL (Geoobjekte, Geometrie und Topologie) FB Automatisierung und Informatik: Datenbanksysteme I 24 12 SQL-Beispiel select NAME, VORNAME from MITARBEITER where GEHALT > 3000 selektiert die Spalten NAME und VORNAME aus der Tabelle MITARBEITER für die Mitarbeiter, deren Gehalt höher ist als 3000 (€ brutto im Monat) FB Automatisierung und Informatik: Datenbanksysteme I 25 andere Sprachen... QUEL (QUEry Language, Ingres) hat gegen SQL „verloren“ QBE (Query by Example) Beispieleinträge in Tabellengerüsten Access ähnlich wie QBE OO Systeme: kein einheitlicher Sprachstandard FB Automatisierung und Informatik: Datenbanksysteme I 26 13 Kommandoeingabe graphische Oberfläche (Befehle werden automatisch erzeugt), besser als ein reiner Kommandoeditor Kommandos als Text eingeben DB-Anwendung: Nutzer wendet SQL an, ohne dies explizit zu wissen... FB Automatisierung und Informatik: Datenbanksysteme I 27 SQL Tabellen – – – – – – erzeugen mit Daten füllen indizieren “updaten” abfragen ... und in Tabellen – – – – für Konsistenz sorgen für Vollständigkeit sorgen für Aktualität sorgen ... FB Automatisierung und Informatik: Datenbanksysteme I 28 14 Begriffe Data dictionary DDL DML Index Integrity constraints table trigger view role FB Automatisierung und Informatik: Datenbanksysteme I 29 Data dictionary Enthält alle Informationen über die Art und Weise der Speicherung der Daten, über die Lokalisierung der Daten und über Zugangsbedingungen/-berechtigungen „tables about tables“ Metadaten FB Automatisierung und Informatik: Datenbanksysteme I 30 15 DDL Data Definition Language – – – – SQL create, revoke, grant, drop SQL statements, die Einsatz finden, um eine Tabelle zu erzeugen, oder zu löschen SQL statements, die Zugangsberechtigungen regeln FB Automatisierung und Informatik: Datenbanksysteme I 31 DML Data Manipulation Language select, insert, delete, update SQL statements, die mit der Manipulation der Datenbank zu tun haben FB Automatisierung und Informatik: Datenbanksysteme I 32 16 Index Eine Art „Kopie“ einer Oracle-Tabelle, die in einer sortierten Form vorgehalten wird Indizes erlauben den schnellen, gezielten Zugriff auf Daten in Tabellen Vergleich: das Inhaltsverzeichnis eines Buches; Telefonbuch; ... FB Automatisierung und Informatik: Datenbanksysteme I 33 Integrity constraints Regeln, die die „Integrität“ der Datenbank sichern. Unter „Integrität“ werden DB-Eigenschaften wie Vollständigkeit, logische Konsistenz, Einhaltung von Wertebereichen, etc. verstanden Beispiel: in einer Kunden-DB MUSS eine Kunde eine ID haben, sonst liefert das DBMS eine Fehlermeldung; hinter dieser Fehlermeldung verbirgt sich eine entsprechend implementierte Regel. FB Automatisierung und Informatik: Datenbanksysteme I 34 17 table Zentraler Bestandteil jedes relationalen DBMS: die Tabelle (“a database object that holds your data”) Informationen über die Tabellen werden im Oracle data dictionary vorgehalten unter Nutzung der Informationen im data dictionary wird das Management der in den Tabellen gespeicherten Daten möglich Basis: das relationale Modell! Entwurf: über das konzeptionelle Datenmodell, z. B. mit ER-Diagrammen! FB Automatisierung und Informatik: Datenbanksysteme I 35 trigger Trigger sind Programme, die Bestandteil der Datenbank sind diese Programme werden bei Eintritt bestimmter „events“ getriggert („angestoßen“, sie „feuern“) Beispiel: das Einfügen einer neuen Zeile in einer Tabelle kann ein „event“ sein, das die Auslösung eines triggers zur Folge hat, der z. B. Bedingungen prüft, unter denen eine neue Zeile eingefügt werden darf FB Automatisierung und Informatik: Datenbanksysteme I 36 18 view Views ermöglichen die Sicht eines DBMS-Nutzers auf eine oder mehrere Tabellen einer Datenbank views werden mit SQL-Skripten generiert, die in der DB gespeichert wird wenn auf einen view zugegriffen wird, wird das SQL statement ausgeführt; die Ergebnisse des statements werden dem Nutzer angezeigt FB Automatisierung und Informatik: Datenbanksysteme I 37 role Eine Rolle beschreibt mehrere Privilegien eines Nutzers Privilegen werden einer Rolle zugeordnet: – „Once privileges are granted to a role, a user inherits the role‘s privileges by becoming a membr of that role“ FB Automatisierung und Informatik: Datenbanksysteme I 38 19 Tabellen „every piece of information that gets loaded into an Oracle database must be placed inside an Oracle table“ zu unterscheiden: – – tables: alle Tabellen zur Speicherung der Informationen data dictionary tables: alle Tabellen, die Informationen über die sonstigen Oracle Tabellen enthalten („tables about tables“) Tabellen: Zeilen, Spalten – – Zeilen: Identifkator MUSS eindeutig sein; hat einen Typ (z. B. varchar2, date, number) Oracle ermöglicht die Zuordnung von integrity rules und triggers zu Tabellen FB Automatisierung und Informatik: Datenbanksysteme I 39 Tabellen erzeugen Create SQL> CREATE TABLE students Student_ID INTEGER PRIMARY KEY Student_name VARCHAR2 (25) Student_subject VARCHAR2 (30) SQL> / FB Automatisierung und Informatik: Datenbanksysteme I 40 20 Tabellen aus existierenden Tabellen erzeugen (1) Create table as SQL> CREATE TABLE mass_newhire 2 AS select * 3 from newhire 4* where state_cd = 'MA' SQL> / Table created FB Automatisierung und Informatik: Datenbanksysteme I 41 Tabellen aus existierenden Tabellen erzeugen (2) Die Originaltabelle SQL> select * from newhire; LNAME --------tom dick harry lisa alastair ST -MA NJ NJ MA TX HIRE_DATE SALARY --------- -----15-AUG-01 20000 02-FEB-01 30000 19-MAY-01 35000 08-MAY-01 55000 12-DEC-01 60000 FB Automatisierung und Informatik: Datenbanksysteme I 42 21 Tabellen aus existierenden Tabellen erzeugen (3) Die kopierte Tabelle SQL> select * from mass_newhire; LNAME --------tom lisa ST -MA MA SQL> 2 3 4* SQL> / HIRE_DATE SALARY --------- -----15-AUG-01 20000 08-MAY-01 55000 CREATE TABLE mass_newhire AS select * from newhire where state_cd = 'MA' FB Automatisierung und Informatik: Datenbanksysteme I 43 Index Effiziente Suche nach Informationen in komplexen Datenbanken, die aus einer Vielzahl von Tabellen aufgebaut sind Beispiel: – – – – Tabelle „ALPHABET“ mit 26 Spalten (A - Z) mit 800000 Zeilen Es wird ein Index auf die ersten 3 Spalten (ABC) gesetzt Name des Index: ABC Aufgabe: „Finde alle Zeilen, in denen in der Spalte A das Wort „Soup“ steht FB Automatisierung und Informatik: Datenbanksysteme I 44 22 Index Effiziente Suche nach Informationen in komplexen Datenbanken, die aus einer Vielzahl von Tabellen aufgebaut sind Beispiel: – Tabelle „ALPHABET“ mit 26 Spalten (A - Z) mit 800000 Zeilen Es wird ein Index auf die ersten 3 Spalten (ABC) gesetzt Name des Index: ABC Aufgabe: „Finde alle Zeilen, in denen in der Spalte A das Wort „Soup“ steht 1. Möglichkeit – 2. Möglichkeit – – – – gesamte Tabelle durchsuchen, alle Zeilen, alle Spalten nur die „interessierenden“ Spalten durchsuchen, oder vorhandene Indizes, z. B. ABC: – – 800000 Zeilen über 26 Spalten prüfen O D E R 800000 Zeilen nur über die Spalten A, B und C prüfen FB Automatisierung und Informatik: Datenbanksysteme I 45 Primärschlüssel (primary key) Jede Tabelle sollte einen Primärschlüssel aufweisen; dies gewährleistet die eindeutige Identifizierbarkeit von Tabellenattributen (bzw. die Vermeidung von redundanten Attributen, da ein Attribut nur einen Primärschlüssel haben kann) Beispiel: Kundendatei – – – Attribute: Kunde_ID, Kunde_Vorname, Kunde_Nachname, Kunden_Straße, Kunde_Stadt, Kunde_Telefon Jeder Kunde hat eine eindeutige Identifikationsnummer (Kunde_ID); Kunde_ID ist eindeutig und kommt nur einmal in der Tabelle vor: dieses Attribut ist als Primärschlüsselattribut geeignet Vorname, Nachname, Straße, etc. sind denkbar ungeeignet, da sie redundant in der Kundendatei vorkommen können und daher nicht mehr Eindeutigkeit gewährleistet ist FB Automatisierung und Informatik: Datenbanksysteme I 46 23 Oracle/SQL-Aufbau SELECT [DISTINCT|ALL] {*, column [alias], expr …} FROM table, … [WHERE condition(s)] [GROUP BY expr [, expr] …] [HAVING condition(s)] [ORDER BY {column, expr, alias} [ASC|DESC]]; FB Automatisierung und Informatik: Datenbanksysteme I 47 Oracle/SQL-Syntax SELECT DISTINCT * column alias expr FROM table WHERE GROUP BY HAVING ORDER BY ASC: DESC: Liste mit einer oder mehreren Spalten Schlüsselwort, um vorkommende Zeilen auszuschließen Auswahl aller Spalten aller in der FROM-Klausel aufgeführten Tabellen, Views oder Snapshots Auswahl der benannten Spalte Ausgewählte Spalten erhalten andere Überschriften Zeichenkette oder errechneter Ausdruck Schlüsselwort zur Angabe der Tabelle, View, oder des Snapshot mit den Spalten Klausel zur Einschränkung der auszuwählenden Zeilen entsprechend einer Bedingung zur Gruppierung ausgewählter Zeilen und zur Rückgabe einer zusammenfassenden Zeile gibt an, welche durch die GROUP-BY-Klausel definierten Zeilengruppen von der Abfrage zurückgegeben werden Reihenfolge zur Anzeige der abgerufenen Zeilen. aufsteigend (Standard), absteigend FB Automatisierung und Informatik: Datenbanksysteme I 48 24 Oracle/SQL-Syntax Folgende einfache Regeln und Richtlinien müssen einhalten werden, damit gültige Anweisungen konstruiert werden, die leicht lesbar und einfach zu editieren sind: SQL-Anweisungen unterscheiden keine Groß- und Kleinbuchstaben. Klauseln stehen gewöhnlich zur leichteren Lesbarkeit und Bearbeitung in separaten Zeilen. Schlüsselwörter werden gewöhnlich in Großbuchstaben angegeben; alle anderen Wörter, wie z.B. Tabellennamen und Spalten, werden in Kleinbuchstaben geschrieben. FB Automatisierung und Informatik: Datenbanksysteme I 49 Erste Schritte: Select from where SELECT ... FROM SQL> select * from newhire; SELECT ... FROM ... WHERE SQL> select * from newhire where state_cd = 'MA'; FB Automatisierung und Informatik: Datenbanksysteme I 50 25 Select .. from .. where SELECT - Auswahl der Information (bzw. die Namen der Spalten, die die relevante Information enthalten) FROM - wo ist die Information zu finden (bzw. der Name der Relation/Tabelle, in der die relevante Information zu finden ist) WHERE - Definition von Bedingungen oder Selektionskriterien; hier kann auch spezifiziert werden, wie zwei Tabellen miteinander verknüpfbar sind GROUP - wie ORDER - wie BY sollen die Daten gruppiert werden? BY sollen die Daten sortiert werden? FB Automatisierung und Informatik: Datenbanksysteme I 51 Select from where SELECT KNr, Kursbezeichnung FROM Kurse WHERE Kursbezeichnung = 'Informatik' KNr Kursbezeichnung 255 257 345 348 401 444 Informatik Informatik Elektrotechnik Steuerungstechnik Informatik Informatik FB Automatisierung und Informatik: Datenbanksysteme I 52 26 Oracle: SQL*Plus Aufruf über Menü „Oracle9i“ - Benutzerkennung - Password - Host-Zeichenfolge } Verbindung mit der Server-seitigen DB aufbauen Zugriff von der Befehlszeile: SQL> 1 2 3 – – – Aufruf aus dem Menü Beenden über „exit“ DDL und DML sofort einsetzbar; gesamter Sprachumfang von SQL*Plus FB Automatisierung und Informatik: Datenbanksysteme I 53 Oracle: SQL*Plus Jede Tabelle hat einen eindeutigen Namen alle Spalten haben eindeutige Namen für jede Spalte ist ein Datentyp anzugeben mit jedem Datentyp sind bestimmte Regeln verbunden, die Datenbank-Engine von Oracle9i unterstützt diese Regeln Datentypen char(size) varchar(size) number(l,d) blob raw(size) date long Zeichenfolgen mit fixer Länge Zeichenfolgen mit variabler Länge Numerische Daten (l = Länge, d = Dezimalstellen) großes Binärobjekt (bis zu 4GB) Datentyp mit variabler Länge; für Binärdaten oder Byte-strings wie Grafiken, sounds, Dokumente, etc. Datumsangaben Zeichendaten mit variabler Länge; Spalten, die als long definiert sind können bis zu 2GB aufnehmen FB Automatisierung und Informatik: Datenbanksysteme I 54 27 „Übersetzen“ Sie in SQL: Ö Zeige mir alle Daten der Tabelle „Mitarbeiter“ Ö Zeige mir den Mitarbeiter „Müller“ in der Tabelle `Mitarbeiter` an Ö Zeige mir aus der Tabelle „Kursteilnehmer“ alle Personen, die den Kurs „Datenbanken“ belegt haben FB Automatisierung und Informatik: Datenbanksysteme I 55 28