Übung 2

51
Prof. Dr. Andreas Schmietendorf WS06/07 – Labor C/S-Programmierung 1 Übung 2 Interaktive Abfragen auf eine Firebird- Datenbank unter Verwendung der IBOConsole

description

Übung 2. Interaktive Abfragen auf eine Firebird-Datenbank unter Verwendung der IBOConsole. Übersicht zur Übung. Schritte zum Entwurf einer Datenbank Beispiele für DBMS (Kommerziell und Open Source) SQL-Anweisungen in der Übersicht SFW-Block (SELECT – FROM – WHERE) Umgang mit der IBO-Console - PowerPoint PPT Presentation

Transcript of Übung 2

Page 1: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

1

Übung 2

Interaktive Abfragen auf eine Firebird-Datenbank unter Verwendung der IBOConsole

Page 2: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

2

Schritte zum Entwurf einer Datenbank

Beispiele für DBMS (Kommerziell und Open Source)

SQL-Anweisungen in der Übersicht

SFW-Block (SELECT – FROM – WHERE)

Umgang mit der IBO-Console

Aufgabenstellungen des Labors

Weiterführender Beipsiele für SQL-Anweisungen

Übersicht zur Übung

Page 3: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

3

Übersicht zum Entwurf einer DB

Page 4: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

4

Phasenmodell des DB-Entwurfs

Anforderungsanalyse

Konzeptueller Entwurf

Verteilungsentwurf

Logischer Entwurf

Datendefinition

Physischer Entwurf

Implementierung & Wartung

Anwendungsdaten sollen aus den

in der DB gespeicherten

Informationen abgleitet werden

können.

Es sind nur sinnvolle bzw.

vernünftige Anwendungsdaten zu

speichern, daher ist der

Informationsbedarf einer

Anwendung zu ermitteln.

Anwendungsdaten sind möglichst

redundanzfrei zu speichern.

(Vermeidung von Anomalien)Quelle: Heuer, A. et al: Datenbanken kompakt, mitp-Verlag, Bonn 2003

Page 5: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

5

Entity-Relationship-Modell

Entity-Relationship-Modell (kurz ER-Modell)

Grundlage ist eine Arbeit von P.P. Chen aus dem Jahr 1976

Standardmodell für frühe Phasen der Datenbankentwicklung

Verständlich für Fach- und DV-Abteilungen

Basiert auf folgenden Grundkonzepten:

- Entity als zu modellierende Informationseinheit

- Relationship zur Modellierung von Beziehungen zwischen Entities

- Attribut als Eigenschaft von einem Entity oder Relationship

Grafische Notation zur ER-Modellierung

Page 6: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

6

Beispiel eines ER-Modells

Bestellung Produkt

Kunde

löst aus

umfaßt

Versand

Name

Adresse

Kunden_ID

Telefon

Name

Preis

Bezeichnung

Produkt_ID

AnzahlBestell_ID Datum

Quelle: Heuer, A. et al: Datenbanken kompakt, mitp-Verlag, Bonn 2003

Page 7: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

7

Normalisierung

Ziel der Normalisierung ist es, Attribute so zu Relationen

zuzuordnen, dass innerhalb der Relation keine Redundanzen

auftreten. Redundanz ist dann vorhanden, wenn Teile ohne

Informationsverlust weggelassen werden können. Unnötige

Redundanz impliziert Nachteile hinsichtlich der Ressourcen-

auslastung und so genannten Veränderungsanomalien (Update-,

Insert-, Delete-Anomalien).

Page 8: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

8

Normalisierung

Merkmale des Normalisierungsprozesses:

- Primärschlüsselkonzept

- Erkennen von Abhängigkeiten

- Schrittweise Vorgehensweise

Normalisierungsformen

- Funktionale Abhängigkeiten (1 NF und 2 NF)

- Transitive Abhängigkeiten (3 NF und BCNF)

- Mehrwertige Abhängigkeiten (4 NF)

- Verbundabhängigkeiten (5 NF)

Page 9: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

9

Beispiele für Datenbank-Management-Systeme

Page 10: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

10

Gemeinsamkeiten aktuell angebotener DBMS:

