View
107
Download
0
Category
Preview:
Citation preview
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 "
Recommended