DBS1 für Medieninformatiker DB22 Musterlösung zur Hauptklausur Musterlösung zur Hauptklausur WS 06/07 __________________________________________________________________________ Aufgabe 1.: Kreuzen Sie die richtigen Antworten an und geben Sie eine Begründung in Stichworten an. Ohne Begründung gilt Ihre Antwort als falsch. ( X ) Richtig ( ) Falsch 1. In einer Relationalen DB sind im Data Dictionary die DB-Schemata, in den Tablespaces die Relationen gespeichert. Grund: Das DataDictionary enthält die Schema-Definitionen und wird durch die DDL bearbeitet, die DML berabeitet die Daten ( ) Richtig ( X) Falsch 2. Folgende SQL-Anweisungen sind gleichbedeutend: SELECT name, firma FROM vert, kdst WHERE vert.vertnr = kdst.vertreter; SELECT name, firma FROM vert LEFT JOIN kdst ON vert.vertnr = kdst.vertreter; Grund: LEFT join bedeutet, dass ALLE Datensätze aus vert geliefert werden , auch wenn es dazu keinen passenden Datensatz in kdst gibt. INNER JOIN wäre korrekt. ( ) ( X) Richtig Falsch 3. Der Hauptnachteil von Views ist, dass Datenänderungen in den Basisrelationen sich erst in der nächsten Session auf die View auswirken. Grund: Views sind gespeicherte Select-Befehle, die bei jeder Verwendung neu ausgeführt werden, also aktuell sind. ( ) X ) Richtig Falsch 4. Referentielle Integrität einer Datenbank bedeutet, dass alle Fremdschlüsselspalten gefüllt sind ( (NOT NULL) und alle referenzierten Tupel existieren. Grund: Leere Einträge in Fremdschlüsselspalten sind ausdrücklich zulässig, es sei den, NOT NULL ist angegeben ( X) ( ) Richtig Falsch 5. Eine Kardinalität mit Minimum 1 kann oft durch eine NOT NULL-Bedingung abgebildet werden. Grund: (1:1) ist immer durch eine NOT-NULL-Bedingung am Fremdschlüssel ausdrückbar, (1:n) nicht. ( ) ( X) Richtig Falsch 6. Normalisierung bedeutet die Entfernung von Redundanzen in Schlüsselattributen. Grund: Normalisierung entfernt Redundanzen aus Nicht-Schlüssel-Attrbuten (NSA) ( ) ( X) Richtig Falsch 7. Datenunabhängigkeit bedeutet, dass ein Anwendungsprogramm das Logische Schema der verwendeten Datenbank nicht kennen muss. Grund: ...bedeutet, dass das Anwendungsprogramm nicht das GESAMTE logische Schema kennen muss, ggf. sogar durch VIEWS davon abgekoppelt ist, und dass es das physische Schema gear nicht kennen muss. ( X ) Richtig ( ) Falsch 8. Semantische Datenmodellierung bedeutet, die Modellierung von Informationsstrukturen und Beziehungen ohne Bezug auf eine Implementierungstechnik. Grund: ERM und UML snd semantische Modelle ohne Referenzimplementierung. // Sind auf verschiedene Logische Modelle abbildbar. // Heißt deshalb auch abstrakte Datenmodellierung ( ) Richtig ( X ) Falsch 9. Instead-of-Trigger dienen der Datenmanipulation über Views. Sie können für Insert, Udate, Delete und Select definiert werden, aber nicht für Alter Table. Grund: Trigger sind nur für DML-Operationen definierbar, also nicht für Select ( X ) Richtig ( ) Falsch 10. Eine prozedurale Erweiterung von SQL, wie sie für die Definition von Triggern verwendet wird, muss im DBMS implementiert sein, d.h. dort kompilier- und ausführbar sein. Grund: Es gibt in diesem Fall keine andere Laufzeitumgebung als das DBMS________________________________ ( 0 5 10 15 20 25 30 35 40 45 50 ) _______________________________________________________________________________________________ Aufgabe 2: SQL-Befehle für mat_inf: a) Schreiben Sie eine SQL-Anweisung, die Auftragsnummer, Firmenname des Kunden und Lieferschein-Datum aller Auftrage aus dem Jahr 2003 auflistet, die den Artikel "SCSI-Kabel" enthalten. Select Distinct aufnr as Auftragsnummer, firma, ls_datum as Lieferscheindatum I. Schmiedecke Winterrsemester 06/07 Seite 1/3 DBS1 für Medieninformatiker DB22 Musterlösung zur Hauptklausur From aufkopf Inner Join aufpos On aufnr Inner Join kdst On kdnr Where ls_datum like '%2003%' and artnr IN (Select artnr From artst Where artbez = 'SCSI-Kabel'); b) Schreiben Sie eine SQL-Anweisung, die für alle Auftragspositionen der Aufträge ab Nr. 10 als Termin das aktuelle Datum SYSDATE einträgt. Update aufpos Set termin = SYSDATE Where aufnr >9; c) Schreiben Sie eine SQL-Anweisung, die eine Lieferschein-View erstellt. Ein Lieferschein ist eine nach Auftragsnummern geordnete Liste von Auftragsnummer, Lieferdatum, Name und Anschrift des Kunden und zu lieferndem Artikel mit Artikelnummer und Artikelbezeichnung (ohne Preis). Create View Lieferscheinview As Select aufnr as Auftragsnummer, ls_datum as Lieferdatum, Firma, PLZ, Ort, Strasse, artnr as Artikelnummer, artbez as Bezeichnung From aufkopf Inner Join kdst On kdnr InnerJoin aufpos On aufnr Order By aufnr; d) Schreiben Sie einen Trigger, der bei INSERT in die Tabelle aufkopf automatisch SYSDATE als LS_Datum setzt. Create Or Replace Trigger Lieferschein_Trigger Before Insert On aufkopf For Each Row Begin Select Sysdate into :New.ls_datum from dual; End; Lösung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 35 40 45 50 ) _______________________________________________________________________________________________ Aufgabe 3: Ebay-Modellierung und -Implementierung: a) (10 Punkte) Markieren Sie alle Existenzabhängigkeiten im unten stehenden vereinfachte Ebay-Modell, und geben Sie an, ob und wie sie im Relationalen Schema implementiert werden können. Alle roten durch eine NOT NULL-Bedingung am Fremdschlüssel, grün (Artikel) nur mit Kunstgriffen b) Verändern Sie das unten stehende vereinfachte Ebay-Modell (zeichnerisch) so, dass ein Mitglied beliebig viele Mitgliedsnamen ("Nicknames") haben darf. Beachten Sie dabei, dass die Identifizierung des Käufers/Verkäufers dann über den Mitgliedsnamen erfolgen muss, nicht über das Mitglied. (rot) c) Verändern Sie das Ebay-Modell (zeichnerisch) so, dass derselbe Artikel in mehreren Auktionen angeboten werden darf (z.B. nach erfolgloser Auktion). Fügen Sie dem Artikel ein Attribut "verkauft" hinzu. (grün) I. Schmiedecke Winterrsemester 06/07 Seite 2/3 DBS1 für Medieninformatiker DB22 Musterlösung zur Hauptklausur d) Im RDM ist die Tabelle Artikel bisher so definiert: CREATE TABLE Artikel (Artikelnr NUMBER(10) PRIMARY KEY, Auktionsnr NUMBER(10) , ……<weitere Spalten>, CONSTRAINT art_1 FOREIGN KEY Auktionsnummer references Auktion NOT NULL ); Schreiben Sie die ALTER TABLE-Anweisungen zur Umsetzung von c). Alter Table artikel Drop Constraint art_1; Alter Table artikel Add verkauft Integer check Not Null; Alter Table Auktion Add Fore ign Key aukt_1 artikelnummer references artikel; e) ( 5 Extrapunkte) Schreiben Sie eine View, die Liste aller Auktionen einstellbaren Artikel darstellt, d.h. Artikel, die noch nicht verkauft sind und zur Zeit nicht angeboten werden: Verbinden sie dazu zwei Select-Anweisungen mit MINUS (die erste Liste OHNE die Elemente der 2. Liste) Create View Einstellbar As (Select artikelnr From Artikel where verkauft =0 MINUS Select distinct artikel.artikelnr from artikel Inner Join auktion on artikelnr And endedatum > SYSDATE); I. Schmiedecke Winterrsemester 06/07 Seite 3/3