Lernfeld 5

Software zur Verwaltung von Daten anpassen

Einführung & Wiederholung

Datenbanken verstehen und anwenden

Fachinformatiker Umschulung

Themenübersicht

Was behandeln wir in Lernfeld 5?

  1. Grundlagen von Datenbanken und DBMS
  2. Datenmodellierung mit ER-Modellen
  3. Das relationale Datenbankmodell
  4. SQL - Structured Query Language
  5. Normalisierung von Datenbanken
  6. Praktische Anwendung und Datenbank-Design

Lernziel: Am Ende dieses Lernfelds können Sie Datenbanken planen, erstellen und mit SQL-Abfragen verwalten.

Was sind Datenbanken?

Definition

Eine Datenbank ist eine organisierte Sammlung von strukturierten Daten, die elektronisch gespeichert und verwaltet werden.

Warum Datenbanken?

Beispiele aus der Praxis:

  • Online-Shop: Produkte, Kunden, Bestellungen
  • Bank: Konten, Transaktionen, Kundenprofile
  • Krankenhaus: Patientendaten, Behandlungen, Termine

Datenbankmanagementsysteme (DBMS)

Was ist ein DBMS?

Ein DBMS ist eine Software, die das Erstellen, Verwalten und Abfragen von Datenbanken ermöglicht.

Bekannte DBMS:

Aufgaben eines DBMS:

  • Daten speichern und abrufen
  • Benutzerverwaltung und Zugriffsrechte
  • Transaktionsverwaltung (ACID-Prinzipien)
  • Backup und Recovery
  • Optimierung von Abfragen

Datenmodellierung: ER-Modell

Entity-Relationship-Modell

Das ER-Modell ist eine grafische Methode zur konzeptionellen Planung von Datenbanken.

Grundelemente der Chen-Notation:

ER-Diagramm in Chen-Notation:

    ( Name )     ( Email )
       │            │
       │            │
    ┌──┴────────────┴──┐
    │                  │
    │      KUNDE       │
    │                  │
    └──────┬───────────┘
           │
    (KundenID)
           │
           │ 1
           │
       ┌───┴───┐
       │       │
       │tätigt │  ◁── Raute
       │       │
       └───┬───┘
           │ n
           │
    ┌──────┴───────────┐
    │                  │
    │   BESTELLUNG     │
    │                  │
    └──┬───────┬───────┘
       │       │
 (BestellID) ( Datum )
                

Legende: Unterstrichene Attribute = Primärschlüssel

Kardinalitäten in Beziehungen

Was sind Kardinalitäten?

Kardinalitäten beschreiben, wie viele Entitäten an einer Beziehung beteiligt sein können.

Typen von Kardinalitäten:

1:1 (Eins-zu-Eins)

Ein Datensatz in Tabelle A gehört zu genau einem Datensatz in Tabelle B.

Beispiel: Person - Personalausweis

┌────────┐       ┌────────┐       ┌────────────┐
│ PERSON │───1───│  hat   │───1───│ AUSWEIS    │
└────────┘       └────────┘       └────────────┘
                

1:n (Eins-zu-Viele)

Ein Datensatz in Tabelle A kann zu mehreren Datensätzen in Tabelle B gehören.

Beispiel: Kunde - Bestellungen

┌────────┐       ┌────────┐       ┌────────────┐
│ KUNDE  │───1───│ tätigt │───n───│ BESTELLUNG │
└────────┘       └────────┘       └────────────┘
                

m:n (Viele-zu-Viele)

Mehrere Datensätze in Tabelle A können zu mehreren Datensätzen in Tabelle B gehören.

Beispiel: Studenten - Kurse

┌─────────┐       ┌────────┐       ┌──────┐
│ STUDENT │───m───│ belegt │───n───│ KURS │
└─────────┘       └────────┘       └──────┘
                

Hinweis: m:n Beziehungen werden in Datenbanken über eine Zwischentabelle aufgelöst!

Das Relationale Datenbankmodell

Vom ER-Modell zur Datenbank

Das relationale Modell ist die technische Umsetzung des ER-Modells in Tabellen.

Grundprinzipien:

Beispiel-Tabelle: Kunden

KundenID Name Stadt PLZ
1 Müller Hamburg 20095
2 Schmidt Berlin 10115
3 Meyer München 80331

Schlüssel in Datenbanken

Primärschlüssel (Primary Key - PK)

Fremdschlüssel (Foreign Key - FK)

Beispiel:

Kunden                          Bestellungen
─────────────────              ────────────────────────
KundenID (PK)                  BestellID (PK)
Name                           KundenID (FK) ──┐
Stadt                          Datum           │
PLZ                            Betrag          │
       ▲                                       │
       └───────────────────────────────────────┘
                

SQL - Structured Query Language

Was ist SQL?

