Aufgaben-Python/courses/ihk_ap1/10_relationales_datenmodell_und_erm/index.html

228 lines
19 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="de">
<head>
<link rel="icon" type="image/svg+xml" href="../../../assets/favicon.svg">
<meta charset="UTF-8">
<title>AP1 Modul 10: Relationales Datenmodell & ERM (LF 5)</title>
<link rel="stylesheet" href="../../../assets/style.css">
<link rel="stylesheet" href="../../../assets/ihk_tools/ihk_tools.css">
</head>
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../dashboard.html" class="ihk-btn ihk-btn-secondary text-sm">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">ZPA 2. Auflage Standard</span>
</div>
<h1 class="text-3xl font-extrabold text-sky-400 mb-2">AP1 Modul 10: Relationales Datenmodell & ERM</h1>
<p class="text-slate-300 text-lg leading-relaxed mb-6">Konzeptioneller Datenbankentwurf: Chen- & Krähenfuß-Notation, Kardinalitäten, Normalisierung (1NF–3NF), Primär-/Fremdschlüssel & referenzielle Integrität (ohne SQL!).</p>
<!-- Fachtheorie & Wissen -->
<div style="background: #1e293b; border: 1px solid #334155; border-radius: 12px; padding: 24px; margin-bottom: 24px;">
<div style="background: #0f172a; border-left: 4px solid #f59e0b; padding: 16px; border-radius: 8px; margin-bottom: 20px;">
<h3 style="color: #fcd34d; margin-top: 0; display: flex; align-items: center; gap: 8px;">
<span>⚠️</span> Wichtiger ZPA-Reformhinweis (Katalog 2. Auflage, S. 5):
</h3>
<p style="color: #cbd5e1; line-height: 1.6; margin: 0;">
<strong>SQL-Abfragen wurden aus Teil 1 (AP1) komplett gestrichen!</strong> Laut offizieller Vorbemerkung der ZPA Nord-West ist SQL nun <em>ausschließlich</em> Gegenstand von Teil 2 (AP2). In der AP1 sind im Datenbankbereich lediglich <strong>einfache ER-Modelle</strong>, <strong>Normalisierung</strong> und das <strong>relationale Tabellenschema</strong> prüfungsrelevant.
</p>
</div>
<!-- Interaktives ER-Modell Studio Launcher -->
<div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); border: 1px solid #38bdf8; border-radius: 8px; padding: 18px; margin: 20px 0; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px;">
<div>
<span class="ihk-badge" style="background: rgba(56, 189, 248, 0.2); color: #38bdf8; border: 1px solid rgba(56, 189, 248, 0.4); margin-bottom: 6px;">Interaktives Praxistool</span>
<h3 style="margin: 4px 0; color: #ffffff; font-size: 1.1rem;">📐 Interaktiver ER-Modell Editor</h3>
<p style="color: #cbd5e1; font-size: 0.86rem; margin: 0;">Entwerfe Entitäten, setze Primär- und Fremdschlüssel und teste Kardinalitäten (Chen, Krähenfuß, Min-Max) direkt im visuellen Canvas.</p>
</div>
<a href="../../../diagram_editor.html#er" target="_blank" class="ihk-btn ihk-btn-primary" style="text-decoration: none;">
<span>ER-Editor starten &rarr;</span>
</a>
</div>
<h2 style="color: #38bdf8; margin-top: 0;">🗂️ 1. Entity-Relationship-Modellierung (ERM)</h2>
<p style="color: #cbd5e1; line-height: 1.6;">
Das ER-Modell beschreibt die konzeptionelle Struktur einer Datenbank unabhängig vom konkreten Datenbank-Managementsystem (DBMS).
</p>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<table class="ihk-table">
<thead>
<tr><th>Konzept</th><th>Chen-Notation</th><th>Krähenfuß-Notation (Martin)</th></tr>
</thead>
<tbody>
<tr>
<td><strong>Entitätstyp</strong></td>
<td>Rechteck (z. B. <code>[Kunde]</code>)</td>
<td>Rechteckige Tabelle mit getrennter Kopfzeile für den Namen</td>
</tr>
<tr>
<td><strong>Attribute</strong></td>
<td>Ovale/Ellipsen, die an die Entität angebunden sind (PK ist <u>unterstrichen</u>)</td>
<td>Direkt als Textzeilen innerhalb des Kastenblocks (gekennzeichnet mit PK / FK)</td>
</tr>
<tr>
<td><strong>Beziehung</strong></td>
<td>Raute mit Verbindungslinien (z. B. <code>[Kunde] ──◇ kauft ── [Artikel]</code>)</td>
<td>Linie direkt zwischen den Tabellenkästen mit Symbolen an den Enden</td>
</tr>
<tr>
<td><strong>Kardinalitäten</strong></td>
<td>Beschriftung an den Linien: <code>1</code>, <code>n</code>, <code>m</code></td>
<td>Grafische Symbole: Strich (|) = eins, Kreis (O) = null/optional, Dreizack (Ψ) = viele</td>
</tr>
</tbody>
</table>
</div>
<h3 style="color: #cbd5e1; margin-top: 24px;">2. Transformationsregeln: ERM in Relationales Schema</h3>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<ul style="color: #cbd5e1; line-height: 1.8; margin: 0; padding-left: 20px;">
<li><strong>1:1-Beziehung:</strong> Der Primärschlüssel einer der beiden Tabellen wird als Fremdschlüssel (mit UNIQUE-Bedingung) in die andere Tabelle übernommen.</li>
<li><strong>1:n-Beziehung (Standard):</strong> Der Primärschlüssel der 1-Seite (Elterntabelle) wandert als <strong>Fremdschlüssel (FK)</strong> in die Tabelle der n-Seite (Kindtabelle). <em>Es wird keine Zwischentabelle benötigt!</em></li>
<li><strong>n:m-Beziehung (Viele-zu-Viele):</strong> Kann im relationalen Modell nicht direkt abgebildet werden! Es muss zwingend eine <strong>Verknüpfungstabelle (Zwischentabelle)</strong> angelegt werden. Diese enthält die Primärschlüssel beider Ursprungstabellen als Fremdschlüssel, die gemeinsam den zusammengesetzten Primärschlüssel bilden, sowie eventuelle Beziehungsattribute (z. B. <code>arbeitsstunden</code> oder <code>menge</code>).</li>
</ul>
</div>
<h3 style="color: #cbd5e1; margin-top: 24px;">3. Normalisierung (1NF bis 3NF)</h3>
<p style="color: #cbd5e1; line-height: 1.6;">
Die Normalisierung verhindert Datenredundanzen und Anomalien (Einfüge-, Änderungs- und Löschanomalien):
</p>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<ol style="color: #cbd5e1; line-height: 1.8; margin: 0; padding-left: 20px;">
<li><strong>1. Normalform (1NF) - Atomarität:</strong> Jedes Attribut enthält nur elementare, unteilbare Werte (keine Listen, Kommagetrennte Strings oder Wiederholgruppen wie <code>telefon1, telefon2</code>).</li>
<li><strong>2. Normalform (2NF) - Voll funktionale Abhängigkeit:</strong> Die Tabelle ist in 1NF und jedes Nichtschlüssel-Attribut hängt voll funktional vom <em>gesamten</em> Primärschlüssel ab (relevant bei zusammengesetzten Primärschlüsseln!). Attribute, die nur von einem Teil des Schlüssels abhängen, werden in eine eigene Tabelle ausgelagert.</li>
<li><strong>3. Normalform (3NF) - Keine transitiven Abhängigkeiten:</strong> Die Tabelle ist in 2NF und kein Nichtschlüssel-Attribut hängt von einem anderen Nichtschlüssel-Attribut ab. Typisches Beispiel: Die Spalte <code>Ort</code> hängt von der <code>PLZ</code> ab und muss in eine separate Relation <code>plz_orte(plz, ort)</code> ausgelagert werden.</li>
</ol>
</div>
<h3 style="color: #cbd5e1; margin-top: 24px;">4. Referenzielle Integrität & Datenvalidierung</h3>
<div style="background: #0f172a; padding: 16px; border-radius: 8px; margin: 12px 0;">
<ul style="color: #cbd5e1; line-height: 1.8; margin: 0; padding-left: 20px;">
<li><strong>Referenzielle Integrität:</strong> Stellt sicher, dass jeder Fremdschlüsselwert tatsächlich auf einen existierenden Primärschlüssel der Elterntabelle verweist (Verhinderung verwaister Datensätze). Optionen beim Löschen/Ändern: <em>CASCADE</em> (automatisches Weiterlöschen) oder <em>RESTRICT</em> (Löschen wird verboten, solange abhängige Daten existieren).</li>
<li><strong>Validierungsmethoden:</strong> Pflichtfeldprüfung (NOT NULL), Wertebereichsprüfung (Range Check z. B. Alter 18–67), Formatprüfung (Regex für E-Mail, IBAN) und Plausibilitätsprüfungen.</li>
</ul>
</div>
</div>
<!-- Authentische IHK-Prüfungsaufgaben -->
<div style="background: #1e293b; border: 1px solid #334155; border-radius: 12px; padding: 24px; margin: 32px 0;">
<h2 style="color: #38bdf8; margin-top: 0; font-size: 1.4rem; display: flex; align-items: center; gap: 10px;">
<span>📝</span> Authentische IHK-Prüfungsaufgaben zu Datenmodellen & ERM
</h2>
<p style="color: #94a3b8; font-size: 0.9rem; margin-bottom: 20px;">
Aufgaben nach ZPA-Standard: Normalisierung, Kardinalitäten und relationale Integrität (ohne SQL).
</p>
<div style="display: flex; flex-direction: column; gap: 20px;">
<!-- Aufgabe 1: Normalisierung -->
<div class="ihk-exam-task" data-title="Normalisierung 1NF bis 3NF" data-points="12" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">Datenbank Normalisierung 1NF bis 3NF</strong>
<span class="ihk-badge ihk-badge-success">12 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Gegeben ist eine unnormalisierte Bestelltabelle: bestellung (bestell_nr, datum, kunden_name, kunden_plz, kunden_ort, artikel_liste, preise).
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Definieren Sie die 1., 2. und 3. Normalform und überführen Sie das Schema schrittweise in die 3. Normalform.
</p>
<textarea class="ihk-input" rows="4" placeholder="Definitionen und Tabellenstrukturen 1NF, 2NF, 3NF..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
1. Normalform (1NF): Alle Attribute sind atomar (jede Zelle enthält nur einen elementaren Wert; keine Wiederholgruppen). Tabelle aufteilen in Bestelldaten und einzelne Bestellpositionen (artikel_liste/preise auflösen). (4 Pkt.)
2. Normalform (2NF): Das Schema ist in 1NF und jedes Nichtschlüssel-Attribut ist vom gesamten Primärschlüssel voll funktional abhängig (keine Abhängigkeit von Teilen eines zusammengesetzten Schlüssels). Trennung von Bestellpositionen und Artikelstammdaten. (4 Pkt.)
3. Normalform (3NF): Das Schema ist in 2NF und es existieren keine transitiven Abhängigkeiten zwischen Nichtschlüssel-Attributen (Nichtschlüssel bestimmen keine anderen Nichtschlüssel). Auslagerung von Ort über die PLZ (kunden_name -> kunden_plz -> kunden_ort auflösen). (4 Pkt.)
</div>
</details>
</div>
<!-- Aufgabe 2: ERM Kardinalitäten n:m -->
<div class="ihk-exam-task" data-title="ER-Modellierung Kardinalitäten" data-points="8" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">ER-Modellierung Kardinalitäten & n:m-Auflösung</strong>
<span class="ihk-badge ihk-badge-success">8 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Modellieren Sie die Beziehung zwischen "Projekt" und "Mitarbeiter": Ein Projekt kann von mehreren Mitarbeitern bearbeitet werden; ein Mitarbeiter kann in mehreren Projekten mitarbeiten. Zu jeder Mitarbeit wird die Anzahl der investierten Arbeitsstunden erfasst.
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Geben Sie den Beziehungstyp (Kardinalität) an und erklären Sie, wie diese Beziehung in einem relationalen Datenbankschema aufgelöst wird.
</p>
<textarea class="ihk-input" rows="3" placeholder="Kardinalität und Zwischentabelle beschreiben..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Kardinalität: n:m-Beziehung (Many-to-Many). (2 Pkt.)
Auflösung im relationalen Schema: Eine n:m-Beziehung kann nicht direkt über Fremdschlüssel in den beiden Haupttabellen abgebildet werden. Es wird eine Zwischentabelle / Verknüpfungstabelle (z. B. projekt_mitarbeiter) benötigt. (3 Pkt.)
Struktur der Zwischentabelle: Enthält als Fremdschlüssel projekt_id und mitarbeiter_id (bilden gemeinsam den zusammengesetzten Primärschlüssel) sowie das Beziehungsattribut arbeitsstunden. (3 Pkt.)
</div>
</details>
</div>
<!-- Aufgabe 3: Chen vs Krähenfuß -->
<div class="ihk-exam-task" data-title="Chen vs Krähenfuß" data-points="8" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">ER-Modellierung Chen vs. Krähenfuß-Notation</strong>
<span class="ihk-badge ihk-badge-success">8 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
Zur Dokumentation eines Kundensystems werden Entity-Relationship-Modelle (ERM) eingesetzt.
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Vergleichen Sie die Chen-Notation mit der Krähenfuß-Notation (Martin-Notation) hinsichtlich der Darstellung von Entitäten, Attributen und Kardinalitäten (1:1, 1:n, n:m).
</p>
<textarea class="ihk-input" rows="3" placeholder="Vergleich der Notationen..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Entitäten: Bei Chen als Rechteck dargestellt; bei Krähenfuß ebenfalls als Rechteck/Tabelle mit getrenntem Kopf für den Entitätsnamen. (2 Pkt.)
Attribute: Bei Chen als Ellipsen, die mit der Entität verbunden sind (Primärschlüssel unterstrichen); bei Krähenfuß direkt als Zeilen innerhalb des Entitätsrechtecks aufgelistet (PK/FK gekennzeichnet). (3 Pkt.)
Kardinalitäten: Bei Chen über Rauten als Beziehungselemente mit Beschriftung 1, n, m an den Kanten; bei Krähenfuß direkt an den Linienenden über Symbole (Strich = genau eins, Kreis = optional/null, Dreizack/Krähenfuß = viele). (3 Pkt.)
</div>
</details>
</div>
<!-- Aufgabe 4: Referenzielle Integrität -->
<div class="ihk-exam-task" data-title="Referenzielle Integrität" data-points="8" style="background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<strong style="color: #38bdf8; font-size: 1.05rem;">Relationales Datenmodell & Referenzielle Integrität</strong>
<span class="ihk-badge ihk-badge-success">8 Punkte</span>
</div>
<div style="background: #1e293b; border-left: 4px solid #0284c7; padding: 12px 16px; border-radius: 6px; margin-bottom: 14px; color: #cbd5e1; font-size: 0.9rem; font-style: italic;">
In einer relationalen Datenbank werden Kundendaten und deren Bestellungen verwaltet.
</div>
<p style="color: #f8fafc; font-size: 0.95rem; line-height: 1.6; margin-bottom: 16px;">
Definieren Sie die Begriffe Primärschlüssel, Fremdschlüssel und Referenzielle Integrität und erklären Sie, welche Gefahr droht, wenn die referenzielle Integrität verletzt wird.
</p>
<textarea class="ihk-input" rows="3" placeholder="Begriffe und Gefahren..."></textarea>
<details style="margin-top: 14px; background: #1e293b; padding: 12px 16px; border-radius: 6px; cursor: pointer;">
<summary style="font-weight: 600; color: #4ade80;">💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung</summary>
<div class="ihk-task-solution" style="margin-top: 10px; color: #cbd5e1; font-size: 0.9rem; line-height: 1.6; white-space: pre-line;">
Primärschlüssel (Primary Key): Ein Attribut oder eine minimale Attributkombination, die jeden Datensatz einer Tabelle eindeutig und unveränderlich identifiziert (Darf weder Duplikate noch NULL enthalten). (2 Pkt.)
Fremdschlüssel (Foreign Key): Ein Attribut in einer Relation, das auf den Primärschlüssel einer anderen (oder derselben) Relation verweist und logische Beziehungen herstellt. (2 Pkt.)
Referenzielle Integrität: Die Integritätsbedingung besagt, dass jeder Fremdschlüsselwert entweder NULL sein muss oder tatsächlich als gültiger Primärschlüsselwert in der referenzierten Elterntabelle existieren muss. (2 Pkt.)
Gefahr bei Verletzung: Entstehung von "verwaisten Datensätzen" (Orphan Records), z. B. Bestellungen ohne zugehörigen Kunden, was zu inkonsistenten Datenbeständen und Abstürzen in Auswertungen führt. (2 Pkt.)
</div>
</details>
</div>
</div>
</div>
<!-- Footer Navigation -->
<!-- Footer Navigation -->
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../09_netzplantechnik_und_projektmanagement/index.html" class="ihk-btn ihk-btn-secondary font-semibold">← Vorheriges Modul</a>
<a href="../../../dashboard.html" class="ihk-btn ihk-btn-secondary">🏠 Kursübersicht</a>
<a href="../11_subnetting_drill_master/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>
<script src="../../../assets/courses_manifest.js"></script>
<script src="../../../assets/course_sidebar.js"></script>
</body>
</html>