Kundenkontakte

Geschätzte Lektüre: 13 Minuten 105 Ansichten

Datenbank für Kundenkontakte

Szenario:
Ein kleiner Handwerksbetrieb möchte eine einfache Datenbank anlegen, um seine Kundenkontakte zu verwalten.

Folgende Infos sollen gespeichert werden:

  • Kunden: Vorname, Nachname, E-Mail, Telefonnummer
  • Kontaktnotizen: Datum des Kontakts, kurzer Notiztext (z. B. „Angebot angefragt“)

Aufgabenstellung:

  1. Entwerfe die Datenbank: Zeichne eine tabellarische Skizze und ein ER-Diagramm für die beiden benötigten Tabellen.
  2. Bestimme einen Primärschlüssel für jede Tabelle.
  3. Erkläre kurz:
    Wie verknüpfst du die Tabelle „Kontaktnotizen“ mit der Tabelle „Kunden“?
    (Welche Spalte wird dafür benötigt?)
  4. Schreibe die SQL-CREATE-Befehle für beide Tabellen (3–4 Spalten pro Tabelle).

Beispiel (als Hilfe):
Ein Kunde: Max Mustermann , m.mustermann@test.de , Tel. 0123/456789, hatte am 20.04.2026 einen Kontakt mit der Notiz „Möchte Rückruf bis morgen“.


-- =====================================================
-- KOMPLETTES SKRIPT mit Datenbank und allem
-- =====================================================

-- 1. Datenbank erstellen (falls nicht vorhanden)
CREATE DATABASE IF NOT EXISTS handwerksbetrieb;

-- 2. Diese Datenbank verwenden
USE handwerksbetrieb;

-- =====================================================
-- 3. Vorhandene Tabellen löschen (für sauberen Neustart)
-- =====================================================
DROP TABLE IF EXISTS kunden;
DROP TABLE IF EXISTS kontaktnotizen;

-- =====================================================
-- 4. Tabelle 'kunden' erstellen
-- =====================================================
CREATE TABLE kunden (
    id INT AUTO_INCREMENT PRIMARY KEY,
    vorname VARCHAR(100) NOT NULL,
    nachname VARCHAR(100) NOT NULL,
    email VARCHAR(150),
    telefon VARCHAR(50)
);

-- =====================================================
-- 5. Tabelle 'kontaktnotizen' erstellen (mit Fremdschlüssel)
-- =====================================================
CREATE TABLE kontaktnotizen (
    id INT AUTO_INCREMENT PRIMARY KEY,
    datum DATE NOT NULL,
    notiz_text TEXT NOT NULL,
    kunden_id INT NOT NULL,
    FOREIGN KEY (kunden_id) REFERENCES kunden(id)
);

-- =====================================================
-- 6. Fiktive Kundendaten einfügen (10 verschiedene Kunden)
-- =====================================================
INSERT INTO kunden (vorname, nachname, email, telefon) VALUES
('Anna', 'Schmidt', 'anna.schmidt@web.de', '0171 1234567'),
('Mehmet', 'Yılmaz', 'm.yilmaz@gmail.com', '0152 9876543'),
('Claudia', 'Weber', 'claudia.weber@freenet.de', '0160 4455667'),
('Sergej', 'Ivanov', 's.ivanov@mail.ru', '0157 3332211'),
('Lisa', 'Müller', 'lisa.mueller@icloud.com', '0176 5558899'),
('Thomas', 'Bauer', 'thomas.bauer@t-online.de', '0151 7773344'),
('Fatima', 'Al-Hassan', 'fatima.alh@outlook.com', '0162 9988776'),
('Jens', 'Wagner', 'jens.wagner@arcor.de', '0174 1122334'),
('Elena', 'Popova', 'elena.popova@gmail.com', '0155 6655443'),
('Mario', 'Rossi', 'm.rossi@libero.it', '0163 4477889');

-- =====================================================
-- 7. Fiktive Kontaktnotizen zu den Kunden einfügen
-- =====================================================

-- Kunde 1: Anna Schmidt
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-01-15', 'Angebot für Badsanierung angefragt', 1),
('2026-02-10', 'Angebot per E-Mail zugeschickt', 1),
('2026-03-05', 'Kunde möchte noch warten', 1);

-- Kunde 2: Mehmet Yılmaz
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-01-20', 'Notfall: Heizung ausgefallen – sofortiger Einsatz', 2),
('2026-01-21', 'Reparatur erfolgreich durchgeführt', 2),
('2026-04-01', 'Dankes-E-Mail erhalten', 2);

-- Kunde 3: Claudia Weber
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-02-18', 'Fenster austausch angefragt', 3),
('2026-03-10', 'Termin zur Besichtigung vereinbart: 20.03.2026', 3),
('2026-03-20', 'Besichtigung durchgeführt, Angebot wird erstellt', 3);

-- Kunde 4: Sergej Ivanov
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-01-05', 'Elektroinstallation im Neubau', 4),
('2026-01-25', 'Auftrag erteilt', 4),
('2026-02-15', 'Erste Rate von 2000€ gezahlt', 4),
('2026-03-30', 'Arbeiten abgeschlossen, Kunde ist zufrieden', 4);

-- Kunde 5: Lisa Müller
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-03-01', 'Angebot für Gartenhaus-Bodenplatte angefragt', 5),
('2026-03-14', 'Angebot zugeschickt', 5);

-- Kunde 6: Thomas Bauer
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-02-22', 'Wasserschaden in der Küche', 6),
('2026-02-23', 'Rohrbruch repariert', 6);

