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
faecher:informatik:oberstufe:datenbanken:nm_beziehungen:start [26.11.2020 10:28] sbelfaecher:informatik:oberstufe:datenbanken:nm_beziehungen:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== n-m Beziehungen ====== 
  
-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 |}}) 
- 
-FIXME: Einfacheres Beispiel zum Einstieg? 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) === 
- 
-Erstelle ein ER-Diagramm für die Datenbank. 
- 
- 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A2) === 
- 
-  - 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 Bestellungen von Viktoria auflistet. 
-  - 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, deren Rechnungsbetrag über 12EUR liegt 
- 
- 
- 
-++++ Lösung 1 | 
- 
-<code sql> 
-SELECT * FROM hersteller,doktoren, produkte, bestellungen  
-WHERE bestellungen.produkt_id = produkte.id 
-AND bestellungen.doktor_id = doktoren.id 
-AND bestellungen.hersteller_id = hersteller.id 
-AND hersteller.firma = "Eisen-Karl" 
-</code> 
- 
-++++ 
- 
-++++ Lösung 2 | 
-<code sql> 
-SELECT * FROM hersteller,doktoren, produkte, bestellungen  
-WHERE bestellungen.produkt_id = produkte.id 
-AND bestellungen.doktor_id = doktoren.id 
-AND bestellungen.hersteller_id = hersteller.id 
-AND doktoren.vorname = "Viktoria" 
-</code> 
-++++ 
- 
-++++ Lösung 3 | 
-<code sql> 
-SELECT * FROM hersteller,doktoren, produkte, bestellungen  
-WHERE bestellungen.produkt_id = produkte.id 
-AND bestellungen.doktor_id = doktoren.id 
-AND bestellungen.hersteller_id = hersteller.id 
-AND doktoren.name = "Blutgesicht" 
-</code> 
-++++ 
- 
-++++ Lösung 5 | 
-<code sql> 
-SELECT sum(preis) AS rechnung, doktoren.name FROM hersteller,doktoren, produkte, bestellungen  
-WHERE bestellungen.produkt_id = produkte.id 
-AND bestellungen.doktor_id = doktoren.id 
-AND bestellungen.hersteller_id = hersteller.id 
-GROUP BY doktoren.name 
-HAVING rechnung >12 
-</code> 
-++++ 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (Bonus 1) === 
- 
-Teste das folgende SQL Statement: 
- 
-<code sql> 
-SELECT DISTINCT produkt, firma FROM produkte p 
-INNER JOIN bestellungen b ON p.id=b.produkt_id 
-INNER JOIN hersteller h ON h.id=b.hersteller_id 
-WHERE h.firma = "Eisen-Karl" 
-</code> 
- 
-Was wird hier abgefragt? Experimentiere mit der WHERE BEdingung und mit den angezeigten Feldern. 
  • faecher/informatik/oberstufe/datenbanken/nm_beziehungen/start.1606382891.txt.gz
  • Zuletzt geändert: 26.11.2020 10:28
  • von sbel