Drei-Ebenen Architektur nach ANSI SPARC

SQL als Datenbankabfragesprache

Einbettung von SQL in Programmiersprachen

Diverse Tools für:

- Entwurf von Datenbanken

- Definition, Anfrage und Darstellung von Daten

Kontrollierter Mehrbenutzerbetrieb

Beispiele konkreter DBMS I

Page 11: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

11

Kommerzielle Produkte

Oracle Database

IBM DB2 Universal Database

MS SQL Server

Informix (zumeist in Altsystemen eingesetzt)

IBM IMS DB (ca. 60% aller unternehmenskritischen Daten)

Beispiele konkreter DBMS II

Page 12: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

12

Oracle(hier der Enterprise Manager)

Page 13: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

13

SQL Server(hier der Enterprise Manager)

Page 14: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

14

Open Source Produkte (erhältliche Systeme im Quelltext)

Im Rahmen der LINUX-Distribution

- My SQL mit eingeschränkten Funktionsumfang (www.mysql.com)

- PostgreSQL mit objektrelationalen Features (www.postgresql.org)

Weiterentwicklung von InterBase 6.0 (Borland)

- Firebird (www.firebirdsql.org)

- Verfügbar für Linux und Windows

Beispiele konkreter DBMS III

Page 15: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

15

Firebird-DBMS(hier IBOConsole)

Page 16: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

16

SQL-Anweisungen in der Übersicht

Page 17: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

17

Datenbanksprachen

Storage Structure Language (SSL)- Dateiorganisation (Systemadministrator)

Data Definition Language (DDL)- Erzeugen des DB-Schemas (Datenbankadminstrator – DBA)

View Definition Lanaguage (VDL)- Sichten erzeugen (Anwendungsadministrator)

Interactive Query Language (IQL) Data Manipulation Language (DML)- Daten im Dialog abfragen und ggf. verändern (erfahrene Endanwender)

Data Base Programming Language (DBPL)- Anwendungen erstellen (Programmierer)

Schnittstellen der Anwendungen (Menüs, Masken, usw.)- Daten abfragen und editieren (Endanwender ohne DB-Kenntnisse)

Page 18: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

18

Unterstützte Datentypen

Integer (auch integer4, int)

smallint (auch integer2)

float (p) auch kurz float

decimal (p,q) und numeric (p,q) mit jeweils q als Nachkommastellen

character (n) oder char varying bzw. varchar (n)

date, time für Datums und Zeitangaben

Page 19: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

19

SQL Anweisungen – Übersicht 1

CREATE (DROP) SCHEMA – Definition (Entfernen) eines DB-

Schemas

CREATE (DROP) DOMAIN - Definition (Entfernen) eines Datentyps

CRATE (DROP) TABLE - Definition (Entfernen) einer Basistabelle

CREATE (DROP) VIEW - Definition (Entfernen) einer View

ALTER TABLE – Umstrukturieren einer Basistabelle

GRANT, REVOKE – Vergabe und Entzug von Zugriffsrechten

Page 20: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

20

SQL Anweisungen – Übersicht 2

SELECT FROM WHERE– Datenbankabfrage

INSERT INTO – Einfügen von Zeilen

DELETE FROM – Löschen von Zeilen

TRUNCATE TABLE – Löschen aller Datensätze

UPDATE – Aktualisieren von Zeilen

Page 21: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

21

SQL Anweisungen – Übersicht 3

Transaktionssteuerung

- COMMIT

- ROLLBACK

- SAVEPOINT

Data Control Language (DCL)

- GRANT (Rechtevergabe auf Tabellen oder Sichten)

- REVOKE (Rücknahme von Rechten auf Tabellen oder Sichten)

Page 22: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

22

Vergleichsoperatoren

Operator Bedeutung

= Equal to

> Greater than

>= Greater than or equal to

< Less than

<= Less than or equal to

<> Not equal to

Page 23: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

23

SELECT … FROM … WHEREder SFW-Block

Page 24: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

24

SELECT (SFW Block)

SELECT Klausel

- Gibt die Projektionsliste an, die das Ergebnisschema bestimmt

- Integriert auch arithmetische Operationen und Aggregatfunktionen

FROM Klausel

