Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Brauchen Datenbanken eine Struktur?

Ähnliche Präsentationen


Präsentation zum Thema: "Brauchen Datenbanken eine Struktur?"—  Präsentation transkript:

1 Brauchen Datenbanken eine Struktur?
Wichtige Daten, die vor 20 Jahren noch auf Papier standen, wurden 10 Jahre später in Excel-Tabellen gespeichert. Und weil sich da ganz schön viel ansammelte, wurden daraus einige Jahre später Datenbanken. Aber was macht eine Sammlung von Tabellen zu einer Datenbank? Die Verknüpfungen zwischen diesen Tabellen! Es ist heute nicht mehr schwer, an ein wirklich leistungsfähiges Datenbanksystem zu kommen. Aber bevor dies sinnvoll eingesetzt werden kann sollte man jedoch zunächst mal einiges an Zeit und Mühe in die Planung und das Datenbank-Design investieren. Sicher, man kann auch einfach mal so loslegen und sich dann irgendwie "durchwursteln". Dass man damit Zeit und Energie spart ist allerdings ein weit verbreiteter Irrtum. Warum Datenbanken ordentlich geplant sein wollen, möchte ich im Folgenden an einem Beispiel zeigen. Lektorat Dirk Nielsen

2 Betrachten wir zur Illustration also die Datenhaltung eines Online-Buchhändlers. Nehmen wir auch schon mal an, dass dieser Buchhändler nicht mehr so naiv ist, alles in eine einzige Tabelle schreiben zu wollen. Schließlich hat er sich einige Gedanken gemacht und präsentiert stolz drei Tabellen mit folgender Struktur. Lektorat Dirk Nielsen

3 Lektorat Dirk Nielsen

4 Ist dieser Ansatz überzeugend
Ist dieser Ansatz überzeugend? Höchstens auf den ersten Blick, auf Dauer kann das nicht funktionieren. Um nur auf einige Probleme hinzuweisen: Bei jeder Bestellung eines bestimmten Kunden müssen alle seine Kundendaten (Name, Ort, ...) erneut gespeichert werden! Bei jeder Bestellung muss man in der gesamten Tabelle Bestellung nachsehen, ob der Kunde bereits erfasst ist und welche "KdNr" er hat. Wer kontrolliert, ob die "ISBN" der Tabelle Bestellung auch in Buch enthalten ist? Kann es zu einer "BestNr" nur eine "ISBN" geben? Sicherlich möchten wir dem Kunden ermöglichen, gleichzeitig zwei verschiedene Bücher zu bestellen, dafür soll er jedoch nur eine Rechnung erhalten. Was ist dann aber das identifizierende Merkmal (der "Primärschlüssel") in der Tabelle Bestellung? Lektorat Dirk Nielsen

5 Angenommen, ein Verlag ändert seinen Namen und der Eintrag in Tabelle Bestellung wird aktualisiert. Wenn dies in der Büchertabelle nicht ebenso angepasst wird, können einzelne Bücher nicht mehr zugeordnet werden! Kundendaten können erst dann gespeichert werden wenn auch eine Bestellung vorliegt. Schickt ein Kunde nach seiner ersten Bestellung das Buch zurück und wird deshalb der Datensatz dieser Bestellung gelöscht, sind damit auch die Kundendaten verloren. Bei einem Tippfehler im Kundennamen erscheinen zwei scheinbar unterschiedliche Kunden mit derselben Kundennummer. Muss der Rechnungsbetrag wirklich gespeichert werden? Schließlich kann man ihn aus den übrigen Daten berechnen. Und was ist, wenn sich die Buchpreise ändern? Will ich wirklich zu einer konkreten PLZ jedesmal den Ortsnamen neu speichern? Dies betrifft sowohl die Daten der Verlage als auch der Kunden. Lektorat Dirk Nielsen

