DB1 für Medieninformatiker DB22 Musterlösung zur Übungsklausur Musterlösung zur Übungsklausur Zulässige Hilfsmittel: Eine Seite handschriftl. Notizen, Skript Kap.4 (SQL), Ihr Ebay-ERM., Mat_inf-Doku Die Aufgaben sind ungefähr gleich aufwändig und sind je 50 Punkte wert. Bei Unklarheiten fragen Sie den Dozenten. Schreiben Sie die Lösungen auf diese Blätter, bzw. auf numerierte leere Blätter mit Ihrem Namen; kennzeichnen Sie die Aufgabennummer eindeutig. Geben Sie alle Blätter (auch die Schmierblätter) ab: Für teilweise richtige Lösungen können Sie Teilpunkte bekommen, auch aufgrund Ihrer Schmierblätter! Aufgabe 1. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch. ( ) Richtig ( x ) Falsch 1. Ein ERM-Modell ist die grafische Darstellungen eines relationales DB-Schemas. Grund: ERM ist konzeptuelles oder emantisches modell, RDM ist logisches Modell, aus ERM ableitbar ( x ) Richtig ( ) Falsch 2. Folgende SQL-Anweisungen sind gleichbedeutend: select name, vert from kdst where vert in (select vertnr from vert where hauptv = NULL); select name, vert from kdst, vert where kdst.vert = vert.vernr and hauptv = NULL; Grund: Ergebnis ist Liste der Vertreter ohne Vorgesetzen Hauptvertreter ( ) ( x) Richtig Falsch 3. Es ist für den DB-Benutzer unbedingt nötig, das konzeptuelle Schema der DB zu kennen. Grund: DB-Entwickler benötigt konzeptuelle Schema, Benutzer arbeitet auf dem logischen Schema oder externen Sch. ( ) (x) Richtig Falsch 4. Beim Erzeugen der Tabellen einer Relationalen DB ist die Reihenfolge beliebig, beim Einfügen von Datensätzen ist die Reihenfolge durch Constraints eingeschränkt. Grund: Referentielle Integrität greift schon bei der Schema-Erzeugung ( ) (x) Richtig Falsch 5. Im ERM erkennt man Existenzabhängigkeit an der Maximum-Angabe der Kardinalitäten. Grund: Am Minimum ( ) (x) Richtig Falsch 6. Relationale Datenbanken müssen redundanzfrei sein. Grund: Redundanz-Armut istNnormalisierungsziel, Teilweise Denormalisierung aus Effizienzgründen (x) (x) Richtig Falsch 7. M:N-Beziehungstypen eines ERM sind im Relationalen Modell nicht abbildbar. Grund: nicht unmittelbar auf Fremdschlüssel abbildbar, erfordern die Definition einer Verknüpfungstabelle ( x ) Richtig ( ) Falsch 8. Verzögerte Bedingungsprüfung bedeutet, dass die DB vorübergehend inkonsistente Zustände zulässt. Grund: Konsistenz wird erst bei „Commit“ geprüft. ( ) Richtig ( x ) Falsch 9. Update-Anomalie bedeutet, dass der Datenbestand einer Relationalen DB nach jeder UpdateAnweisung konsistent sein muss. Grund: Dass aufgrund der Schema-Struktur ein Update zu Inkonsistenzen führen kann. ( ) Richtig ( x ) Falsch 10. Unter "Implementierung" eines DB-Schemas versteht man, das Relationenschema mit Testdatensätzen zu füllen. Grund: Implementierung == Schema-Erzeugung, Prototyp == Testdaten eingetragen I. Schmiedecke Wintersemester 06/07 Seite 1/2 DB1 für Medieninformatiker DB22 Musterlösung zur Übungsklausur Aufgabe 2: SQL-Befehle für mat_inf: a) Schreiben Sie eine SQL-Anweisung, die für den Auftrag, dessen Numer in der Hostvariable :AUFTR steht, eine weiter Auftragsposition einträgt. die Daten können Sie frei erfinden. Insert Into aufpos Values (:AUFTR, 5, 7, 7, 1000, ‘2003-12-12’, 699.00); b) Schreiben Sie eine SQL-Anweisung, die den Firmennamen des Kunden und die Auftragsnummern und Auftragssummen aller Auftrage aus dem Jahr 2003 auflistet, die von Großabnehmern stammen Select firma, aufnr, SUM(menge*preis) From kdst Join aufkopf On kdnr Join aufpos On aufnr Join kdgru On kdgruppe Where termin like ’%2003%’ And grup_txt = ‘Großabnehmer’ Group By firma, aufnr ; c) Schreiben Sie eine SQL-Anweisung, die eine Kunden-View erstellt, mit Firmenname, Anschrift, Kundengruppe, Umsatzsoll, Vertretername. Create or Replace View kundenview AS Select firma as Firmenname, Strasse, PLZ, Ort, grup_txt as Kundengruppe, umssoll As Umsatzsoll, name As Vertretername From kdst Join kdgru on kdgruppe Join vert On vertnr=vertreter; d) Schreiben Sie einen INSTEAD OF-Trigger für den Eintrag eines Neukunden über die Kundenview. Für die Kundennummer können Sie die Sequence kd_seq benutzen. Create or Replace Trigger kundeninsert Instead Of Insert On kundenview For Each Row Declare vnr Number; kdgnr Number; Begin Select vertnr Into vnr From vert Where name = :NEW.vertertername; Select kdgruppe into kdgnr From kdgru Where grup_txt = :NEW.kundengruppe; Insert Into kdst Values(kd_seq.nextval, :NEW.firma, :NEW.strasse, :NEW.plz, :NEW.ort, vnr, 0, :New.Umsatzsoll, 0, kdgnr, Null); End; _______________________________________________________________________________________________ Aufgabe 3: Ebay-Modellierung und -Implementierung: (Ohne Musterlösung!!!!) a) Verändern Sie das unten stehende vereinfachte Ebay-Modell (zeichnerisch) so, dass Mitglieder sich zu Gruppen zusammenschließen können. Eine Mitgliedergruppe kann kaufen, verkaufen und Bewertungen erhalten. Die Mitglieder können auch einzeln tätig sein. b) Schreiben Sie die DDL-Anweisungen, d.h. CREATE / ALTER TABLE-Anweisungen, zur Umsetzung von a). c) Eine Mitgliedergruppe darf nicht leer sein. Lässt sich diese Bedingung implementieren, und wenn ja, wie? d) (5 Extrapunkte) Schreiben Sie einen Trigger, der eine Mitgliedergruppe löscht, wenn ihr letztes Mitglied entfernt wird (Fremdschlüssellöschung, nicht unbedingt Mitgliedslöschung!). I. Schmiedecke Wintersemester 06/07 Seite 2/2