SQL ist eine standardisierte Sprache zur Verwaltung und Abfrage von relationalen Datenbanken.

SQL-Kategorien:

Grundlegende SQL-Syntax:

-- Kommentare beginnen mit zwei Bindestrichen SELECT spalte1, spalte2 FROM tabellenname WHERE bedingung ORDER BY spalte1;

Tabellen erstellen mit CREATE TABLE

Syntax:

CREATE TABLE tabellenname ( spalte1 datentyp constraints, spalte2 datentyp constraints, ... PRIMARY KEY (spalte1) );

Wichtige Datentypen:

Praktisches Beispiel:

CREATE TABLE Kunden ( KundenID INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(100) NOT NULL, Email VARCHAR(100) UNIQUE, Stadt VARCHAR(50), PLZ VARCHAR(5), Registriert DATE DEFAULT CURRENT_DATE );

Daten abfragen mit SELECT

Grundlegende SELECT-Abfrage:

-- Alle Spalten aller Zeilen SELECT * FROM Kunden; -- Bestimmte Spalten SELECT Name, Stadt FROM Kunden; -- Mit Bedingung SELECT Name, Email FROM Kunden WHERE Stadt = 'Berlin'; -- Sortiert SELECT Name, PLZ FROM Kunden ORDER BY Name ASC;

WHERE-Bedingungen:

Daten manipulieren

INSERT - Daten einfügen:

-- Alle Spalten INSERT INTO Kunden (Name, Email, Stadt, PLZ) VALUES ('Weber', 'weber@email.de', 'Köln', '50667'); -- Mehrere Zeilen gleichzeitig INSERT INTO Kunden (Name, Stadt) VALUES ('Fischer', 'Stuttgart'), ('Wagner', 'Düsseldorf'), ('Becker', 'Leipzig');

UPDATE - Daten ändern:

-- Einzelne Zeile ändern UPDATE Kunden SET Email = 'neue.email@domain.de' WHERE KundenID = 5; -- Mehrere Spalten ändern UPDATE Kunden SET Stadt = 'Frankfurt', PLZ = '60311' WHERE Name = 'Weber';

DELETE - Daten löschen:

-- Bestimmte Zeilen löschen DELETE FROM Kunden WHERE KundenID = 10; -- VORSICHT: Ohne WHERE werden ALLE Zeilen gelöscht! DELETE FROM Kunden; -- Nicht ohne WHERE verwenden!

Tabellen verknüpfen mit JOINs

Was sind JOINs?

JOINs kombinieren Daten aus mehreren Tabellen basierend auf einer Beziehung.

INNER JOIN:

-- Nur Zeilen, die in beiden Tabellen existieren SELECT Kunden.Name, Bestellungen.Datum, Bestellungen.Betrag FROM Kunden INNER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;

LEFT JOIN:

-- Alle Zeilen aus der linken Tabelle, auch ohne Match SELECT Kunden.Name, Bestellungen.Datum FROM Kunden LEFT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;

Merkhilfe: INNER JOIN zeigt nur Übereinstimmungen. LEFT JOIN zeigt alle aus der linken Tabelle, auch wenn keine Übereinstimmung existiert.

Normalisierung von Datenbanken

Was ist Normalisierung?

Normalisierung ist der Prozess, Datenbanken so zu strukturieren, dass Redundanzen vermieden und Anomalien verhindert werden.

Ziele der Normalisierung:

Die Normalformen:

Erste Normalform (1NF)

Regel:

Jedes Attribut darf nur atomare (unteilbare) Werte enthalten.

Beispiel - Nicht in 1NF:

KundenID Name Telefonnummern
1 Müller 0123-456789, 0987-654321

In 1NF überführt:

KundenID Name Telefonnummer
1 Müller 0123-456789
1 Müller 0987-654321

Problem gelöst: Jedes Feld enthält nur einen einzelnen Wert.

Zweite Normalform (2NF)

Regel:

Die Tabelle muss in 1NF sein UND jedes Nicht-Schlüssel-Attribut muss vom gesamten Primärschlüssel abhängig sein.

Beispiel - Nicht in 2NF:

BestellID ProduktID Menge Produktname
1 101 2 Laptop
2 101 1 Laptop

Problem: Produktname ist nur von ProduktID abhängig, nicht vom gesamten Schlüssel (BestellID + ProduktID).

In 2NF überführt - Zwei Tabellen:

Tabelle Bestellpositionen:

BestellID ProduktID Menge
1 101 2

Tabelle Produkte:

ProduktID Produktname
101 Laptop

Dritte Normalform (3NF)

Regel:

Die Tabelle muss in 2NF sein UND es dürfen keine transitiven Abhängigkeiten existieren.

Beispiel - Nicht in 3NF:

KundenID Name PLZ Stadt
1 Müller 20095 Hamburg
2 Schmidt 20095 Hamburg

