Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Themen heute Rückblick Erweiterung funktionale Beziehungen Relationenmodell Integritätsregeln Übersetzung ERM in Tabellenmodell Übung Grundlegende SQL-Kommandos.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Themen heute Rückblick Erweiterung funktionale Beziehungen Relationenmodell Integritätsregeln Übersetzung ERM in Tabellenmodell Übung Grundlegende SQL-Kommandos."—  Präsentation transkript:

1 1 Themen heute Rückblick Erweiterung funktionale Beziehungen Relationenmodell Integritätsregeln Übersetzung ERM in Tabellenmodell Übung Grundlegende SQL-Kommandos Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

2 2 Rückblick E/R-Modell Entity, Entity-Typen, Attribute, Domänen Relationship-Typ / Beziehungstyp Funktionale Beziehungen(1:1, 1:n, n:1, n:m) ISA-Relationship –total / partiell –disjunkt / nicht disjunkt Schlüsselattribute –Schlüsselkandidat –Primärschlüssel –Fremdschlüssel –Zusammengesetzter Schlüssel Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

3 3 Graphische Bausteine des ERM Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 E Entity-Typ E A Attribut A A Schlüssel-Attribut A EA Verbindung zwischen Entity-Typ E und Attribut A A kann undefiniert sein E1E2 R Binäre Relationship zwischen den Entity-Typen E1 und E2

4 4 Funktionale Beziehungen / Beispiele Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Abteilungsleiter Abteilung leitet AngestellterAbteilung arbeitet-in PersonHaus besitzt StudentVorlesung hört 11 N1 1N NM

5 5 ISA-Relationship Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 p Isa-Beziehung: p: partiell t: total t nicht disjunktdisjunkt totalpartiell

6 Web-Shop Vertriebsdatenbank

7 7 ProduktBestellungKunde Lieferant SpediteurMitarbeiter Kategorie liefert beschreibt liefert aus Posten bestellt bearbeitet PNrBNrKuNr LNr KaNr SNrMNr n mn1 n 1 n 1 n 1 n 1 Anzahl

8 8 ProduktBestellungKunde Lieferant SpediteurMitarbeiter Kategorie Offerte liefert beschreibt liefert aus Posten bestellt bearbeitet offeriert PNrBNrKuNr LNr KaNr SNrMNrONr bearbeitet Offerte nm n1 n 1 n 1 n 1 n 1 1 n 1 n Anzahl BDatum Preis LPreis LDATUM OPosten n m Anzahl Preis n

9 Das Relationenmodell

10 10 Sinn der 3 Modellierungssprachen Relationale Modell (Algebra) mathematische Fundierung, Semantisch eindeutige Formulierung Tabellenmodell Implementierung / Realisierung E/R-Modell Kommunikation, Dokumentation Übersichtliche Darstellung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

11 11 Definition: Datenbankschema Unter einem Datenbankschema versteht man eine Spezifikation der Datenstrukturen einer Datenbank mit den zugehörigen Integritätsbedingungen. D.h.: ein Datenbankschema enthält die Definition der –Tabellen –Attribute –Primärschlüssel –Integritätsbedingungen (Einschränkungen der Wertebereiche der Attribute) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

12 12 Grundkonzepte des Relationenmodells Wertebereich / Domäne Mögliche Werte eines Attributs, Beispiel string Relation Eine Relation R ist eine Teilmenge des kartesischen Produktes von Domänen D i (1 i n): R D 1 x... x D n Relationen kann man auch als die Zeilen einer zweidimensionale Tabellen ansehen. Tupel Tupel sind Elemente von Relationen. In Tabellen entsprechen sie den Zeilen. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

13 13 Grundkonzepte des Relationenmodells Attribut Spalte einer Tabelle Attributwert Element eines dem Attribut zugeordneten Wertebereichs Relationenschema Ein Relationenschema besteht aus einem Relationennamen, gefolgt von der Liste ihrer Attribute und den zugeordneten Domänen: R(A 1 :D 1,...,A n :D n ) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

14 14 Grundkonzepte des Relationenmodells Relationales DB-Schema Menge aller Relationenschema in der Datenbank Relationale DB Das relationale DB-Schema zusammen mit den momentanen Werten der Relationen Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

15 15 Integritätsregeln Integritätsbedingungen sind Forderungen an die Zusammenhänge über die in der relationalen DBen enthaltenen Daten. Es gibt zwei verschiedene Typen von Integritätsbedingungen: Strukturelle Regeln: Sie sind inhärent für das Datenmodell. Verhaltensregeln: sie sind abhängig von der jeweiligen Anwendung. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