- Spezifiziert zu verwendende Relationen (Basisrelationen oder Sichten)

- Führt ggf. Umbenennungen durch (Tupelvariablen oder „alias“-namen)

- Verwendete Relationen werden mittels kartesischen Produkts verknüpft

Page 25: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

25

SELECT (SFW Block)

WHERE Klausel

- Einschränkung der von der Datenbank zurückgegebenen Zeilen (Tupel)

- Spezifiziert Selektionsbedingungen der Relationenalgebra

- Verbundbedingungen um aus dem kartesischen Produkt z.B. ein

Gleichverbund (auch Equi-Join) zu berechnen.

- Geschachtelte Anfragen innerhalb der WHERE Klausel

! Bei Zeichenketten ist auf Groß- und Kleinschreibung zu achten

Page 26: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

26

SQL-Anfrage auf einzelne Tabelle

KNr Name Vorname PLZ Ort Strasse Telefon

101 Meyer Joachim 13509 Berlin Wittestr. 30 030 43577 385

102 Schmidt Reiner 12487 Berlin Probsthof 9 030 634 5685

100 Wipprecht Michael 38855 Wernigerode Schillerstr. 7 03943 62 75 11

104 Dimitrov Evgeni 38855 Wernigerode Lindenstr. 8 03943 62 33 11

105 … … … … … …

KNr Name Vorname PLZ Ort Strasse Telefon

101 Meyer Joachim 13509 Berlin Wittestr. 30 030 43577 385

102 Schmidt Reiner 12487 Berlin Probsthof 9 030 634 5685

Tabelle: Kunde

select * from Kundewhere Ort = ‚Berlin‘

Zeige alle Kunden dieIn Berlin wohnen.

Page 27: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

27

SQL-Anfrage auf einzelne Tabelle

KNr Name Vorname PLZ Ort Strasse Telefon

101 Meyer Joachim 13509 Berlin Wittestr. 30 030 43577 385

102 Schmidt Reiner 12487 Berlin Probsthof 9 030 634 5685

100 Wipprecht Michael 38855 Wernigerode Schillerstr. 7 03943 62 75 11

104 Dimitrov Evgeni 38855 Wernigerode Lindenstr. 8 03943 62 33 11

105 … … … … … …

Name Vorname Telefon

Meyer Joachim 030 43577 385

Schmidt Reiner 030 634 5685

Tabelle: Kunde

select Name, Vorname, Telefonfrom Kundewhere PLZ = 38855

Zeige Name, Vorname und Telefon aller Kunden welche die PLZ 38855 haben

Page 28: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

28

SQL-Anfrage auf einzelne Tabelle

KNr Name Vorname PLZ Ort Strasse Telefon

101 Meyer Joachim 13509 Berlin Wittestr. 30 030 43577 385

102 Schmidt Reiner 12487 Berlin Probsthof 9 030 634 5685

100 Wipprecht Michael 38855 Wernigerode Schillerstr. 7 03943 62 75 11

104 Dimitrov Evgeni 38855 Wernigerode Lindenstr. 8 03943 62 33 11

105 … … … … … …

KNr Name Vorname PLZ Ort Strasse Telefon

102 Schmidt Reiner 12487 Berlin Probsthof 9 030 634 5685

Tabelle: Kunde

select * from Kundewhere Name = ‚Schmidt‘

Zeichenketten und Datumswerte Werden in Anführungszeichen gesetzt.

Page 29: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

29

Umgang mit der IBOConsole

Page 30: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

30

Umgang mit der IBOConsole

Zugriff auf Datenbanken

- Interbase (Borland)

- Firebird (Open Source)

Funktionsumfang

- Datenbanken erzeugen

- Datenbanken registrieren

- Ausführen von SQL-Anweisungen

• Interaktiv SQL

• Gespeicherte SQL-Skripte

- DB-Administration

• Nutzerverwaltung

• Backup & Recovery

Page 31: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

31

Anmeldeprozedur

Benutzername

- SYSDBA

Kennwort

- masterkey

Datenbank verwenden

- DB-Registrieren

- DB-Anmeldung

Page 32: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

32

Datenbank registrieren

Page 33: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

33

