SQL Schnellstart – Coding-Challenge: Ingenieursbüro Query & Querbau – Teil1

Bisher hast du sehr viel über SQL und Datenbanken gelernt. Zum Abschluss bearbeiten wir gemeinsam noch mal ein kleines Projekt. Hier kannst du dein Wissen unter Beweis stellen.

Ingenieursbüro Query & Querbau

Du bist jetzt ein gut ausgebildeter Datenbankentwickler. Das Ingenieursbüro "Query & Querbau" möchte weg vom ganzen Papierkram und hin zur Digitalisierung - Industrie 4.0. Für diese digitale Transformation sollst du diesem Unternehmen bei der Digitalisierung der Finanzen helfen.

Aufgabe 1 - Klienten- und Umsatztabelle erstellen

Das Ingenieursbüro "Query & Querbau" hatte die Daten ihrer Klienten zuvor immer in einer seitenweise auf Papier fortgeführten Liste gespeichert. Dort befand sich der Vor- und Nachname des Auftraggebers (Privatperson) bzw. Ansprechpartner (für ein Unternehmen), Telefonnummer und wenn es sich um einen Auftrag eines Unternehmens handelt, dann noch der Firmenname.

Auf einer anderen Liste wurden die Umsätze festgehalten. Dort wurde der Projektname, Ansprechpartner und der Umsatz in Euro notiert.

Das ist ein riesiger Bürokratie-Aufwand und hat in der Vergangenheit des Unternehmens "Query & Querbau" bereits häufig zu Verwechselungen geführt, weil zwei Ansprechpartner für verschiedene Unternehmen denselben Namen hatten und so ein Projekt nicht mehr zugeordnet werden konnte.

Was müssen wir jetzt machen? Wir müssen zwei Tabellen erstellen "Klienten" sowie "Umsätze" und außerdem das Problem der Verwechslungsgefahr lösen.

Ein Projekt in der "Umsätze"-Tabelle ist genau einem Klienten zugeordnet. Zwischen diesen Tabellen herrscht also eine Beziehung.

Wie können wir jetzt sicherstellen, dass es hier nicht mehr zu einer Verwechselung der Klienten für ein Projekt gibt? Mit Primär- und Fremdschlüsseln. Wir weisen jedem Klienten einen einzigartigen Primärschlüssel zu und in der Umsatztabelle speichern wir dann den jeweiligen Fremdschlüssel.

Deine Aufgabe: 

Erstelle eine Tabelle "Klienten" mit folgenden Attributen:

  • KlientenID,
  • Vorname,
  • Nachname,
  • Telefonnummer und
  • Firmenname

Hinweis: "KlientenID" soll in dieser Tabelle der Primärschlüssel sein.

Erstelle eine weitere Tabelle "Umsätze" mit den Attributen:

  • Projektname,
  • Umsatz und
  • KlientenID

Hinweis: Diesmal ist "KlientenID" ein Fremdschlüssel der auf den Primärschlüssel "KlientenID" von "Klienten" verweist.

Weiterer Hinweis: Denke bei den Attributen auch auf die richtigen Datentypen (TEXT, DOUBLE, INTEGER). Stelle dir dafür die Frage, welche Daten im jeweiligen Attribut gespeichert werden sollen.

Wenn du überprüfen möchtest, ob die Tabellen korrekt angelegt wurden, füge folgenden Code an das Ende deines Code-Editors, um alle Tabellennamen der Datenbank aufzulisten.

SELECT name FROM sqlite_master WHERE type = "table"

Deine Tabellen, werden an das Ende der ausgegebenen Liste angefügt.

[lp_spoiler title="Lösung anzeigen"]

Lösung:


1. Erstellen der Klienten-Tabelle

CREATE TABLE Klienten (
	KlientenID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
	Vorname TEXT,
	Nachname TEXT,
	Telefonnummer TEXT,
        Firmenname TEXT
);

2. Erstellen der Umsatz-Tabelle

CREATE TABLE Umsätze (
	Projektname TEXT,
	Umsatz DOUBLE,
	KlientenID INTEGER,
	FOREIGN KEY (KlientenID) REFERENCES Klienten(KlientenID)
);

Wenn du überprüfen möchtest, ob die Tabellen korrekt angelegt wurden, füge folgenden Code an das Ende deines Code-Editors, um alle Tabellennamen der Datenbank aufzulisten.

SELECT name FROM sqlite_master WHERE type = "table"

Deine Tabellen, werden an das Ende der ausgegebenen Liste angefügt.

[/lp_spoiler]

In der nächsten Lektion geht es weiter mit Teil 2 der Coding-Challenge.