Übung 2

Post on 15-Jan-2016

44 views 0 download

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

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

1

Übung 2

Interaktive Abfragen auf eine Firebird-Datenbank unter Verwendung der IBOConsole

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

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

3

Übersicht zum Entwurf einer DB

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

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

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

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).

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)

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

9

Beispiele für Datenbank-Management-Systeme

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

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

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

12

Oracle(hier der Enterprise Manager)

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

13

SQL Server(hier der Enterprise Manager)

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

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

15

Firebird-DBMS(hier IBOConsole)

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

16

SQL-Anweisungen in der Übersicht

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)

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

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

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

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)

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

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

23

SELECT … FROM … WHEREder SFW-Block

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

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

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.

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

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.

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

29

Umgang mit der IBOConsole

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

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

31

Anmeldeprozedur

Benutzername

- SYSDBA

Kennwort

- masterkey

Datenbank verwenden

- DB-Registrieren

- DB-Anmeldung

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

32

Datenbank registrieren

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

33

Anmelden an der Datenbank

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

34

Neue Datenbank anlegen

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

35

Aufgabenstellungen im Labor

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

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.

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.

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

39

Daten einfügen - INSERT

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!

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?

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

42

Weiterführende Beispiele

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

43

Duplikatsunterdrückung mittels distinct

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

44

Beispiel: UPDATE-Anweisung - vorher -

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

45

Beispiel: UPDATE-Anweisung - nachher -

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

46

Beispiel: DELETE-Anweisung

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

47

Beispiel: INSERT-Anweisung

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

48

Beispiel: Kreuzprodukt

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

49

Beispiel: Natürlicher Verbund

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

50

Organisation

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 schmiete@fhw-berlin.de. In das "Betreff" (Subject)-Feld schreiben Sie

bitte: „ CS_ue2_gruppe_x "