PS Datenbanken, SS 2008 Dominik Engel 14. März 2008 Universität Salzburg FB Computerwissenschaften 1. Übungsblatt zum Proseminar Datenbanken ▸ Speichern Sie alle SQL-Statements, die Sie verwenden, und alle Resultate und bringen Sie einen Ausdruck ins Proseminar mit. Wenn nicht anders angegeben zählt jedes der Beispiele 1 Punkt. ▸ Projektgruppeneinteilung ist selbstbestimmt möglich bis 2.4.2008. Bitte Mitglieder der gewünschten Projektgruppe bis zu diesem Termin per E-Mail bekanntgeben. 1. Erklären Sie die Begriffe DBMS und DBS. Was versteht man unter konzeptionellem Schema und physikalischem Schema? 2. Erläutern Sie die Motivationen für den Einsatz eines DBS und die Vorteile die sich durch den Einsatz ergeben. 3. (2 Punkte) Gegeben sei folgender B-Baum vom Grad 2: 14 8 10 15 17 • Fügen Sie die Schlüssel 3, 12, 13, 23, 28, 20, 16, 19, 18, 30, 40, 44 in dieser Reihenfolge ein. Protokollieren Sie den Stand des B-Baums nach jeder Einfüge-Operation. (Zur Auffrischung finden Sie den Algorithmus auf der Webpage der Lehrveranstaltung.) • Welche Vorteile bringt ein B-Baum bei der Schlüsselsuche? 4. (2 Punkte) • Machen Sie sich mit DB2 und SQLDeveloper vertraut. Sie können SQLDeveloper auf jedem Linuxrechner im Übungsraum starten (mittels sqldeveloper-solyp) oder auf Ihrem eigenen Rechner installieren (siehe Webpage der Lehrveranstaltung). Legen Sie eine neue Verbindung zu vampir.cosy.sbg.ac.at an, benutzen Sie zur Authentifizierung Ihre Userdaten und Ihr Passwort, die Sie in der Vorbesprechung erhalten haben. Eine Anleitung finden Sie auch auf der Webpage der Lehrveranstaltung. • Legen Sie nun mittels CREATE-Statement eine Tabelle ABTEILUNGEN an. Diese Tabelle soll die Abteilungen einer fiktiven kleinen Firma verwalten. Die Spalten sollen wie folgt definiert werden: – AbtID integer not null – AbtName varchar(50) not null Definieren Sie AbtID als primary key. 1 • Legen Sie mittels CREATE-Statement eine weitere Tabelle ANGESTELLTE an. Diese Tabelle soll Abteilungszuordnung, Funktion und Gehalt (in Euro) der Angestellten der Firma beinhalten. Die Spalten sollen wie folgt definiert werden: – – – – – PersNr integer not null Name varchar(50) not null AbtID integer not null Funktion varchar(50) not null, Gehalt integer not null Definieren Sie PersNr als primary key. • Fügen Sie die Daten von Seite 3 in die Tabelle ABTEILUNGEN ein. Verwenden Sie dazu INSERT-Statements. • Danach fügen Sie die Daten für Tabelle ANGESTELLTE mittels INSERT-Statements ein. Um Ihnen hier das Abtippen zu ersparen, finden Sie auf der Webpage der Lehrveranstaltung das SQL-Skript angestellte.sql, das Sie im SQLDeveloper ausführen können (achten Sie darauf, dass die Schaltfläche Enable Semicolon Terminator“ aktiviert ist). Vergessen ” Sie nicht, nach dem INSERT-Statement COMMIT auszuführen! 5. Geben Sie alle Angestellten sortiert nach Personalnummer aus, die die Funktion Grafiker“ ” haben und deren Gehalt kleiner ist als 25000 e. 6. Formulieren Sie ein Anfrage, die alle Angestellten mit ihrem Gehalt in Euro und ihrem Gehalt in Dollar (1 e = 1,55 $) ausgibt. 7. Erhöhen Sie das Gehalt für Angestellte Mona Badelt“ um 1000 e. Überprüfgen Sie die Richtigkeit ” der Ausführung mit einem entsprechenden SELECT-Statement. 8. Geben Sie ein SELECT-Statement an, das die Namen aller Angestellten und den Namen der Abteilung in der sie arbeiten ausgibt. Die Verbindung zwischen den beiden Tabellen Angestellte und Abteilungen wird über AbtID hergestellt. 9. Verringern Sie das Gehalt aller Angestellten der Abteilung Sales“ um 500 e. Überprüfgen Sie ” die Richtigkeit der Ausführung wieder mit einem entsprechenden SELECT-Statement. 10. Versetzen Sie Moritz Posch“ von der Abteilung Programming“ in die Abteilung Production“. ” ” ” 11. Formulieren Sie ein SELECT-Statement, welches den Namen jeder Abteilung gefolgt vom durchschnittlichen Gehalt in dieser Abteilung ausgibt. 12. Formulieren Sie eine Anfrage, die Name, Funktion und Gehalt des Mitarbeiters mit dem höchsten Gehalt, das in der Firma bezahlt wird, ausgibt. 13. Suchen Sie alle Personen in der Abteilung Sales“, die Gehälter bekommen welche über dem ” Gesamtdurchschnitt liegen und geben Sie deren Namen und Abteilung aus. 2 AbtID AbtName 1 Programming 2 Authoring 3 Production 4 Sales Daten für Tabelle Abteilungen PersNr 3985 3434 3317 3596 5674 4205 5689 4477 5500 5536 6600 4908 3615 4001 3485 5617 4101 3094 5903 3857 Name Tamara Cerny Andreas Weisz Hanna Hailegger Tara Seistil Nora Thaler Felicitas Ettenauer Antonia Passinke Max Grosslercher Nina Petri Merle Medek Mona Badelt Lina Milek Henri Otto Vivien Morawek Imke Maier Lucia Krause Adam Madl Ryan Kloiber Moritz Posch Rebecca Tributsch Abteilung Production Programming Programming Sales Sales Authoring Sales Sales Production Sales Authoring Production Authoring Sales Production Sales Production Production Programming Production Funktion Grafiker Visionaer Programmierer Programmierer Leiter Visionaer Designer Verkaeufer Grafiker Grafiker Programmierer Designer Leiter Visionaer Designer Visionaer Leiter Verkaeufer Programmierer Programmierer Daten für Tabelle Angestellte 3 Gehalt 24904 28473 21262 29099 21302 13955 26660 19888 24055 28884 11996 27716 21731 14708 10810 28825 23232 14543 15833 17569