6 Diese Auflistung ließe sich leicht noch erweitern
Diese Auflistung ließe sich leicht noch erweitern. Wenn man solche Mängel erst beheben will wenn die Datenbank bereits implementiert ist, hat man nicht nur viel Ärger. Man investiert in eine solche Reparatur wesentlich mehr Zeit als in eine solide Planungsphase! Lektorat Dirk Nielsen

7 Planungsphase: Lektorat Dirk Nielsen

8 Logisches Lösungsmodell:
Lektorat Dirk Nielsen

9 FAZIT Lektorat Dirk Nielsen

10 DAS "IEV" MODELL Lektorat Dirk Nielsen Sütő Gergely

11 Dies sind jeweils Individuen
MITARBEITER Managerin Sylvia Blume Wächter 9.600 € Hans Müller 2.500 € Sekretärin Direktor Anita Bach Volker Klein 3.800 € Dies sind jeweils Individuen Lektorat Dirk Nielsen

12 INDIVIDUEN EIGENSCHAFT VERBINDUNG
Objekte des Wirtschaftssystems, die mit Daten beschrieben werden. Alle Faktoren des Wirtschaftssystems (Sachen, Menschen, Ereignisse, Erscheinungen) Objekt EIGENSCHAFT Die Daten, mit denen die Individuen beschrieben werden VERBINDUNG Verbindungen zwischen den Daten Lektorat Dirk Nielsen

13 INDIVIDUUM Individuumtyp MITARBEITER Vorkommen des Individuums
Managerin Sylvia Blume Wächter 9.600 € Hans Müller Individuumtyp 2.500 € Sekretärin Direktor Vorkommen des Individuums Anita Bach Volker Klein 3.800 € MITARBEITER Lektorat Dirk Nielsen

14 EIGENSCHAFT Lektorat Dirk Nielsen Vorkommen einer Eigenschaft (Wert)
Eigenschafts typ Managerin NAME DES MITARBEITERS Wächter Sylvia Blume Hans Müller 9.600 € Volker Klein 2.500 € Anita Bach Sekretärin Direktor 3.800 € EIGENSCHAFT Lektorat Dirk Nielsen

15 Vorkommen der Verbindung
ORGANISATION Betrieb X Zentrale Hamburg 32 22 Kiel Vorkommen der Verbindung Verbindungstyp MITARBEITER 22 32 22 22 22 Lektorat Dirk Nielsen

16 im Computer gespeichert sind miteinander in Verbindung stehen
DATENBANK System der Daten, die im Computer gespeichert sind miteinander in Verbindung stehen enthält auch die Datenstrukturbeschreibung und die Datenverwaltungsprozeduren Lektorat Dirk Nielsen

17 Beispiel - Relation MITARBEITER <Identifizierungsnummer, Name, Vorname, Personalausweisnummer, Geschlecht, Sozialversicherungsnummer, Führerscheinnummer, ggf. Geburtsname, Gehalt, Adresse, Betriebscode, Betriebsname, Kinder, Kindername(n), Sprachcode, Sprache(n), Sprachprüfungsdatum, etc.> Lektorat Dirk Nielsen Sütő Gergely

18 Innere Rolle der Eigenschaften
Identifizierungsfeld: in seiner Spalte kommt jeder Wert nur einmal vor Beschreibungsfeld: in seiner Spalte kann ein Wert mehrmals vorkommen Sütő Gergely

19 Wie soll ein guter Identifizierer sein?
Kriterien: stark charakteristisch stabil feste Länge möglichst kurz benutzt möglichst wenig Zeichen Lektorat Dirk Nielsen Sütő Gergely

20 Identifizierer-Alternativen
Innerer Identifizierer: nur innerhalb des Systems bekannt Aussenidentifizierer: ausserhalb des Systems wird bestimmt Primärschlüssel Lektorat Dirk Nielsen Sütő Gergely