Problem: Stadt ist von PLZ abhängig, PLZ ist von KundenID abhängig = transitive Abhängigkeit.

In 3NF überführt:

Tabelle Kunden:

KundenIDNamePLZ
1Müller20095

Tabelle Orte:

PLZStadt
20095Hamburg

Datenbankdiagramme in SSMS

Was sind Datenbankdiagramme?

Datenbankdiagramme sind die visuelle Darstellung des relationalen Modells in SQL Server Management Studio (SSMS).

Was zeigt ein Datenbankdiagramm?

Erstellen in SSMS:

  1. Objekt-Explorer öffnen
  2. Datenbank auswählen
  3. Rechtsklick auf "Datenbankdiagramme"
  4. "Neues Datenbankdiagramm" wählen
  5. Tabellen auswählen und hinzufügen

Tipp: Datenbankdiagramme helfen beim Verstehen komplexer Datenbank-Strukturen und bei der Dokumentation.

Aggregatfunktionen in SQL

Was sind Aggregatfunktionen?

Funktionen, die mehrere Zeilen zu einem Ergebnis zusammenfassen.

Wichtige Aggregatfunktionen:

-- Anzahl der Zeilen SELECT COUNT(*) FROM Kunden; -- Summe SELECT SUM(Betrag) FROM Bestellungen; -- Durchschnitt SELECT AVG(Betrag) FROM Bestellungen; -- Minimum und Maximum SELECT MIN(Betrag), MAX(Betrag) FROM Bestellungen;

GROUP BY - Gruppierung:

-- Bestellungen pro Kunde zählen SELECT KundenID, COUNT(*) as AnzahlBestellungen FROM Bestellungen GROUP BY KundenID; -- Gesamtumsatz pro Kunde SELECT KundenID, SUM(Betrag) as Gesamtumsatz FROM Bestellungen GROUP BY KundenID;

HAVING - Bedingung für Gruppen:

-- Nur Kunden mit mehr als 5 Bestellungen SELECT KundenID, COUNT(*) as Anzahl FROM Bestellungen GROUP BY KundenID HAVING COUNT(*) > 5;

Quiz: Grundlagen

Was ist der Unterschied zwischen DBMS und Datenbank?

A) Es gibt keinen Unterschied, die Begriffe sind synonym.
B) Ein DBMS ist die Software zur Verwaltung, eine Datenbank ist die Sammlung der Daten.
C) Eine Datenbank ist die Software, ein DBMS ist die Hardware.
D) DBMS ist nur für relationale Datenbanken, Datenbank ist der Oberbegriff.

Quiz: Schlüssel

Welche Aussage über Primärschlüssel ist FALSCH?

A) Ein Primärschlüssel muss eindeutig sein.
B) Ein Primärschlüssel darf nicht NULL sein.
C) Eine Tabelle kann mehrere Primärschlüssel haben.
D) Ein Primärschlüssel kann aus mehreren Spalten bestehen (zusammengesetzter Schlüssel).

Quiz: SQL

Welche SQL-Anweisung löscht alle Kunden aus Hamburg?

A) DELETE Kunden WHERE Stadt = 'Hamburg';
B) DELETE FROM Kunden WHERE Stadt = 'Hamburg';
C) REMOVE FROM Kunden WHERE Stadt = 'Hamburg';
D) DROP Kunden WHERE Stadt = 'Hamburg';

Praxisaufgabe: Bibliothekssystem

Aufgabenstellung:

Entwerfen Sie ein einfaches Datenbanksystem für eine Bibliothek mit folgenden Anforderungen:

Anforderungen:

  • Bücher haben einen Titel, ISBN, Autor und Erscheinungsjahr
  • Mitglieder haben einen Namen, eine Mitgliedsnummer und ein Registrierungsdatum
  • Mitglieder können Bücher ausleihen
  • Für jede Ausleihe soll das Ausleihdatum und Rückgabedatum gespeichert werden

Aufgaben:

  1. Erstellen Sie ein ER-Diagramm
  2. Bestimmen Sie die Kardinalitäten
  3. Überführen Sie das Modell in Tabellen
  4. Schreiben Sie CREATE TABLE Statements
  5. Fügen Sie Testdaten ein
  6. Schreiben Sie eine Abfrage: "Welche Bücher hat Mitglied X ausgeliehen?"

Lösung: ER-Modell Bibliothek

ER-Modell Bibliothek (Chen-Notation):

( Name )                                      ( Titel )
   │                                             │
   │        ( RegDatum )                         │
   │            │                           ( Autor )
   │            │                                │