16 16 Integritätsregeln Eindeutigkeit von Schlüsseln Relationen dürfen als Tupelmengen keine Duplikate enthalten. Eine noch schärfere Einschränkung wird durch den Begriff des Schlüsselkandidaten ermöglicht. Definition: Eine Menge S von Attributen einer Relation R heißt Schlüsselkandidat, wenn gilt: 1.Keine Instanz von R kann zwei verschiedene Tupel enthalten, die in S übereinstimmen. 2.Keine echte Teilmenge von S hat Eigenschaft 1. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

17 17 Integritätsregel 1 - Primärschlüssel Primärschlüssel Jede Relation muß mindestens einen ausgewählten Schlüsselkandidaten besitzen, den sogenannten Primärschlüssel. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

18 18 Definition: Fremdschlüssel Ein Fremdschlüssel einer Tabelle ist ein Attribut, oder eine Attributs- kombination, das (bzw. die) in einer anderen Tabelle als Primärschlüssel auftritt. Fremdschlüssel stellen die gewünschten Beziehungen zwischen Tabellen her. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

19 19 Integritätsregel 2 - Fremdschlüssel Fremdschlüssel Der Primärschlüssel eines Relationenschemas R, das einen Relationship-Typ eines E/R-Diagramms modelliert, enthält Fremdschlüssel. Beispiel : In der Relation liefert(LName,ArtName,Preis) istLname ein Fremdschlüssel aus LIEFERANT, und ArtName ein Fremdschlüssel aus ARTIKEL. Eine Relationship kann nur existieren, wenn die beteiligten Entities existieren. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

20 20 Integritätsregel 2 – Referentielle Integrität Falls ein Relationenschema R einen Fremdschlüssel F = {A 1,..., A l } des Relationenschemas S enthält, muß zu jedem Tupel t = (A 1 = a 1,..., A l = a l,...) aus R ein Tupel t' = (A 1 = a 1,..., A l = a l,...) in S existieren. Diese Integritätsregel bezeichnet man auch als referentielle Integrität. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

21 21 Integritätsregel 2 – Referentielle Integrität Bemerkung: Verletzungen der referentiellen Integrität können auftreten, wenn neue Tupel in R eingefügt oder existierende Tupel aus S gelöscht werden. Fremdschlüssel sind meist Teil des Primärschlüssels. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

22 22 Integritätsregel 3 – NULL-Werte Manchmal tritt der Fall auf, daß ein neues Tupel t in die Relation R eingefügt werden soll, ohne daß alle Attributwerte von t bekannt oder relevant sind. Für solche Situationen verwendet man den sogenannten NULL-Wert anstelle unbekannter oder irrelevanter Attributwerte. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

23 23 Integritätsregel 3 – NULL-Werte Beispiel: Der neue Angestellte Robert Ford wird eingestellt; die Festsetzung seines Gehalts steht aber noch aus. ANGESTELLTER AngName Gehalt 'Robert Ford' NULL Außerdem soll die Zuordnung von Robert Ford zu einer ABTEILUNG erst später getroffen werden. Analog zum Eintrag in ANGESTELLTER ergibt sich daher: arbeitet_in AngName AbtName 'Robert Ford' NULL Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

24 24 Integritätsregel 3 – NULL-Werte NULL-Werte können nicht auf allen Attributpositionen sinnvoll eingesetzt werden Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

25 25 Integritätsregel 3 – NULL-Werte Kein Attributwert des Primärschlüssels einer Relation darf NULL sein. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

26 26 Integritätsregel 3 – NULL-Werte Bemerkung Dadurch soll die eindeutige Identifikation von Tupeln, die Entities oder Relationships beschreiben, gesichert sein. Für Fremdschlüssel, die nicht Teil des Primärschlüssels sind, gilt Integritätsregel 3 nicht. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

27 27 Integritätsregeln - alle Alle drei Integritätsregeln sind strukturelle Integritätsregeln für das relationale Modell. Sie sollten von einem relationalen DBMS automatisch überprüft werden!!! Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

28 Übersetzung E/R-Modell in Tabellen-Modell (in Relationales Datenbankschema)

29 29 Datenmodellierung im Relationalen Modell Bei der Erstellung des relationalen Schemadesigns wird folgende Vorgehens- weise nachdrücklich empfohlen: –Erstellung eines E/R-Diagramms. –Konvertierung des E/R-Diagramms in ein relationales DB-Schema. Grund: Grössere Übersichtlichkeit und grössere semantische Ausdruckskraft des E/R-Modell gegenüber dem Relationen Modell. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

30 30 Regel 1 Jeder Entity-Typ muss als eigenständige Tabelle mit eindeutigem Primärschlüssel definiert werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

31 31 Konvertierung in Relationales Modell Konvertierungsregel 1: E/R-Modell Relationen Modell Ein Entity-Typ E mit Attributen A 1,...,A k aus den Domänen D 1,...,D k wird abgebildet auf ein k-stelliges Relationenschema E(A 1 :D 1,..., A k :D k ). Falls dabei ein Relationship-Typ E isa F vorliegt, kann man die Attributvererbung (z.B.) durch Hinzunahme aller Schlüsselattribute von F berücksichtigen. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