21 Funktionale Abhängigkeit
da bestimmt eindeutig df d.h. df  da da df ? Paul Klein Lektorat Dirk Nielsen Sütő Gergely

22 Gegenseitige Abhängigkeit
da bestimmt eindeutig dj und umgekehrt auch, d.h. da dj da dj Lektorat Dirk Nielsen Sütő Gergely

23 Funktionale Unabhängigkeit
da bestimmt dn nicht und dn bestimmt da nicht, d.h. dn da da dn EN Lektorat Dirk Nielsen Sütő Gergely

24 Einzeln, darf nicht gleich sein!
Umgekehrte Abhängigkeit dr bestimmt da, umgekehrt aber nicht, d.h. dr  da da dr Einzeln, darf nicht gleich sein! Lektorat Dirk Nielsen Sütő Gergely

25 Unbestimmte Relation Normalisieren
Aus Werten einiger Felder müssen mehrere zu einer Zeile zugeordnet werden, deswegen lässt sich die Relation nicht auf eine zweidimensionale Tabelle abbilden. Was ist das Problem? Normalisieren Lektorat Dirk Nielsen Sütő Gergely

26 Verbindungsgrad Mögliche Werte: ein zu eins (1:1) ein zu mehr (1:n)
Die Verbindung zwischen den Relationen bedeutet die Zuordnung der Zeilen zu den einzelnen Relationen. Der Verbindungsgrad zeigt an, wie viele Zeilen einer Relation zu einer beliebigen Zeile einer anderen Relation verbunden sein können oder sind. Mögliche Werte: ein zu eins (1:1) ein zu mehr (1:n) mehr zu mehr (m:n) Lektorat Dirk Nielsen Sütő Gergely

27 1:1 Verbindung Lektorat Dirk Nielsen Sütő Gergely

28 1:n Verbindung Lektorat Dirk Nielsen Sütő Gergely

29 m:n Verbindung Lektorat Dirk Nielsen Sütő Gergely

30 Datenstruktur Organisation Führers. FNr Mitarbeiter Betr.code
IdNr Betr.code Betr.name Mitarbeiter Sprache IdNr PANr Name Betr.code Sc Sprache Kinder Sprachkenntnis Kind_SVNr IdNr Kindname Sprachcode IdNr Sprachprüfung Lektorat Dirk Nielsen Sütő Gergely

31 Begriffsentsprechungen
reelles System IEV Modell relationelles Modell Datenbank Individuum- Typ Relation Tabelle Individuum- Vorkommen Tupel Rekord (Zeile) Name Eigenschaft- Typ Feld Feld Paul Klein Eigenschaft- Vorkommen Element (Feld)Wert Verbindungs- Typ Verbindung Verbindungs- Beschreibung Verbindungs- Vorkommen Menge der Zeilen Verbundene Rekords Lektorat Dirk Nielsen Sütő Gergely

32 Konstruktion der SGM Lektorat Dirk Nielsen Sütő Gergely

33 Bezeichnungen der SGM  Identifizierer  Teilidentifizierer
 Funktionale Abhängigkeit  Gegenseitige Abhängigkeit  Standardwert  Kriterium  Schwach charakteristische Eigenschaft  Untermatrix Berufung  Mnemonic Lektorat Dirk Nielsen Sütő Gergely

34 Charakteristik der SGM
Reihe: Individuum Spalte: Eigenschaft Zelle: Zusammenhang In eine Spalte kommt immer nur ein Identifizierer. Identifizierer kann sein: einfach: ein Stern  zusammengesetzt: zwei oder mehr Kreise  In einer Spalte darf gleichzeitig kein Identifizierer (Stern) und Teilidentifizierer (Kreis) stehen! Lektorat Dirk Nielsen Sütő Gergely