┌──┴────────────┴──┐                      ┌─────┴──────┐
│                  │                      │            │
│    MITGLIED      │                      │    BUCH    │
│                  │                      │            │
└────────┬─────────┘                      └─────┬──────┘
         │                                      │
   (MitgliedsNr)                            (ISBN)
         │                                      │
         │ 1                                    │ 1
         │                                      │
         │        ┌──────────────┐              │
         └────────│              │──────────────┘
                  │   AUSLEIHE   │
                  │              │
                  └──────┬───────┘
                         │
              ┌──────────┼──────────┐
              │          │          │
       ( Ausleihdatum ) (AusleiheID) ( Rückgabedatum )
                

Entitäten und Attribute:

MITGLIED: MitgliedsNr, Name, Registrierungsdatum

BUCH: ISBN, Titel, Autor

AUSLEIHE: AusleiheID, Ausleihdatum, Rückgabedatum

Beziehungen:

Lösung: SQL CREATE Statements

CREATE TABLE Buecher ( ISBN VARCHAR(13) PRIMARY KEY, Titel VARCHAR(200) NOT NULL, Autor VARCHAR(100) NOT NULL, Erscheinungsjahr INT ); CREATE TABLE Mitglieder ( MitgliedsNr INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(100) NOT NULL, Registrierungsdatum DATE DEFAULT CURRENT_DATE ); CREATE TABLE Ausleihen ( AusleiheID INT PRIMARY KEY AUTO_INCREMENT, MitgliedsNr INT NOT NULL, ISBN VARCHAR(13) NOT NULL, Ausleihdatum DATE NOT NULL, Ruckgabedatum DATE, FOREIGN KEY (MitgliedsNr) REFERENCES Mitglieder(MitgliedsNr), FOREIGN KEY (ISBN) REFERENCES Buecher(ISBN) );

Lösung: Testdaten und Abfragen

Testdaten einfügen:

INSERT INTO Buecher VALUES ('978-3-12345-678-9', 'SQL für Einsteiger', 'Max Mustermann', 2020), ('978-3-98765-432-1', 'Datenbanken verstehen', 'Anna Schmidt', 2021); INSERT INTO Mitglieder (Name) VALUES ('Peter Weber'), ('Lisa Müller'); INSERT INTO Ausleihen (MitgliedsNr, ISBN, Ausleihdatum) VALUES (1, '978-3-12345-678-9', '2024-01-15'), (1, '978-3-98765-432-1', '2024-02-01'), (2, '978-3-12345-678-9', '2024-02-10');

Abfrage: Bücher von Mitglied 1:

SELECT Mitglieder.Name, Buecher.Titel, Ausleihen.Ausleihdatum FROM Ausleihen INNER JOIN Mitglieder ON Ausleihen.MitgliedsNr = Mitglieder.MitgliedsNr INNER JOIN Buecher ON Ausleihen.ISBN = Buecher.ISBN WHERE Mitglieder.MitgliedsNr = 1;

Best Practices für Datenbankdesign

Namenskonventionen:

Datentypen richtig wählen:

Weitere Tipps:

Häufige Fehler vermeiden

SQL-Fehler:

Fehler 1: DELETE/UPDATE ohne WHERE

-- FALSCH: Löscht ALLE Datensätze! DELETE FROM Kunden; -- RICHTIG: Mit WHERE-Bedingung DELETE FROM Kunden WHERE KundenID = 5;

Fehler 2: Strings ohne Anführungszeichen

-- FALSCH SELECT * FROM Kunden WHERE Stadt = Berlin; -- RICHTIG SELECT * FROM Kunden WHERE Stadt = 'Berlin';

Design-Fehler:

Weiterführende Themen

Was kommt noch in Lernfeld 5?

Für die Praxis:

Zusammenfassung

Was haben wir gelernt?

Konzeptionelle Ebene:

  • ER-Modelle zur Planung von Datenbanken
  • Entitäten, Attribute, Beziehungen und Kardinalitäten

Logische Ebene:

  • Relationales Modell mit Tabellen, Schlüsseln und Beziehungen
  • Normalisierung (1NF, 2NF, 3NF)

Technische Ebene:

  • SQL-Grundlagen: CREATE, SELECT, INSERT, UPDATE, DELETE
  • JOINs zum Verknüpfen von Tabellen
  • Aggregatfunktionen und Gruppierungen

Nächste Schritte:

Übung macht den Meister! Erstellen Sie eigene Datenbanken, experimentieren Sie mit SQL und vertiefen Sie Ihr Wissen durch praktische Anwendung.

Ressourcen und Übungsmaterial

Online-Übungsplattformen:

Tools zum Üben:

Empfohlene Übungen:

Vielen Dank!

Fragen?

Nutzen Sie die Gelegenheit, Unklarheiten zu beseitigen.

Für neue Teilnehmer:

Willkommen im Lernfeld 5! Scheuen Sie sich nicht, Fragen zu stellen.

Für die Wiederholer:

Gibt es Themen, die vertieft werden sollten?

Viel Erfolg bei der weiteren Arbeit mit Datenbanken!