32 32 Regel 2 Jede Relationship kann als eigenständige Tabelle definiert werden. Die Primärschlüssel der zugehörigen Entity-Typen treten als Fremd- schlüssel in dieser Tabelle auf. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

33 33 Konvertierung in Relationales Modell Konvertierungsregel 2: E/R-Modell Relationen Modell Ein Relationship-Typ R zwischen den Entity-Typen E 1,..., E n wird dargestellt durch ein Relationenschema R, dessen Attribute aus allen Schlüsselattributen der E i bestehen. Gleiche Attribute werden dabei durch Umbenennung in R eindeutig gemacht. Falls R eigene Attribute besitzt, nimmt man diese hinzu. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

34 34 Regel 2 Der Primärschlüssel der Relationship kann sich aus den Fremdschlüsseln zusammensetzen oder ein anderer Schlüsselkandidat sein, z.B. ein neuer künstlich eingeführter Schlüssel. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

35 35 Beispiel: ERM Regel 1 und 2 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Abteilung ProjektMitarbeiter Zugehörig- keit Abteilungs- Leiter Unter- stellung m n n %-Anteil M# A# P# NameOrt Inhalt Bezeichnung

36 36 Alternative Kennzeichnung von Schlüsseln A# := A Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

37 37 Beispiel: Tabellen Regel 1 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 AbteilungProjektMitarbeiter A# Bezeichnung P# Inhalt M# NameOrt

38 38 Beispiel: Tabellen Regel 2 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 AbteilungsleiterUnterstellungZugehörigkeit A#M# A#M# P# %-Anteil

39 39 Regel 2 (Beispiel) Da zu jeder Abteilung genau ein Abteilungsleiter gehört, genügt die Abteilungsnummer A# in der Tabelle ABTEILUNGSLEITER als Primärschlüssel. Analoges gilt für M# in der Tabelle UNTERSTELLUNG Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

40 40 Regel 2 (Beispiel) In der Tabelle ZUGEHÖRIGKEIT müssen die Fremdschlüssel M# und P# zusammen als Primärschlüssel definiert werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

41 Abbildungsregeln für Beziehungsmengen

42 42 Regel 3 (n:m-Beziehung) Jede n:m Beziehungsmenge muss als eigenständige Tabelle definiert werden. Die Primärschlüssel der zugehörigen Entity- Typen treten in der Relationship als Fremdschlüssel auf. Der Primärschlüssel der Relationship setzt sich aus den enthaltenen Fremdschlüsseln zusammen oder ist ein anderer Schlüsselkandidat. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

43 43 Regel 4 (1:n - Relationship) Jede 1:n Relationship kann ohne zusätzliche eigenständige Tabelle definiert werden. Dazu wird in einer der beiden Tabellen mit Assoziationstyp n ein Fremdschlüssel auf die damit verknüpfte Tabelle geführt. Die Fremdschlüsselbeziehung wird (i.B.) durch ein Attribut gegeben, das sich aus dem entliehenen Primärschlüssel und dem Entity- Namen Unterstellung zusammensetzt. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

44 44 Beispiel: Regel 4 (1:n) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 MitarbeiterAbteilung Unter- stellung 1n AbteilungMitarbeiter A# Bezeichnung M# NameOrt A#_Unterstellung Fremdschlüssel-Beziehung

45 45 Regel 5 (1:1- Relationship) Jede 1:1 Relationship kann ohne zusätzliche eigenständige Tabelle definiert werden. Dazu wird in einer der beiden Tabellen mit Assoziationstyp 1 ein Fremdschlüssel auf die damit verknüpfte Tabelle geführt. Die Fremdschlüsselbeziehung wird (i.B.) durch ein Attribut gegeben, das sich aus dem entliehenen Primärschlüssel und dem Entity- Namen Abteilungsleiter zusammensetzt. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

46 46 Beispiel: Regel 5 (1:1) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 MitarbeiterAbteilung Abteilungs- leiter 11 AbteilungMitarbeiter A# Bezeichnung M# NameOrt Fremdschlüssel-Beziehung M#_Abteilungsleiter

47 Abbildungsregeln für die Generalisation

48 48 Regel 6 Jeder Entitytyp einer Generalisationshierarchie verlangt eine eigenständige Tabelle, wobei der Primärschlüssel der übergeordneten Tabelle auch Primärschlüssel der untergeordneten Tabelle wird. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

49 49 Regel 6 Die Nicht-Disjunkt Eigenschaft erfordert keine spezielle Regelung. Die Disjunkt-Eigenschaft erfordert die Einführung eines Attributes Kategorie in der übergeordneten Tabelle. Es enthält die Information zu welcher Unterklasse das Objekt gehört. Bei einer disjunkten und totalen Generalisation muss garantiert werden, dass pro Eintrag in der übergeordneten Tabelle ein Eintrag in einer der Spezialisierungen existiert und umgekehrt. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