35 BEDINGTE ABHÄNGIGKEIT STARKE LOGISCHE REDUNDANZ
Lösung BEDINGTE ABHÄNGIGKEIT Bezeichnungen: Identifizierer  Teilidentifizierer  Funktionale Abhängigk.  Gegenseitige Abhängigk.  Kriterium  Schwach charakteristisch STARKE LOGISCHE REDUNDANZ Lektorat Dirk Nielsen Sütő Gergely

36 Elementare Daten Kleinste Daten mit selbständiger Bedeutung und selbständigen Namen, die nicht weiter zerlegt werden können, sind der Datensatz oder Datenfeld Elementare Daten sind nach ihrem Typ: (ganze und reelle) Zahlen Charakter Logische Werte Zeiger Aufgezählte Werte Lektorat Dirk Nielsen

37 Elementare Datentypen
Ganze Zahlen: die Menge der ganzen Zahlen Reelle Zahlen: rationelle Zahlen in Binärzahlensystem Logische Werte: Wahr oder Falsch Charakter: Werte aus der ASCII -Zeichencodetabelle Lektorat Dirk Nielsen

38 Elementare Datentypen
Zeiger: (pointer) Datentyp, der nicht Daten beinhaltet, sondern ihre Adresse im (Haupt-) Speicher Aufgezählter Typ: Datentyp, der durch Aufzählung seiner mögliche Werte angegeben wird. Die möglichen Werte (Konstanten) sind beliebige Datentypen. Lektorat Dirk Nielsen

39 Elementare Datenstrukturen
Sequenz / Feld / Block: (array) Folge von Daten, deren Anzahl bestimmt ist und jedes Element durch einen Index (Nummer) erreichbar ist Tupel: (record) Sammlung von verschiedenen Daten(typen), die irgendwie zusammenhängen Datei: (file) Datenbestand, geordnete Menge irgendwie zusammenhängender Informationen Lektorat Dirk Nielsen

40 Abstrakte Datenstrukturen
Ihr Ziel ist die Abbildung reeller Datenstrukturen auf eine logische Struktur, die unter gegebenen Umständen und gegebenen Mitteln physisch zu verwirklichen ist In der Praxis unterschieden sich die logischen und die physischen Datenstrukturen voneinander Der physische Datenbestand ist die Menge der gespeicherten Daten, die eigene Namen hat Lektorat Dirk Nielsen

41 Abstrakte Datenstrukturen
Verlauf der Abbildung: logischer Datensatz  physische Datenfeld logischer Tupel  physischer Tupel in der logischen Datenstruktur gespeicherte Daten  physische Datenbestand Strukturierung physischer Bestände: seriell direkt zufällig indiziert sequenziell Lektorat Dirk Nielsen

42 Abstrakte Datenstrukturen
Block: Folge von Daten, deren Anzahl bestimmt ist und jedes Element durch einen Index (Nummer) erreichbar ist Charakterkette: unbestimmte (veränderbare) Anzahl von Charakteren Stapel: (stack) Datenstruktur, wo eine Operation nur mit dem letzten Element durchgeführt werden kann und ein neues Element nur nach dem letzten Element eingefügt werden kann (LIFO) Lektorat Dirk Nielsen

43 Stapel Elemente können reingetan und rausgenommen werden
Nur das letzte Element ist erreichbar Leerheit ist abfragbar Unterteil Oberteil Lektorat Dirk Nielsen

44 Abstrakte Datenstrukturen
Schlange: (queue) Reihenfolge von Daten, bei der an einem Ende Daten angefügt und am anderen Ende weggenommen werden können (FIFO) Liste: Datenstruktur, die sagt, welches Element - logisch gesehen - dem anderen folgt. Tupel: zusammengesetzte Datenstruktur, die aus Feldern besteht, die eigenen Namen haben und durch diesen Namen erreichbar sind Lektorat Dirk Nielsen

45 Schlange Elemente können reingetan und rausgenommen werden
Nur das erste Element ist erreichbar Leerheit ist abfragbar Ende Anfang Lektorat Dirk Nielsen