-- Kunde 7: Fatima Al-Hassan
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-04-05', 'Angebot für Wärmedämmung angefragt', 7);

-- Kunde 8: Jens Wagner
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-01-30', 'Sanierung des Badezimmers besprochen', 8),
('2026-02-28', 'Auftrag erteilt, Start: 15.03.2026', 8);

-- Kunde 9: Elena Popova (keine Notizen – zeigt, dass das erlaubt ist)

-- Kunde 10: Mario Rossi
INSERT INTO kontaktnotizen (datum, notiz_text, kunden_id) VALUES
('2026-03-25', 'Angebot für neuen Putz angefragt', 10),
('2026-04-10', 'Angebot zu teuer, aber Kunde kommt später zurück', 10);
-- =====================================================
-- Beispiel-Abfragen zum Testen
-- =====================================================

-- Alle Kunden anzeigen
SELECT * FROM kunden;

-- Nur Vor- und Nachname der Kunden
SELECT vorname, nachname FROM kunden;

-- Kunden mit E-Mail-Adresse ausgeben
SELECT nachname, email FROM kunden;

-- Kunde mit der ID 3
SELECT * FROM kunden WHERE id = 3;

-- Alle Kunden mit Nachname "Müller"
SELECT * FROM kunden WHERE nachname = 'Müller';

-- Notizen mit Datum nach dem 1. März 2026
SELECT * FROM kontaktnotizen WHERE datum > '2026-03-01';

-- Kunden sortiert nach Nachname (A–Z)
SELECT * FROM kunden ORDER BY nachname;

-- Absteigend nach ID
SELECT * FROM kunden ORDER BY id DESC;

-- Abfrage 1: Alle Kunden mit ihren Notizen (LEFT JOIN zeigt auch Kunden ohne Notizen)
SELECT 
    kunden.id AS KundenNr,
    kunden.vorname,
    kunden.nachname,
    kunden.email,
    kunden.telefon,
    kontaktnotizen.datum AS KontaktDatum,
    kontaktnotizen.notiz_text AS Notiz
FROM kunden
LEFT JOIN kontaktnotizen ON kunden.id = kontaktnotizen.kunden_id
ORDER BY kunden.nachname, kontaktnotizen.datum;

-- Abfrage 2: Statistik – Wie viele Notizen hat jeder Kunde?
SELECT 
    kunden.id,
    kunden.vorname,
    kunden.nachname,
    COUNT(kontaktnotizen.id) AS Anzahl_Notizen
FROM kunden
LEFT JOIN kontaktnotizen ON kunden.id = kontaktnotizen.kunden_id
GROUP BY kunden.id
ORDER BY Anzahl_Notizen DESC;

-- Abfrage 3: Nur Kunden, die mindestens eine Notiz haben (INNER JOIN)
SELECT DISTINCT
    kunden.vorname,
    kunden.nachname,
    kunden.telefon
FROM kunden
INNER JOIN kontaktnotizen ON kunden.id = kontaktnotizen.kunden_id;

-- Abfrage 4: Letzte 5 Kontaktnotizen (aktuellste zuerst)
SELECT 
    kunden.vorname,
    kunden.nachname,
    kontaktnotizen.datum,
    kontaktnotizen.notiz_text
FROM kontaktnotizen
JOIN kunden ON kontaktnotizen.kunden_id = kunden.id
ORDER BY kontaktnotizen.datum DESC
LIMIT 5;

Die Planung (Skizze & Erklärung)

Tabelle 1: kunden:

SpaltennameTypBeschreibungPrimärschlüssel?
idGanze ZahlEine eindeutige Nummer für jeden KundenJA
vornameTextVorname des KundenNein
nachnameTextNachname des KundenNein
emailTextE-Mail-AdresseNein
telefonTextTelefonnummer (Text, weil mit Vorwahl)Nein

Tabelle 2: kontaktnotizen:

SpaltennameTypBeschreibungPrimärschlüssel?
idGanze ZahlEindeutige Nummer für jede NotizJA
datumDatumWann war der Kontakt?Nein
notiz_textTextz.B. „Angebot angefragt“Nein
kunden_idGanze ZahlVerbindung zur Tabelle kundenNein (Fremdschlüssel)

Wie verknüpfst du die beiden Tabellen?

  • Ein Kunde kann viele Kontaktnotizen haben (z.B. erst „Angebot angefragt“, später „Auftrag erteilt“). Das nennt man 1 zu n (oder 1 zu viele).
  • Dafür brauchst du in der Tabelle kontaktnotizen eine zusätzliche Spalte (hier kunden_id).
  • In diese Spalte trägst du einfach die id aus der Tabelle kunden ein.
  • Beispiel:
    Kunde „Max Mustermann“ hat die id = 3.
    Dann schreibst du bei jeder Notiz, die zu Max gehört, in die Spalte kunden_id die Zahl 3 rein.

Erstelle die Tabelle kunden:

CREATE TABLE kunden (
    id INT AUTO_INCREMENT PRIMARY KEY,
    vorname VARCHAR(100) NOT NULL,
    nachname VARCHAR(100) NOT NULL,
    email VARCHAR(150),
    telefon VARCHAR(50)
);

Erstelle die Tabelle kontaktnotizen:

CREATE TABLE kontaktnotizen (
    id INT AUTO_INCREMENT PRIMARY KEY,
    datum DATE NOT NULL,
    notiz_text TEXT NOT NULL,
    kunden_id INT NOT NULL,
    FOREIGN KEY (kunden_id) REFERENCES kunden(id)
);
Dieses Dokument teilen

Kundenkontakte

Oder Link kopieren

INHALT

Abonnieren

×
Cancel