Anmelden an der Datenbank

Page 34: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

34

Neue Datenbank anlegen

Page 35: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

35

Aufgabenstellungen im Labor

Page 36: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

36

Verwendung des Eigenschaften-Dialogs

Verwenden Sie „Properties“ (Tabellennamen markieren – rechte

Maustaste – Properties oder Doppelklick auf den Tabellennamen)

um sich über die Eigenschaften der folgenden Tabellen zu

informieren. Speichern Sie die Metadaten jeweils im Protokoll.

- COUNTRY

- CUSTOMER

- DEPARTMENT

- EMPLOYEE

- JOB

- PROJECT

- PROJ_DEPT_BUDGET

Page 37: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

37

Anfragen in SQL - SELECT

1. Wählen Sie alle Dateneinträge der vorhergehend mit Hilfe des

Properties-Dialoges analysierten Tabellen aus.

2. Wählen Sie aus der Tabelle DEPARTMENT die Attribute

department, location und phone_no aus.

3. Wählen Sie aus der Tabelle DEPARTMENT die Attribute dept_no,

department und budget aus, für den Fall das das budget größer als

600000 ist.

Page 38: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

38

Anfragen in SQL - SELECT

4. Wählen Sie aus der Tabelle DEPARTMENT das Attribut location

aus, verhindern Sie dabei die Ausgabe doppelter Tupel mittels der

distinct-Anweisung.

5. Wählen Sie aus der Tabelle EMPLOYEE die Attribute emp_no,

first_name, last_name und job_code aus, für den Fall das die

dept_no gleich 623 ist.

Page 39: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

39

Daten einfügen - INSERT

Page 40: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

40

Daten einfügen - INSERT

6. Fügen Sie in die Tabelle COUNTRY weitere 3 Länder und die

entsprechenden Währungseinheit ein.

7. Prüfen Sie nach Eingabe eines weiteren Landes den Inhalt der

Tabelle COUNTRY mittels select-Anweisung.

8. Geben Sie jeweils 5 neue Mitarbeiter in die Tabelle EMPLOYEE ein,

verwenden Sie die Vorlage innerhalb dieser Versuchsanleitung!

Belegung aller not null Attribute

Datumsangabe entsprechend des folgenden Formats – ‘11.12.2005‘

Berücksichtigung von Abhängigkeiten zu anderen Tabellen!

Page 41: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

41

Verbundoperationen (Join)

9. Ermitteln Sie das Kreuzprodukt für die Relationen DEPARTMENT

und EMPLOYEE. Wie viele Tupel (Zeilen) und Attribute (Spalten)

enthält ihre Ergebnisrelation?

10.Ermitteln Sie einen natürlichen Verbund der Relationen

DEPARTMENT und EMPLOYEE unter Verwendung des Attributs

dept_no. Wie viele Tupel (Zeilen) und Attribute (Spalten) enthält

ihre Ergebnisrelation jetzt?

Page 42: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

42

Weiterführende Beispiele

Page 43: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

43

Duplikatsunterdrückung mittels distinct

Page 44: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

44

Beispiel: UPDATE-Anweisung - vorher -

Page 45: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

45

Beispiel: UPDATE-Anweisung - nachher -

Page 46: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

46

Beispiel: DELETE-Anweisung

Page 47: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

47

Beispiel: INSERT-Anweisung

Page 48: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

48

Beispiel: Kreuzprodukt

Page 49: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

49

Beispiel: Natürlicher Verbund

Page 50: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

50

Organisation

Page 51: Übung 2

Prof. Dr. Andreas SchmietendorfWS06/07 – LaborC/S-Programmierung

51

Organisation des Labors

Bearbeitung der Themenstellung – Gruppen zu je 4 Stundenten

Abgabe eines Protokolls (Bitte eine komplette Word-Datei!!)

- Enthält die Namen aller beteiligten Studenten

- Enthält alle erstellen SQL-Skripte

- Enthält alle Ergebnisrelationen

Das Protokoll (Dateiname: „CS_ue2_gruppe_x“) liefern Sie per attachment

an [email protected]. In das "Betreff" (Subject)-Feld schreiben Sie

bitte: „ CS_ue2_gruppe_x "