46 Liste Elemente können reingetan und rausgenommen werden
Über die Zeigerkette ist jedes beliebiges Element erreichbar Leerheit ist abfragbar Lektorat Dirk Nielsen

47 Tupel (record) Innerhalb eines Tupels ist jedes Feld erreichbar – sonst kann nur der Tupel erreicht werden Die elementaren Datentypen der Felder und ihre Eingangsformate sind veränderbar Abfrage der Leerheit ist sinnlos Grösse ist nur indirekt veränderbar, falls die Grösse der Felder geändert wird Lektorat Dirk Nielsen

48 Tupel Lektorat Dirk Nielsen

49 Datei Nach dem Öffnen ist in ihr jedes beliebige Element erreichbar – physisch ist sie aber nur als cluster lesbar In der Datei gespeicherte Menge kann aus Kombination von beliebigen elementaren Datentypen bestehen Die Abfrage der Leerheit ist sinnlos Die Grösse ist von den gespeicherten Daten abhängig Lektorat Dirk Nielsen

50 Sequentielle Datei Besteht aus gleichen Datentypen
Nimmt auf dem Hintergrundspeicher Platz Maximale Grösse ist vom freien Speicherplatz abhängig Ihre Elemente sind nur nach der Aufschreib-Reihenfolge erreichbar Lektorat Dirk Nielsen

51 Indizierte Datei Besteht aus gleichen Datentypen
Nimmt auf dem Hintergrundspeicher Platz Maximale Grösse ist vom freien Speicherplatz abhängig Ihre Elemente sind beliebig erreichbar Lektorat Dirk Nielsen

52 Tupel-Datei Besteht aus verschiedenen Datentypen
Name und Typ der Elemente (Felder) müssen angegeben werden Die Tupel-Elemente sind auch einzeln erreichbar Ein Tupel ist eine Einheit, aus der Block, Stapel, Schlange oder Liste gebaut werden können Lektorat Dirk Nielsen

53 Datei Wie kann eine Datei erstellt werden?
Mit dem entsprechenden Programm Durch den entsprechenden Algorithmus Lektorat Dirk Nielsen

54 Zusammengesetzte Datenstrukturen
Aus abstrakten Datenstrukturen vom gleichen Typ können zusammengesetzte Datenbestände aufgebaut werden: hierarchische Strukturen (Bäume) relationelle Strukturen (Tabellen) Netzstrukturen (Graphen, Netzwerke) Lektorat Dirk Nielsen

55 Operationen für zusammen-gesetzten Datenstrukturen
Benutzen eines Elements: erstes, letztes, nächstes, beliebiges Einfügen eines neuen Elements: am Anfang, am Ende, an einer beliebigen Stelle Entfernen eines Elements: erstes, letztes, beliebiges Prüfung der Existenz (leer oder doppelt?) Lektorat Dirk Nielsen

56 Verkettete Stapel, Schlange, Liste
Für im Block gespeicherten Daten müssen festgelegte Speicherplätze reserviert werden, die entweder zu klein oder zu groß sein können In der verketteten Datenstruktur werden die Daten einzeln gespeichert und dadurch wird nur genau soviel Speicherplatz benutzt, wie nötig ist Lektorat Dirk Nielsen

57 SQL Structured Query Language
Die relationelle Datenbankverwaltungssprache Lektorat Dirk Nielsen Sütő Gergely

58 Die Charakteristik der SQL
Normalisiert, transportierbar (zwischen Systemen und Computern) Selbstständige Sprache, aber sie kann in andere Programmiersprachen eingefügt werden Lektorat Dirk Nielsen

59 Allgemeine Datentypen
SMALLINT kurze ganze Zahl (2 byte) < x < INTEGER ganze Zahl (4 byte) < x < DECIMAL(e,t) festpünktliche Zahl FLOAT schwebepünktliche Zahl CHAR(n) Charakterkette (Text) n 255 byte DATE Datum LOGICAL Logik (ja/nein) MONEY Währung SERIAL AutoWert VARCHAR(n) langer Text n>255 Lektorat Dirk Nielsen

