Files
mindflux/src/main/resources/static/finalflux/systemintegration/datenbank.html
T
AliceDarkest 34b050503d Rechtstexte, FinalFlux-Überarbeitung, neue Login-Optik, Konto-Löschung-Fix, BTTF-Farbrelaunch
- Rechtsseiten: Impressum-Platzhalter + echte Nutzungsbedingungen/AGB,
  Datenschutz (DSGVO) und Richtlinien; LegalController/ImpressumController,
  Footer app-weit verlinkt, Seiten als permitAll freigegeben.
- FinalFlux: 28 Themen / ~742 Fragen überarbeitet (plausible Distraktoren statt
  Dummy-Antworten, echte Erklärungen) + echte Lehrtexte je Seite;
  Netzwerktopologien mit Inline-SVG-Diagrammen (Stern/Bus/Ring/Mesh/Baum).
- Login/Registrierung als kombiniertes Dual-Panel (Slide-Overlay + Neon-Hover-
  Button), ausgelagert nach auth.css; Register-Duplikat -> /?registerError.
- Konto löschen repariert: @Transactional + Löschen von Spielständen,
  Achievements und Profilbild-Datei (DSGVO Art. 17). Impressum-Zurück-Link
  login-abhängig.
- App-weiter Farb-Relaunch auf "Back to the Future"-Palette: Feuer-Amber primär
  + Flux-Blau sekundär, warmer Glow; Dark/Light bleiben. Spiele-Feedback ohne
  Grün: richtig = Blau + Haken, falsch = Rot + Kreuz (neue Tokens
  --success/--danger/--secondary). Legacy-Cyan in style.css auf Variablen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 19:08:05 +02:00

