er-datenmodell und abfragen in sql prof. dr. martin thost
TRANSCRIPT
![Page 1: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/1.jpg)
ER-Datenmodell und Abfragen in SQL
Prof. Dr. Martin Thost
![Page 2: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/2.jpg)
Hinweis zum Ausdrucken
• Falls Sie diese Folien ausdrucken möchten, wird dringend empfohlen, Handzettel mit 6 Folien je Druckseite anstatt für jede Folie eine eigene DIN- A4-Seite auszudrucken. Dies erreichen Sie, indem Sie im Menü Datei/Drucken ... in das untere Listenfeld "Drucken:", wo steht "Folien" die Zeile "Handzettel (6 Folien je Seite)" auswählen.
![Page 3: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/3.jpg)
Das Entity-Relationship-Modell
• Entität und Entitätstyp (auch Objekt und Objekttyp)
• Attribut / Attributwerte
• Beziehung (Relationship)
• Kardinalität einer Beziehung
![Page 4: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/4.jpg)
Kardinalität der Beziehungen
• 1:1
• 1:N
• M:N
![Page 5: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/5.jpg)
Krähenfußnotation
• 1 ist senkrechter Strich
• N ist „Krähenfuß“
![Page 6: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/6.jpg)
Auflösung einer M:N-Beziehung in zwei 1:N-Beziehungen
• Eine M:N-Beziehung kann in einer relationalen Datenbank nicht direkt realisiert werden.
• Durch die Zwischenschaltung einer zusätzlichen Tabelle wird sie aufgelöst in zwei 1:N-Beziehungen.
• (Tabelle) Studentin besucht (Tabelle) Vorlesung wird ergänzt durch (Tabelle) Vorlesungsbesuch
![Page 7: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/7.jpg)
Beziehungen
• Optional oder obligatorisch
• Parallele Beziehungen (z. B. Person – Versicherungspolice)
• Reflexive Beziehungen (z. B. zur Darstellung der Mitarbeiterhierarchie)
![Page 8: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/8.jpg)
Optionale Beziehungen
Kunde Bestellung
Kunden ohne Bestellung sind möglich. Beziehung ist optional. Beziehungen ohne „Null“ gelten dann als obligatorisch!
![Page 9: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/9.jpg)
Obligatorische Beziehungen
Rechnung Rechnungsposition
Eine Rechnung ohne Rechnungsposition soll nicht vorkommen dürfen. (Vgl. „Komposition“ in der UML)
![Page 10: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/10.jpg)
Reflexive Beziehungen
Mitarbeiter
Ist verheiratet mit
Ist Vorgesetzter von
![Page 11: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/11.jpg)
Parallele Beziehungen
Person VersicherungspoliceIst Versicherungsnehmer
Ist Versicherte Person
![Page 12: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/12.jpg)
SQL-Abfragesprache
• Structured Query Language
• Auswahl mit SELECT
• Funktionen COUNT, AVG, MIN,MAX, SUM
• Zusammenfassung mit GROUP BY
• Sortierung mit ORDER BY
![Page 13: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/13.jpg)
SQL-Datenmanipulation
• Einfügen mit INSERT
• Verändern mit UPDATE
• Löschen mit DELETE
![Page 14: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/14.jpg)
SQL-Datendefinition
• Erstellen von Tabellen mit CREATE TABLE
![Page 15: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/15.jpg)
Lernprogramm zu SQL
• Im Ordner SQL-Lernprogramm können Sie sich mit dem gesamten Umfang dieser Sprache vertraut machen.
![Page 16: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/16.jpg)
Datenmodell: Mitarbeiter - Kunde
![Page 17: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/17.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT mitarbeiter.name, telefon
FROM mitarbeiter, beratung, kunde
WHERE kunde.name="Max"
and kunde.kundennummer = beratung.kundennummer
and mitarbeiter.personalnummer = beratung.personalnummer ;
![Page 18: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/18.jpg)
SELECT kundennummer,datum, stundenanzahl from mitarbeiter, beratung where name = "Müller"
and mitarbeiter.personalnummer = beratung.personalnummer
![Page 19: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/19.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT Kunde.Name, Sum(Beratung.Stundenanzahl) AS [Summe von Stundenanzahl]
FROM Beratung, Kunde
WHERE Beratung.Kundennummer = Kunde.Kundennummer
GROUP BY Kunde.Name ;
![Page 20: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/20.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT DISTINCT mitarbeiter.name, kunde.name
FROM mitarbeiter, beratung, kunde
WHERE kunde.kundennummer =
beratung.kundennummer and
mitarbeiter.personalnummer = beratung.personalnummer;
![Page 21: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/21.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT personalnummer, sum(stundenanzahl)
FROM beratung
GROUP BY personalnummer;
![Page 22: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/22.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT Mitarbeiter.Name, Mitarbeiter.Telefon
FROM Mitarbeiter
WHERE Mitarbeiter.Name=[Geben Sie bitte den Namen des Mitarbeiters ein!];
![Page 23: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/23.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT Name, Stundensatz
FROM Mitarbeiter
WHERE Stundensatz = (SELECT MAX(Stundensatz) FROM Mitarbeiter)
![Page 24: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/24.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT kunde.Name, Sum(stundenanzahl * stundensatz) AS Rechnung_pro_Kunde
FROM beratung, kunde, mitarbeiter
WHERE (((beratung.Kundennummer) = [kunde].[kundennummer]) AND (([beratung].[personalnummer]) = [mitarbeiter].[personalnummer]))
GROUP BY kunde.Name
ORDER BY kunde.name;
![Page 25: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/25.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT Kunde.Kundennummer, Sum(Stundensatz*Stundenanzahl) AS Kosten
FROM Kunde, Beratung, Mitarbeiter
WHERE (((Kunde.Kundennummer)=[Beratung].[Kundennummer]) AND ((Beratung.Personalnummer)=[Mitarbeiter].[Personalnummer]))
GROUP BY Kunde.Kundennummer;
![Page 26: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/26.jpg)
Anfrage: Mitarbeiter - Kunde
SELECT DISTINCT mitarbeiter.name, sum(stundenanzahl*stundensatz) AS [Summe der Beratungskosten]
FROM beratung, mitarbeiter
WHERE mitarbeiter.personalnummer = beratung.personalnummer
GROUP BY mitarbeiter.name
ORDER BY mitarbeiter.name;
![Page 27: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/27.jpg)
Anfrage: Mitarbeiter - KundeSELECT Mitarbeiter.Name, Kunde.Name
FROM Kunde INNER JOIN (Mitarbeiter INNER JOIN Beratung ON (Mitarbeiter.Personalnummer = Beratung.Personalnummer) AND (Mitarbeiter.Personalnummer = Beratung.Personalnummer) AND (Mitarbeiter.Personalnummer = Beratung.Personalnummer)) ON Kunde.Kundennummer = Beratung.Kundennummer;
![Page 28: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/28.jpg)
Datenmodell: Projektverwaltung
![Page 29: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/29.jpg)
Anfrage: Projektverwaltung
SELECT Name
FROM Mitarbeiter, Abteilung
WHERE bezeichnung="Kredite"
and abteilung.abteilungsnummer = mitarbeiter.abteilung;
![Page 30: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/30.jpg)
Anfrage: ProjektverwaltungSELECT DISTINCT Abteilungsnummer,
Projekt.Bezeichnung
FROM Projekt, Abteilung, Mitarbeiter, Projektmitarbeit
WHERE (((Abteilung.Abteilungsnummer) =[mitarbeiter].[abteilung]) AND ((mitarbeiter.Mitarbeiternummer) =[projektmitarbeit].[mitarbeiternummer]) AND ((projektmitarbeit.Projektnummer) = [projekt].[projektnummer]));
![Page 31: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/31.jpg)
Anfrage: ProjektverwaltungSELECT Mitarbeiter.Name,
Mitarbeiter.Mitarbeiternummer
FROM Mitarbeiter, Projekt, Projektmitarbeit
WHERE (((Mitarbeiter.Mitarbeiternummer)=[Projektmitarbeit].[Mitarbeiternummer]) AND ((Projektmitarbeit.Projektnummer)=[Projekt].[Projektnummer]) AND ((Projekt.Projektleiter)=(Select Mitarbeiternummer from Mitarbeiter where name = "Müller")));
![Page 32: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/32.jpg)
Anfrage: ProjektverwaltungSELECT DISTINCT abteilung.bezeichnung,
projekt.bezeichnung
FROM abteilung, mitarbeiter, projektmitarbeit, projekt
WHERE (((Abteilung.Abteilungsnummer) =[mitarbeiter].[abteilung]) AND ((mitarbeiter.Mitarbeiternummer)=[projektmitarbeit].[mitarbeiternummer]) AND ((projektmitarbeit.Projektnummer)=[projekt].[projektnummer]));
![Page 33: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/33.jpg)
Gruppenbildung: Group byselect abteilungsnummer, sum(gehalt)
from mitarbeiter
group by abteilungsnummer
![Page 34: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/34.jpg)
Anfrage: ProjektverwaltungSELECT projekt.Bezeichnung,
Sum(Stundenanzahl*stundensatz) AS Projektkosten FROM Abteilung, mitarbeiter, projektmitarbeit, projekt
WHERE (((Abteilung.Abteilungsnummer) =[mitarbeiter].[abteilungsnummer]) AND ((mitarbeiter.Mitarbeiternummer)=[projektmitarbeit].[mitarbeiternummer]) AND ((projektmitarbeit.Projektnummer) =[projekt].[projektnummer]))
GROUP BY projekt.Bezeichnung;
![Page 35: ER-Datenmodell und Abfragen in SQL Prof. Dr. Martin Thost](https://reader036.vdocuments.pub/reader036/viewer/2022062307/55204d6149795902118b5d53/html5/thumbnails/35.jpg)
Anfrage: ProjektverwaltungSELECT Mitarbeiter.Name, Projekt.Bezeichnung,
Sum(Projektmitarbeit.Stundenanzahl) AS [Summe von Stundenanzahl]
FROM Mitarbeiter, Projekt, Projektmitarbeit
WHERE (((Mitarbeiter.Mitarbeiternummer) =[Projektmitarbeit].[Mitarbeiternummer]) AND ((Projektmitarbeit.Projektnummer) =[Projekt].[Projektnummer]))
GROUP BY Mitarbeiter.Name, Projekt.Bezeichnung;