faecher:informatik:oberstufe:datenbanken:nm_beziehungen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
faecher:informatik:oberstufe:datenbanken:nm_beziehungen:start [25.11.2020 21:52] sbelfaecher:informatik:oberstufe:datenbanken:nm_beziehungen:start [05.04.2022 12:18] – [Tabelle] the
Zeile 1: Zeile 1:
 ====== n-m Beziehungen ====== ====== n-m Beziehungen ======
  
-In normalisierten Datenbanklen kommen häufig "Beziehungstabellen" zum Einsatz, welche die Verbindung zwischen den Entitäten herstellen. n-m-Beziehungen benötigen immer eine solche Beziehungstabelle.+In normalisierten Datenbanken kommen häufig "Beziehungstabellen" zum Einsatz, welche die Verbindung zwischen den Entitäten 
 +herstellen. **n-m-Beziehungen benötigen immer eine solche Beziehungstabelle**.
  
-Importiere für die folgenden Übungen die Tabellen der normalisierte Zahnarztbedarfsdatenbank in deine Übungsdatenbank({{ :faecher:informatik:oberstufe:datenbanken:nm_beziehungen:zahnarztbedarf_2nf.zip |}})+===== Beispiel ===== 
 + 
 + 
 + 
 +{{ :faecher:informatik:oberstufe:datenbanken:nm_beziehungen:erfilme.png |}} 
 + 
 + 
 +{{ :faecher:informatik:oberstufe:datenbanken:nm_beziehungen:tabellen.png?300 |}} 
 + 
 + 
 +Die Struktur der Beziehungstabelle sieht so aus: 
 + 
 +''schauspieler_film(__sfid__, sid↑ , fid↑)'' 
 + 
 +Das vollständige Schema sieht also so aus: 
 + 
 +''schauspieler_film(__sfid__, sid↑ , fid↑)''\\ 
 +''schauspieler(__sid__, SVorname, SNachname)''\\ 
 +''filme(__fid__, titel)'' 
 + 
 + 
 + 
 +Eine kurze Recherche ergibt (unter anderem), dass Meg Ryan in "Harry And Sally" mitspielt. Um diese Beziehung abzubilden, muss in unserer schauspieler_film-tabelle eie Zeile der Form  
 + 
 +^ sfid  ^ sid  | fid  | 
 +| 1     | 4    | 2    | 
 +  
 + 
 +eingefügt werden. Der Umstand, dass John Belushi eine Rolle in Blues Brothers spielt, führt zu einer weiteren Zeile: 
 + 
 +^ sfid  ^ sid  | fid  | 
 +| 1     | 4    | 2    | 
 +| 2     | 6    | 1    |
  
 ---- ----
Zeile 9: Zeile 42:
 === (A1) === === (A1) ===
  
-Erstelle ein ER-Diagramm für die Datenbank. +Ergänze die Beziehungstabelle unter Verwendung entsprechenden Ressourcen.
  
  
 ---- ----
 +
 +<WRAP center round box 90%>
 +Importiere für die folgenden Übungen die Tabellen der normalisierte Zahnarztbedarfsdatenbank in deine Übungsdatenbank. ({{ :faecher:informatik:oberstufe:datenbanken:nm_beziehungen:zahnarztbedarf_2nf.zip |}})
 +</WRAP>
 +
 +
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A2) === === (A2) ===
 +
 +Erstelle ein ER-Diagramm für die Datenbank. Überführe das ER Modell in ein relationales Datenbankschema.
 +
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A3) ===
  
   - Gib ein SQL-Statement an, das alle Produkte der Firma  mit Hilfe des Filters ''WHERE hersteller.firma = 'Eisen Karl' '' auflistet((Du sollst also nicht "von Hand" zuerst die Hersteller ID nachschauen...)).   - Gib ein SQL-Statement an, das alle Produkte der Firma  mit Hilfe des Filters ''WHERE hersteller.firma = 'Eisen Karl' '' auflistet((Du sollst also nicht "von Hand" zuerst die Hersteller ID nachschauen...)).
Zeile 21: Zeile 66:
   - Gib ein SQL-Statement an, das den Rechnungsbetrag von Dr. Blutgesicht ausgibt.   - Gib ein SQL-Statement an, das den Rechnungsbetrag von Dr. Blutgesicht ausgibt.
   - Gib ein SQL-Statement an, das alle Doktoren ausgibt, die Zement gekauft haben   - Gib ein SQL-Statement an, das alle Doktoren ausgibt, die Zement gekauft haben
-  - Gib ein SQL-Statement an, deren Rechungsbetrag über 12EUR liegt+  - Gib ein SQL-Statement an, deren Rechnungsbetrag über 100EUR liegt
  
  
Zeile 36: Zeile 81:
  
 ++++ ++++
 +
 ++++ Lösung 2 | ++++ Lösung 2 |
 <code sql> <code sql>
Zeile 48: Zeile 94:
 ++++ Lösung 3 | ++++ Lösung 3 |
 <code sql> <code sql>
-SELECT * FROM hersteller,doktoren, produkte, bestellungen +SELECT sum(preis*anzahl) AS rechnung, doktoren.name FROM hersteller,doktoren, produkte, bestellungen 
 WHERE bestellungen.produkt_id = produkte.id WHERE bestellungen.produkt_id = produkte.id
 AND bestellungen.doktor_id = doktoren.id AND bestellungen.doktor_id = doktoren.id
Zeile 55: Zeile 101:
 </code> </code>
 ++++ ++++
 +
 ++++ Lösung 5 | ++++ Lösung 5 |
 <code sql> <code sql>
-SELECT sum(preis) AS rechnung, doktoren.name FROM hersteller,doktoren, produkte, bestellungen +SELECT sum(preis*anzahl) AS rechnung, doktoren.name FROM hersteller,doktoren, produkte, bestellungen 
 WHERE bestellungen.produkt_id = produkte.id WHERE bestellungen.produkt_id = produkte.id
 AND bestellungen.doktor_id = doktoren.id AND bestellungen.doktor_id = doktoren.id
 AND bestellungen.hersteller_id = hersteller.id AND bestellungen.hersteller_id = hersteller.id
 GROUP BY doktoren.name GROUP BY doktoren.name
-HAVING rechnung >12+HAVING rechnung >100 
 +</code>
 ++++ ++++
  
Zeile 78: Zeile 126:
 </code> </code>
  
-Was wird hier abgefragt? Experimentiere mit der WHERE BEdingung und mit den angezeigten Feldern.+Was wird hier abgefragt? Experimentiere mit der WHERE Bedingung und mit den angezeigten Feldern.