50 50 Regel 6 (Beispiel) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 FührungskraftFachspezialistLehrling Mitarbeiter t M# NameOrt Führungskraft M# Stellung Fachspezialist M# Know-how Lehrling M# Lehrjahr Kategorie M# Name Ort Kategorie Stellung Lehrjahr Know how

51 51 Regel 6 (Beispiel) Damit ein bestimmter Mitarbeiter nicht mehreren Kategorien gleichzeitig angehört, führen wir das Merkmal Kategorie ein. Dieses kann die folgenden Werte annehmen: –Führungskraft –Fachspezialist –Lehrling Es garantiert die Eigenschaften der disjunkten Generalisierungshierarchie. Die Eigenschaft der Vollständigkeit kann nicht im Datenbankschema ausgedrückt werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

52 Übung Vertriebsdatenbank in Tabellenform übersetzen

53 53 ProduktBestellungKunde Lieferant SpediteurMitarbeiter Kategorie Offerte liefert beschreibt liefert aus Posten bestellt bearbeitet offeriert PNrBNrKuNr LNr KaNr SNrMNrONr bearbeitet Offerte nm n1 n 1 n 1 n 1 n 1 1 n 1 n Anzahl BDatum Preis LPreis LDATUM OPosten n m Anzahl Preis

54 54 Tabellen Vertriebsdatenbank Kunde(KuNr, Name, Adresse, Rabatt) Produkt(PNr, P-Name, KaNr, LNr, Preis, LPreis) Bestellung(BNr,KuNr,MNr,SNr,Bestelldatum, Lieferdatum) Lieferant(LNr,Name, Adresse) Kategorie(KaNr,Name) Spediteur(SNr, Name, Adresse) Mitarbeiter(MNr,Name, Adresse) Offerte(Onr, KuNr, MNr, Posten(PNr,BNr,Anzahl) Oposten(PNr,ONr,Anzahl,Preis) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

55 55 Themen heute Nachtrag Funktionale Beziehungen (Beziehungstypen / Assoziationstypen) SQL-Einführung / Übersicht Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

56 56 Nachtrag Funktionale Beziehungen Es gibt in der Datenbank-Literatur diverse Notationen mit unterschiedlicher Bedeutung insbesondere eine genau entgegen- gesetzte Definition / Interpretation der funktionalen Beziehung (1:N). Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

57 57 Kardinalitäten als Teilnahmezahl an der Beziehung Kardinalitäten als Teilnahmezahl an der Beziehung ist die ausdrucksstärkste Variante zur Beschreibung von Beziehungstypen. Sie soll zur Klärung der Situation deshalb zunächst vorgestellt werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

58 58 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 E1 E2 R [a,b][c,d] Allgemeine Form für diese zweistellige Beziehungstypen:

59 59 Kardinalitäten als Teilnahmezahl an der Beziehung Die Kardinalitätsangaben [a,b] und [c,d] schränken die möglichen Teilnahmen von Instanzen der beteiligten Entity- Typen an der Beziehung ein, indem jeweils minimale Werte a, c und maximale Werte b, d vorgegeben werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

60 60 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 MitarbeiterRaum arbeitet-in E1 E2 R [a,b][c,d] [0,1][0,3] Hierbei beschreiben die numerischen Werte, wie oft (mindestens (a bzw. c) und höchstens (b bzw. d)) ein Entity des zugehörigen Entity-Typs (E1 bzw. E2) in der Beziehung auftauchen muss (mindestens) und kann (höchstens). a, b, c, d (0, 1,...., *)

61 61 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Mitarbeiter Raum arbeitet in [0,1][0,3] Jedem Mitarbeiter ist höchstens ein Raum zugeordnet. Es kann aber auch Mitarbeiter geben, denen kein Raum zugeordnet ist. Es kann Räume geben, denen kein Mitarbeiter zugeordnet ist. Einem Raum können maximal 3 Mitarbeiter zugeordnet sein. R#M#

62 62 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Mitarbeiter Raum arbeitet in [0,1][0,3] M#R# M1 M2 M3 M4 R1 R2 M1 M2 M3 M4 M5 R1 R2 R3 R4 3mal Maximal 3 mal oder kein mal Maximal 1 mal oder kein mal R#M#

63 63 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Mitarbeiter Raum arbeitet in [0,1][0,3] M#R# M1 M2 M3 M4 M5 R1 R2 R3 R4 R#M#

64 64 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Mitarbeiter Raum arbeitet in [1,1][1,3] M#R# M1 M2 M3 M4 M5 R1 R2 R3 R4 M1 M2 M3 M4 M5 R1 R2 R3 R4 R#M#

65 65 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Mitarbeiter Abteilung leitet MitarbeiterAbteilung arbeitet-in PersonHaus besitzt StudentVorlesung hört [0,1][1,1] [1,*] [0,*][1,1] [0,*]

66 66 Kardinalitäten als Teilnahmezahl an der Beziehung Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Die numerischen Werte [min, max] beschreiben, wie oft ein Entity des Entity-Typs an der Beziehung teilnehmen kann, d.h., sie schränken die Teilnahmen von Instanzen der beteiligten Entity-Typen an der Beziehung ein. min, max (0, 1,...., *), (* = unbegrenzt oft) [0, *] legt keine Einschränkungen fest [2, 5] mindestens 2 mal, höchstens 5 mal mögliche Anzahl: 2, 3, 4,5

67 67 Assoziationstypen Alternative Notation: 1[1,1]genau ein c[0,1]kein oder ein m,n [1,*]mehrere mc, nc[0,*]kein, ein oder mehrere Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

68 68 Beispiel: Alternative Notation Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Abteilung ProjektMitarbeiter Zugehörig- keit Abteilungs- Leiter Unter- stellung m nc 1 m c 1 %-Anteil M# A# P# NameOrt Inhalt Bezeichnung

69 69 Alternative - Funktionale Beziehungen Prof. Dr. Fabian Glasen, Datenbanken, Februar [0,1] : [1,1] MitarbeiterAbteilung MitarbeiterAbteilung 1:m leitet Unterstellung [1,1] : [1,*] c:1 Alternative Notation: 1: m Alternative Notation: c:

70 70 Alternative - Funktionale Beziehungen Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Alternative Notation: 1: nc MitarbeiterAbteilung 1:nc Unterstellung [1,1] : [0,*] Variante von Unterstellung mit der Möglichkeit von Abteilungen ohne Mitarbeiter

71 71 Funktionale Beziehungen (ERM Ursprung) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 [0,1] : [0,*] Alternative Notation: c: nc MitarbeiterAbteilung Unter- stellung 1N MitarbeiterAbteilung N:1 Unterstellung Bedeutung in alternativer Notation

72 72 Funktionale Beziehungen (ERM Ursprung) bedeutet demnach: Jeder Mitarbeiter kann höchstens zu einer Abteilung gehören Einer Abteilung können mehrere Mitarbeiter zugeordnet sein Abteilungen und Mitarbeiter müssen aber nicht alle in der Beziehung auftauchen Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 MitarbeiterAbteilung Unter- stellung 1 n

73 73 Funktionale Beziehungen (ERM Ursprung) / Bemerkung Was folgt daraus? Übernahme der C-Notation ins ürsprüngliche ERM ist nicht sinnvoll!!! Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

74 74 Funktionale Beziehungen (ERM Ursprung) / Bemerkung Falls man Fremdschlüssel von Abteilung in der Tabelle Mitarbeiter führt, kann der Wert gegebenenfalls NULL werden. Falls man eine zusätzliche Verknüpfungstabelle einführt, kann man die nicht vorhandenen Verknüpfungen einfach weglassen, kommt dabei ohne NULL-Werte aus. Die referentielle Integrität ist verletzt,wenn ein Fremdschlüsselwert exisitiert für den kein zugehöriger Primärschlüssel existiert. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

75 75 Referentielle Integrität Falls ein referenziertes Tupel in der Vaterrelation gelöscht oder geändert wird, sind folgende Regeln anwendbar: Restricted: Die (Lösch-) Operation auf der Vaterrelation wird nicht zugelassen Cascade: die Referenztupel werden mitgelöscht bzw. die geänderten Schlüsselwerte werden übernommen Set NULL / Set Default: Die Werte in den zugehörigen Fremdschlüsseln werden auf NULL oder den Default-Wert gesetzt. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

76 SQL Structured Query Language

77 77 SQL Geschichte 1974 erste relationale Anfragesprache SEQUEL 1979 Oracle liefert erstes relationales DBMS mit SQL aus 1983IBM stellt DB2 vor 1985INGRES und Informix stellen auf SQL um 1987ISO 9075 Standard (SQL86) 1988ADABAS erhält SQL 1989ISO 9075 SQL mit Integrity Enhancement (SQL 89) 1992ISO 9075 (SQL2 bzw. SQL-92) 1999SQL:1999 (SQL3) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

78 78 SQL - Implementationen Standard-SQL und die verfügbaren SQL- Implementierung in kommerziell verfügbaren Datenbanksystemen sind nicht identisch!!! Man unterscheidet –Entry-Level SQL –Intermediate-Level SQL –Full-Level SQL Der Entry-Level wird von den meisten verfügbaren DBMS unterstützt Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

79 79 SQL - Implementationen Unterschiede ergeben sich aus: unterschiedlichen Funktionalitäten –Teilweise werden Anforderungen des Standards nicht erfüllt (MySQL) –Teilweise werden zusätzliche Funktionen angeboten unterschiedlicher Syntax (MS-Access) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

80 80 SQL - Implementationen Beispiel: MySQL unterstützt folgende Funktionen nicht: Transaktionen Referentielle Integrität Sichten Unterabfragen Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

81 81 Sprachelemente SQL DDL (Data Defintion Language) –Datenbank anlegen –Definition von Domänen –Definition von Relationen und Integritätsbedingungen –CREATE TABLE (...) –Definiton von Datensichten (Views / Abfragen) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

82 82 Sprachelemente SQL DML (Data Manipulation Language) –Eingabe (INSERT INTO) –Änderung (UPDATE) –Löschen (DELETE FROM) Query-Language –SELECT... FROM... WHERE... Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

83 83 Sprachelemente SQL Zusätzliche Anweisungen zur Steuerung von Transaktionen zur Definition von Indexen zur Verwaltung von Benutzern und deren Zugriffsrechten Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

84 84 Datenbank anlegen, löschen, schliessen CREATE DATABASE datenbankname DROP DATABASE datenbankname CLOSE DATABASE datenbankname Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Nicht standardisiert!!!

85 85 Datenbank anlegen, löschen, schliessen Beispiele: CREATE DATABASE Kunden DROP DATABASE Kunden CLOSE DATABASE Kunden Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

86 86 SQL Domänen Neben den vordefinierten Datentypen können selbstdefinierte Domänen bei der Tabellendefinition zur Spezifikation der zulässigen Attributwerte verwendet werden (natürlich auch mehrfach). Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

87 87 SQL Domänen Allgemein: CREATE DOMAIN domänenname [AS] Datentyp [default] [bedingung]; bedingung wird grundsätzlich durch CHECK- Klausel realisiert. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

88 88 SQL Domänen Beispiele: CREATE DOMAIN Zahlungsart AS CHAR(1) CHECK (VALUE IN (R, B, N,V,K)) DEFAULT N; CREATE DOMAIN Kunden-Key AS INTEGER CHECK (VALUE > 100); CREATE DOMAIN Kunden-Status AS CHAR(1) CHECK (VALUE IN (W, G, S)); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

89 89 SQL Domänen Beispiel: CREATE TABLE kunde ( kunden_nrKunden_Key NOT NULL, statusKunden-Status, zahlungZahlungsart,...); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

90 90 SQL Datentypen INTEGERvier Byte SMALLINTzwei Byte DECIMAL (p,q)Dezimalzahlen p-Stellen REALGleitpunktzahlen (einf.) CHARACTER(n)Zeichenketten, Länge=n CHARACTER VARYING(n) höchstens n Zeichen DATEKalenderdaten TIMESTAMP(p)Datum und Uhrzeit TIME(p)Stunden, Min., Sek., BOOLEAN(True, False, Unknown) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

91 91 Operationen mit Datentypen Für numerische Datentypen Addition: + Subtraktion:- Multiplikation:* Division:/ Reihenfolge der Abarbeitung –Klammern –Punktrechnung vor Strichrechnung –von links nach rechts Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

92 92 SELECT (WHERE - Klausel) 6 Vergleichsoperatoren für Attributwerte: =gleich <> oder !=ungleich (DB-spezifisch) grösser <=kleiner oder gleich >=grösser oder gleich Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

93 93 SELECT (WHERE - Klausel) Ausführungsreihenfolge der logischen Operatoren: 1NOT 2 AND 3OR Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

94 94 CREATE TABLE Allgemein: CREATE TABLE table_name (spaltendefinitionsliste [,tabellenintegritätsregelliste]); spaltendefinition ::= spaltenname typangabe [default-Klausel] [spaltenintegritätsregelliste] tabellenintegritätsregel ::= check-klausel | primary_key-klausel | unique-klausel | foreign-key-klausel Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

95 95 CREATE TABLE Einfach Allgemein: CREATE TABLE table_name (Spalte1 Daten-Typ-für-Spalte-1, Spalte2 Daten-Typ-für-Spalte-2,... ) ; Beispiel: für eine Kundentabelle CREATE TABLE Kunde (Vorname char(50), Name char(50), Addresse char(50), Stadt char(50), Land char(25), Geburtstag date); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

96 96 DDL CREATE TABLE CREATE TABLE mitarbeiter (personnrINTEGER NOT NULL, nameCHAR(18) NOT NULL vornameCHAR(18), geschlechtCHAR(1), abtnrINTEGER, GehaltDECIMAL(8,2)); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

97 97 DDL CREATE TABLE CREATE TABLE Kunde ( kundennrINTEGER NOT NULL, statusCHAR(1) NOT NULL, NameCHAR(30) NOT NULL, zahlungsart CHAR(1) NOT NULL DEFAULT N', OrtCHAR (39) NOT NULL, CHECK (status IN (W, G, S)), CHECK (zahlungsart IN (R, B, N,V,K)), PRIMARY KEY (kundennr) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

98 98 DDL CREATE TABLE Mögliche Konsistenzbedingungen: Primärschlüssel weitere Schlüssel (Schlüsselkandidaten) Fremdschlüssel mit Bezugstabelle Einschränkungen für die Wertebereiche der Spalten Verbot von Nullmarken in Spalten Spaltenübergreifende Integritätsbedingungen tabellenübergreifende Integritätsbedingungen Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

99 SELECT

100 100 SELECT Der Queryblock hat in seiner Grundform die Gestalt: SELECT [DISTINCT] A 1,..., A k FROM R 1,..., R l WHERE Erläuterungen: Die A i sind Attribute der Relationen R 1,..., R l. Bei Mehrdeutigkeit kann die ausführliche Form R j.A i gewählt werden. WHERE ist eine Formel über den Relationen R j. Die üblichen logischen Konnektoren und arithmetischen Vergleichsoperatoren sind erlaubt. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

101 101 SELECT Beispiel: Ermittle die Namen aller Kunden mit negativem Saldo. SELECT KundenName FROM KUNDEN WHERE Saldo < 0; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

102 102 SELECT Beispiel: Ermittle alle Kundendaten aller Kunden mit negativem Kontostand. SELECT * FROM KUNDEN WHERE Saldo < 0; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

103 SELECT Beispiel

104 104 DDL CREATE CREATE TABLE Ladeninfo (LadennameCHAR(50), VerkaufINTEGER, DatumDATE); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

105 105 Beispieltabelle Ladeninfo

106 106 SELECT Allgemein: SELECT column_name FROM table_name; Beispiel: SELECT Ladenname FROM Ladeninfo ; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

107 107 SELECT Resultat: Ladenname Lörrach Konstanz Lörrach Freiburg Es können mehrere Spaltennamen und mehrere Tabellennamen angegeben werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Doppelwerte

108 108 SELECT - DISTINCT Allgemein: SELECT DISTINCT column_name FROM table_name ; Beispiel: SELECT DISTINCT Ladenname FROM Ladeninfo ; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

109 109 SELECT - DISTINCT Resultat: Ladenname Lörrach Konstanz Freiburg Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Keine doppelten Werte mehr!

110 110 SELECT (WHERE-Klausel) Allgemein: SELECT column_name FROM table_name WHERE condition ; Beispiel: SELECT Ladenname FROM Ladeninfo WHERE Verkauf > 1000 ; selektiert alle Läden mit mehr als DM Verkauf an einem Tag. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

111 111 SELECT Resultat: Ladenname Lörrach Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

112 112 SELECT (WHERE - Klausel) AND-Operator / OR-Operator / NOT-Operator SELECT Ladenname, Verkauf, Datum FROM Ladeninfo WHERE Verkauf > 1000 AND Datum != Jan ; SELECT * FROM Ladeninfo WHERE Verkauf > 1000 OR Datum = Jan ; SELECT Ladenname, Verkauf FROM Ladeninfo WHERE NOT Verkauf > 1000; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

113 113 SELECT (WHERE - Klausel) Kombination von Operatoren SELECT Ladenname FROM Ladeninfo WHERE Verkauf > 1000 AND (Datum != Jan OR DATUM != Jan ) ; SELECT Ladenname FROM Ladeninfo WHERE Verkauf > 1000 OR Datum != Jan AND Datum != Jan ; SELECT Ladenname FROM Ladeninfo WHERE NOT Verkauf > 1000 AND Verkauf > 400 ; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

114 114 SELECT- Funktionen Allgemein: SELECT function type(column_name) FROM table_name; Beispiel: SELECT SUM(Verkauf) FROM Ladeninfo; Das Kommando liefert die Summe aller Verkaufswerte (Einträge in der Spalte Verkauf) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

115 115 SELECT - Funktionen Resultat: SUM(Verkauf) ist die Summe aller Einträge in der Spalte Verkauf. SUM(Verkauf)= Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

116 116 SELECT - Funktionen Standard-Aggregatfunktionen SUM(Summe) COUNT(Anzahl Tupel) MIN(Minimum) MAX(Maximum) AVG(Mittelwert) Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

117 117 SELECT - COUNT Allgemein: SELECT COUNT(column_name) FROM table_name ; Beispiel: SELECT COUNT(Ladenname) FROM Ladeninfo ; Das Beispiel liefert die Anzahl der in der Tabelle eingetragenen Läden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

118 118 SELECT - COUNT Resultat: Count(Ladenname) 4 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

119 119 SELECT - COUNT COUNT und DISTINCT können auch zusammen in einer Anfrage verwendet werden, um die Anzahl der unterschiedlichen Einträge in der Tabelle zu ermitteln.Z.B.: SELECT COUNT(DISTINCT Ladenname) FROM Ladeninfo ermittelt die Anzahl der verschiedenen Ladeneinträge in der Tabelle Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

120 120 SELECT - COUNT Resultat: Count(DISTINCT Ladenname) 3 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

121 121 SELECT - AVG Allgemein: SELECT AVG (column_name) FROM table_name ; Beispiel: SELECT AVG (Verkauf) FROM Ladeninfo ; Das Beispiel liefert den Mittelwert der in der Tabelle eingetragenen Verkaufswerte. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

122 122 SELECT - MIN Allgemein: SELECT MIN (column_name) FROM table_name ; Beispiel: SELECT MIN (Verkauf) FROM Ladeninfo ; Das Beispiel liefert den kleinsten Wert der in der Tabelle eingetragenen Verkaufswerte. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

123 123 SELECT - MAX Allgemein: SELECT MAX (column_name) FROM table_name ; Beispiel: SELECT MAX (Verkauf) FROM Ladeninfo ; Das Beispiel liefert den grössten Wert der in der Tabelle eingetragenen Verkaufswerte. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

124 INSERT INTO

125 125 INSERT INTO Es gibt zwei Möglichkeiten, Daten in eine Tabelle einzufügen: Jede Zeile für sich allein mehrere Zeilen gleichzeitig Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

126 126 INSERT INTO Allgemein: INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...) ; Beispiel: INSERT INTO Ladeninfo (Ladenname, Verkauf, Datum) VALUES ('Lörrach', 900, 'Jan ') ; fügt eine zusätzliche Zeile in die Tabelle Ladeninfo mit den Verkaufsinformationen für Lörrach am 10.Januar 2001 ein. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

127 127 INSERT INTO Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Ladeninfo Tabelle nach der Insert-Operation

128 128 INSERT INTO Allgemein: INSERT INTO Tabellen_Name (Spalte1, Spalte2,...) SELECT Spalte1, Spalte2,... FROM Tabelle1 ; Diese Form des Kommandos ermöglicht es gleichzeitig mehrere Zeilen in eine Tabelle einzufügen. Mit dem SELECT-Kommando spezifizieren wir die Daten, die wir in die Tabelle einfügen wollen. Dazu verwenden wir Informationen aus einer anderen Tabelle. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

129 129 INSERT INTO INSERT INTO Ladeninfo (Ladenname, Verkauf, Datum) SELECT Ladenname, Verkauf, Datum FROM Verkauf_Information WHERE Year(Datum) = 1998; Wenn Sie z.B. gerne eine Tabelle hätten, die die Verkaufsinformationen für das Jahr 1998 enthält, und wenn es bereits eine Verkaufstabelle gibt, die die Werte von 1995 bis 2000 enthält und wenn beide Tabellen die gleiche Struktur haben, liefert das Kommando das gewünschte Ergebnis. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

130 UPDATE

131 131 UPDATE Allgemein: UPDATE table_name SET column_1 = [new value] WHERE {condition} ; Beispiel: UPDATE Ladeninfo SET Verkauf = 500 WHERE Ladenname = "Lörrach" AND Datum = "Jan ; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

132 132 UPDATE Ladeninfo Beispieltabelle vor dem UPDATE: Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

133 133 UPDATE Das Kommando ändert die Verkaufswerte für den Laden Lörrach am 01/08/2001 auf DM anstatt wie bisher DM. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

134 134 UPDATE Ladeninfo Ergebnistabelle nach dem UPDATE: Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

135 135 UPDATE In diesem Fall gibt es nur eine Zeile in der betrachteten Tabelle, die der Bedingung (WHERE-Klausel) genügt. Würden mehrere Zeilen der Bedingung genügen, würden sie alle entsprechend geändert. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

136 136 UPDATE Es ist auch möglich mehrere Spalten gleichzeitig zu ändern. Die Syntax dafür lautet: UPDATE table_name SET column_1 = new value 1, column_2 = new value 2) WHERE {condition} ; Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

137 DELETE FROM

138 138 DELETE FROM Allgemein: DELETE FROM table_name WHERE {condition} ; Beispiel: DELETE FROM Ladeninfo WHERE Ladenname = "Lörrach; löscht alle Datensätze (Zeilen) aus der Tabelle Ladeninfoderen Ladenname identisch ist mit Lörrach. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

139 139 DELETE FROM Ladeninfo Die Ergebnistabelle sieht dann folgendermassen aus: Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002


Herunterladen ppt "1 Themen heute Rückblick Erweiterung funktionale Beziehungen Relationenmodell Integritätsregeln Übersetzung ERM in Tabellenmodell Übung Grundlegende SQL-Kommandos."

Ähnliche Präsentationen


Google-Anzeigen