60 Datenbankstrukturbehandlung I.
Datenbank erstellen: CREATE DATABASE Datenbankname; Datenbank öffnen: {START} DATABASE Datenbankname; Datenbank schliessen: CLOSE DATABASE; Datenbank löschen: DROP DATABASE Datenbankname; Lektorat Dirk Nielsen

61 Datenbankstrukturbehandlung II. (Tabellen)
Neue Tabelle erstellen: CREATE TABLE Tabellenname (Spalte1{, Spalte2, …}); Neue Spalte einfügen: ALTER TABLE Tabellenname ADD (Spalte1{, Spalte2, …}); Tabelle löschen: DROP TABLE Tabellenname; Lektorat Dirk Nielsen Spaltei  SpaltennameiDatentypi{NOT NULL}

62 Dateninstandhaltung (Diese Operationen beziehen sich auf die Reihen!)
Einfügen: INSERT INTO Tabellenname {(Spaltenliste)} VALUES(Konstant|NULL); Ändern: UPDATE Tabellenname SET Spaltenname=Ausdruck|NULL {WHERE Bedingung}; Löschen: DELETE FROM Tabellenname {WHERE Bedingung}; Lektorat Dirk Nielsen

63 Abfrage (die SELECT Anweisung)
Auswählen von in der Anweisung definierten Kriterien aus einer oder mehreren Tabellen Lektorat Dirk Nielsen

64 Abfrage Syntax SELECT {ALL|DISTINCTROW} *| Ausdruckliste
FROM Tabellenliste {WHERE Bedingung} {GROUP BY Spaltenliste} {HAVING Gruppen_Bedingung} {ORDER BY Schlüssel_Ausdruck}; Lektorat Dirk Nielsen

65 Abfrage weitere Komponente
Tabellen Verknüpfen (JOIN) Starke Verbindung: INNER JOIN…ON „Lockere” Verbindung LEFT|RIGHT JOIN Vereinigen (UNION) Lektorat Dirk Nielsen

66 Datenschutz Zugriffsrechte übergeben: GRANT Liste der Rechte {ON Tabellenname} TO PUBLIC|Benutzerliste {WITH GRANT OPTION}; Datenbankrechte: CONNECT RESOURCE DBA Zugriffsrechte aufheben: REVOKE Liste der Rechte {ON Tabellenname} TO PUBLIC|Benutzerliste; Lektorat Dirk Nielsen

67 Anfangen einer Transaktion: BEGIN WORK;
Gültigmachen einer Transaktion: COMMIT WORK; Ungültigmachen einer Transaktion: ROLLBACK WORK; Wiederherstellen einer Datenbank: ROLLFORWARD DATABASE; Lektorat Dirk Nielsen

68 BEISPIELAUFGABEN 0-3 SELECT * FROM WAREN;
1. Listen wir die Tabelle WAREN auf SELECT * FROM WAREN; 2. Listen wir Name, Code und Preis aus der Tabelle WAREN SELECT NAME, CODE, PREIS FROM WAREN; Ergänzen wir die letzte Aufgabe so, daß wir nur die Waren auslisten, die mehr als 100 € kosten SELECT NAME, CODE, PREIS FROM WAREN WHERE PREIS>100; Lektorat Dirk Nielsen 0-3

69 BEISPIELAUFGABEN 3. Setzen wir die letzte Aufgabe so fort, daß wir die Waren nach Namen geordnet auslisten SELECT NAME, CODE, PREIS FROM WAREN WHERE PREIS>100 ORDER BY NAME; 4. In der nächsten Aufgabe listen wir die Waren so auf, daß neben dem Code auch Bezeichnung, Geschäftscode, Steuerschlüssel und Preis der Ware erscheint. Dazu müssen wir die Tabellen WAREN und BESTAND verknüpfen! Lektorat Dirk Nielsen 0-3