137 lines
7.9 KiB
HTML
Raw 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" data-theme="dark">
<head>
<meta charset="UTF-8">
<title>Datenbanksysteme - FinalFlux AP1</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/finalflux.css">
<script src="/js/theme.js"></script>
</head>
<body class="finalflux-page">
<div class="mf-theme-float"><button class="mf-theme"></button></div>
<main>
<a href="/finalflux" class="back-link">Zurück zu FinalFlux</a>
<h1>Datenbanksysteme</h1>
<section>
<h2>Lernfokus</h2>
<p>Trainiere relationale Grundlagen, Schlüssel, SQL-Begriffe und sicheren Betrieb.</p>
<ul class="key-list">
<li>Tabellen, Datensätze und Schlüssel verstehen.</li>
<li>SQL-Grundoperationen einordnen.</li>
<li>Backup, Rechte und Datenschutz berücksichtigen.</li>
</ul>
</section>
<section>
<h2>Relationale Datenbank: Tabellen und Datensätze</h2>
<p>Eine <strong>relationale Datenbank</strong> speichert Daten in <strong>Tabellen</strong> (auch Relationen genannt). Jede Tabelle besteht aus Zeilen und Spalten und enthält gleichartige Informationen, zum Beispiel eine Tabelle für Kunden und eine weitere für Bestellungen. Verwaltet wird das Ganze von einem <strong>DBMS</strong> (Datenbankmanagementsystem) wie MySQL, MariaDB oder PostgreSQL.</p>
<ul class="key-list">
<li><strong>Tabelle (Relation):</strong> strukturiert Daten in Zeilen und Spalten.</li>
<li><strong>Datensatz (Zeile/Tupel):</strong> beschreibt genau ein Objekt, z. B. einen Kunden.</li>
<li><strong>Attribut (Spalte/Feld):</strong> beschreibt eine Eigenschaft, z. B. <em>Nachname</em>.</li>
<li><strong>DBMS:</strong> Software, die Daten, Zugriffe, Transaktionen und Rechte verwaltet.</li>
</ul>
<p>Beispiel einer Tabelle <em>Kunde</em>: Spalten <em>KundenID</em>, <em>Name</em>, <em>Ort</em>; eine Zeile wie <code>(1, "Meier", "Köln")</code> ist ein Datensatz.</p>
</section>
<section>
<h2>Primär- und Fremdschlüssel</h2>
<p>Schlüssel sorgen dafür, dass Datensätze eindeutig sind und Tabellen sauber miteinander verknüpft werden können.</p>
<ul class="key-list">
<li><strong>Primärschlüssel (PK):</strong> identifiziert jeden Datensatz einer Tabelle <em>eindeutig</em>, ist nie leer (NULL) und kommt nur einmal vor, z. B. <em>KundenID</em>.</li>
<li><strong>Fremdschlüssel (FK):</strong> verweist auf den Primärschlüssel einer <em>anderen</em> Tabelle und stellt so die Beziehung her, z. B. <em>KundenID</em> in der Tabelle <em>Bestellung</em>.</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> Der Primärschlüssel <em>identifiziert</em> innerhalb der eigenen Tabelle, der Fremdschlüssel <em>verweist</em> auf eine andere Tabelle.</p>
</section>
<section>
<h2>Beziehungstypen: 1:1, 1:n, n:m</h2>
<p>Zwischen Tabellen bestehen Beziehungen, deren Typ beschreibt, wie viele Datensätze einander zugeordnet werden können.</p>
<ul class="key-list">
<li><strong>1:1</strong> – ein Datensatz gehört zu genau einem anderen, z. B. Mitarbeiter und Dienstausweis.</li>
<li><strong>1:n</strong> – ein Datensatz gehört zu mehreren, z. B. ein Kunde hat viele Bestellungen (der häufigste Fall).</li>
<li><strong>n:m</strong> – viele zu vielen, z. B. Schüler und Kurse; wird über eine <strong>Zwischentabelle</strong> in zwei 1:n-Beziehungen aufgelöst.</li>
</ul>
<p>Umgesetzt werden Beziehungen über Fremdschlüssel: Bei 1:n steht der Fremdschlüssel auf der „n-Seite".</p>
</section>
<section>
<h2>Normalisierung (1.–3. Normalform)</h2>
<p>Die <strong>Normalisierung</strong> zerlegt Tabellen so, dass <strong>Redundanz</strong> (mehrfache Speicherung) und daraus folgende <strong>Inkonsistenzen</strong> vermieden werden.</p>
<ul class="key-list">
<li><strong>1. NF:</strong> Alle Werte sind atomar (unteilbar) – keine Listen oder Mehrfachwerte in einem Feld.</li>
<li><strong>2. NF:</strong> 1. NF erfüllt und jedes Nichtschlüsselattribut hängt <em>voll</em> vom gesamten Primärschlüssel ab (relevant bei zusammengesetzten Schlüsseln).</li>
<li><strong>3. NF:</strong> 2. NF erfüllt und keine <em>transitiven</em> Abhängigkeiten – Nichtschlüsselattribute hängen nur vom Schlüssel ab, nicht voneinander.</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> „Der Schlüssel, der ganze Schlüssel und nichts als der Schlüssel" – atomar (1.&nbsp;NF), ganzer Schlüssel (2.&nbsp;NF), nur der Schlüssel (3.&nbsp;NF).</p>
</section>
<section>
<h2>SQL-Grundbefehle</h2>
<p>Mit <strong>SQL</strong> (Structured Query Language) werden Daten abgefragt und verändert. Die wichtigsten Befehle für die AP1:</p>
<ul class="key-list">
<li><strong>SELECT</strong> – liest Daten aus Tabellen (<code>SELECT * FROM Kunde WHERE Ort = 'Köln';</code>).</li>
<li><strong>INSERT</strong> – fügt neue Datensätze ein.</li>
<li><strong>UPDATE</strong> – ändert bestehende Datensätze (meist mit <code>WHERE</code>).</li>
<li><strong>DELETE</strong> – löscht Datensätze (ohne <code>WHERE</code> die ganze Tabelle!).</li>
<li><strong>WHERE</strong> – filtert nach Bedingungen; <strong>JOIN</strong> – verknüpft Tabellen über Schlüssel.</li>
</ul>
<p class="merksatz"><strong>Merksatz:</strong> SELECT liest, INSERT legt an, UPDATE ändert, DELETE entfernt.</p>
</section>
<section>
<h2>ACID und Transaktionen</h2>
<p>Eine <strong>Transaktion</strong> fasst mehrere Datenbankoperationen zu einer logischen Einheit zusammen, die nur ganz oder gar nicht ausgeführt wird (z. B. eine Überweisung). Verlässliche Transaktionen erfüllen die <strong>ACID</strong>-Eigenschaften:</p>
<ul class="key-list">
<li><strong>Atomicity (Atomarität):</strong> alles oder nichts – bei einem Fehler wird zurückgesetzt (Rollback).</li>
<li><strong>Consistency (Konsistenz):</strong> die Datenbank bleibt in einem gültigen, regelkonformen Zustand.</li>
<li><strong>Isolation:</strong> parallele Transaktionen beeinflussen sich nicht.</li>
<li><strong>Durability (Dauerhaftigkeit):</strong> bestätigte Änderungen bleiben auch nach einem Ausfall erhalten.</li>
</ul>
</section>
<section>
<h2>Prüfungsmodus</h2>
<p>Dieser FluxCheck führt dich durch die wichtigsten AP1-Aspekte dieses Themas. Du kannst Antworten prüfen, Fragen überspringen und bekommst am Ende eine Auswertung nach Kategorie.</p>
</section>
<section class="finalflux-test" data-finalflux-test aria-live="polite">
<div class="test-meta">
<span data-question-counter>Frage 1</span>
<span data-score-counter>0 richtig</span>
</div>
<div class="category-block">
<p class="eyebrow">Kategorie</p>
<h2 data-category-title>Datenbanksysteme</h2>
<p data-category-hint>AP1-Training</p>
</div>
<div class="question-card">
<h3 data-question-text></h3>
<div data-answer-options class="answer-options"></div>
<div data-answer-feedback class="fluxcheck-result"></div>
</div>
<div class="test-actions">
<button type="button" data-check-answer>Antwort prüfen</button>
<button type="button" data-skip-question class="secondary">Überspringen</button>
<button type="button" data-next-question class="secondary" disabled>Weiter</button>
</div>
</section>
<section data-test-result class="finalflux-panel" hidden>
<h2>Auswertung</h2>
<p data-result-summary></p>
<ul data-category-summary class="key-list"></ul>
<div class="finalflux-actions">
<button type="button" data-restart-test>Test neu starten</button>
<a href="/finalflux">Zurück zur Übersicht</a>
</div>
</section>
</main>
<script src="/js/finalflux-test.js" data-questions-src="/finalflux/questions/systemintegration_datenbank.json" defer></script>
</body>
</html>