Datenbanken

Bevor Sie anfangen installieren und konfigurieren Sie bitte PyCharm Professional. Eine Videoanleitung ist auf Moodle verfügbar.

Anschließend verschaffen Sie sich zuerst einen Überblick über die Northwind-Datenbank. Machen Sie sich eventuell Notizen.

Eine SQL-Anleitung finden Sie am Ende der letzten Vorlesung (Vorlesung 9). Alternativ ist das SQL Tutorial von w3schools sehr empfehlenswert: https://www.w3schools.com/sql/.

Beantworten Sie alle Aufgaben mit einer SQL-Abfrage.

Einfache Abfragen (zur Wiederholung)

Ermitteln Sie…

  1. …alle Bestellungen (Orders)
  2. …alle Kunden (Customers) sortiert nach Firmenname (CompanyName)
  3. …alle Kunden mit Firmensitz (Country) in Deutschland (Germany)
  4. …alle Bestellungen die als Zielland (ShipCountry) die USA haben.
  5. …alle Bestellungen mit einem Frachtgewicht (Freight) größer als 200 und kleiner als 300, sortiert nach Frachtgewicht.

Aggregatfunktionen

Ermitteln Sie…

  1. …die Anzahl an Bestellungen je Zielland (ShipCountry)
  2. Sortieren Sie die Ausgabe der vorherigen Abfrage absteigend nach der Anzahl an Bestellungen.
  3. …vom Frachtgewicht Summe, Maximum, Minimum und Durchschnitt je Zielland (ShipCountry).
  4. Filtern Sie die Ausgabe der vorherigen Abfrage, sodass nur noch Zielländer mit einem durchschnittlichen Frachtgewicht > 50 (Freight) angezeigt werden.

Die nachfolgenden Aufgaben müssen mit Joins gelöst werden. Informieren Sie sich daher vorher, wie Joins funktionieren!

Joins

Produkteigenschaften

Über welche Spalten stehen die Produkt- (Products), die Kategorie- (Categories) und die Lieferantentabelle (Suppliers) in Relation?

  1. Erzeugen Sie eine Tabelle, die je Zeile den Produktnamen (ProductName) und den dazugehörigen Kategorienamen (CategoryName) enthält.
  2. In der gerade erstellten Tabelle soll zudem auch der Firmenname des Lieferanten (CompanyName) in einer Spalte angezeigt werden.
  3. In der gerade erstellten Tabelle sollen nur noch Produkte gelistet werden, deren Lieferant aus Frankreich (France) stammt.

Bestellungen

Über welche Spalten stehen Kunde (Customer) und dessen Bestellung (Orders) in Relation?

  1. Erzeugen Sie eine Tabelle bestehend aus Firmenname (CompanyName) des Kunden und der Anzahl von Bestellungen je Kunde.
  2. Welcher Kunde hat die wenigsten Bestellungen? (ohne SQL beantworten, nur ablesen)
  3. In der gerade erstellten Tabelle sollen nur noch Firmen mit mindestens 10 Bestellungen aufgelistet werden. Sortieren Sie absteigend nach der Anzahl.

Bestelldetails

In der Tabelle OrderDetails stehen je Bestellung die bestellten Produkte.

  1. Ermitteln Sie den Gesamtpreis je Bestellung (Produktpreis * Anzahl, also UnitPrice * Quantity). Der Einfachheit halber kann der Rabatt (Discount) ignoriert werden.
  2. Fügen Sie bei der gerade erstellten Tabelle auch den Firmennamen (CompanyName) des Kunden hinzu.
  3. Ermitteln Sie, wie viel Geld jeder Kunde insgesamt über alle Bestellungen ausgegeben hat.
  4. Ermitteln Sie, welches Produkt den größten Umsatz erzeugt hat und sortieren Sie es absteigend nach dem Umsatz. (Der Einfachheit halber kann der Rabatt (Discount) ignoriert werden.)
  5. Welches Produkt hat den größten Umsatz generiert? (ohne SQL beantworten, nur ablesen)
  6. Ermitteln Sie, wie oft jedes Produkt bestellt wurde und sortieren Sie es absteigend nach der Häufigkeit der Bestellungen.
  7. Welches Produkt ist das beliebteste? (ohne SQL beantworten, nur ablesen)

Views

  1. Erzeugen Sie aus der zuletzt erstellten Tabelle (also 6. von Bestelldetails) eine View mit Namen ProductPopularity
  2. Ermitteln Sie in dieser View alle Produkte mit mindestens 10 und höchstens 50 Bestellungen.
  3. Löschen Sie die View wieder.

Normalisierung

  1. Welche Probleme können auftreten, wenn Daten nicht korrekt normalisiert wurden?

Sie sehen in einer Tabelle die Spalte “Anschrift”. Nachfolgend zwei Zeilen aus dieser Spalte:

  • Technikumplatz 17, 09648 Mittweida
  • Str. der Nationen 62, 09111 Chemnitz

Teilen Sie diese Spalte in mehrere Spalten auf, sodass eine sinnvolle Verarbeitung in der Datenbank möglich ist (siehe auch: Normalform in der Vorlesung)

Zuletzt geändert: Montag, 4. Januar 2021, 10:48