70 ON WAREN.CODE = BESTAND.CODE
VERKNÜPFUNG IN SQL WAREN 1. WAREN Tabelle 2. verknüpft mit der Tabelle BESTAND BESTAND 3. in den Zeilen, wo die Codes in den beiden Tabellen über- einstimmen INNER JOIN BESTAND WAREN ON WAREN.CODE = BESTAND.CODE Lektorat Dirk Nielsen 9

71 BEISPIELAUFGABEN Die vollständige SQL Anweisung der 4. Aufgabe: SELECT WAREN.CODE,NAME,GCODE,MWST,PREIS FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE; Lektorat Dirk Nielsen 4-5

72 BEISPIELAUFGABEN 5. Ergänzen wir die letzte Aufgabe so, daß wir auch den Bestandswert berechnen und die Liste mit der Kopfzeile „Wert des Bestandes” versehen SELECT WAREN.CODE,NAME,GCODE,MWST, PREIS,BSTD, PREIS*BSTD AS [Wert des Bestandes] FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE; Den Text „Wert des Bestandes” müssen wir in [ ] schreiben, da er Leerzeichen enthält! Lektorat Dirk Nielsen 4-5

73 BEISPIELAUFGABEN 6. Ergänzen wir die letzte Aufgabe damit, daß wir anstelle des Geschäftscodes die Adresse des Geschäfts anzeigen! Zur Lösung der Aufgabe müssen wir zur letzten Stuktur die Tabelle GESCHÄFT verknüpfen so, daß die Tabelle BESTAND mehrmals vorkommt, d.h. wir bilden eine Netzstruktur in SQL. Lektorat Dirk Nielsen 9

74 NETZSTRUKTUR IN SQL GESCHÄFT WAREN BESTAND INNER JOIN BESTAND (WAREN
GESCHÄFT INNER JOIN ON WAREN.CODE = BESTAND.CODE) Lektorat Dirk Nielsen ON GESCHÄFT.GCODE = BESTAND.GCODE 9

75 BEISPIELAUFGABEN 9 SELECT WAREN.CODE, NAME AS [Name der Ware],
Die vollständige Lösung der Aufgabe 6. in SQL: SELECT WAREN.CODE, NAME AS [Name der Ware], GADR AS [Adresse des Geschäfts], PREIS*BSTD AS [Wert des Bestandes] FROM GESCHÄFT INNER JOIN (WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE) ON GESCHÄFT.GCODE = BESTAND.GCODE; Lektorat Dirk Nielsen 9

76 BEISPIELAUFGABEN 7. Summieren wir die Bestandswerte der Waren SELECT WAREN.CODE, First(NAME) AS Bezeichnung, Sum(PREIS*BSTD) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY WAREN.CODE; Lektorat Dirk Nielsen 6

77 BEISPIELAUFGABEN 8. Ergänzen wir die letzte Aufgabe so, daß wir nur die Daten anzeigen, wo der Bestandswert über € liegt! SELECT WAREN.CODE, First(WAREN.NAME) AS [First:NAME], Sum([PREIS]*[BSTD]) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY BESTAND.CODE HAVING (((Sum([PREIS]*[BSTD]))>2000)); Lektorat Dirk Nielsen 7

78 BEISPIELAUFGABEN Aus der letzten Lösung können wir einiges entfernen: SELECT WAREN.CODE, First(NAME) AS Bezeichnung, Sum(PREIS*BSTD) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY WAREN.CODE HAVING Sum(PREIS*BSTD)>2000; Lektorat Dirk Nielsen 7

79 ENDE Lektorat Dirk Nielsen


Herunterladen ppt "Brauchen Datenbanken eine Struktur?"

Ähnliche Präsentationen


Google-Anzeigen