Zum Inhalt springen

Datenbanken und SQL für technische Anwendungen

Aus MOOCsWiki Staging
Die Druckversion wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.
aiMOOC-Siegel aiMOOC

Datenbanken und SQL für technische Anwendungen

QR-Code


Einleitung

Du entwickelst eine lokale Prüfobjekt-Datenbank für synthetische Messwerte eines ungefährlichen Lehrbauteils. Das Ergebnis ist keine Maschinensteuerung und keine Sicherheitsfreigabe, sondern ein nachvollziehbares Lernprodukt: Daten anlegen, gezielt abfragen und drei Fehlerfälle sicher zurückweisen. Zielgruppe sind Auszubildende im 1. bis 2. Ausbildungsjahr. Du solltest Dateien und Maßeinheiten verstehen; Programmierkenntnisse sind nicht erforderlich. Plane 5 bis 8 Unterrichtseinheiten mit einer zusätzlichen Vertiefung.

Dein Lernweg: Grundlagen kurz aktivieren, mit SQLite zwei Tabellen und Abfragen nachvollziehen, die Datenbank selbst erweitern und anhand von Testprotokollen Entscheidungen begründen. Ein normaler Rechner mit kostenloser SQLite-Software genügt. Die Beispiele sind erfunden, können als SQL-Text offline gespeichert und ohne bezahltes KI-Konto bearbeitet werden.

Anschluss an bestehendes Wissen: Vorhandene MOOCwiki-Grundlage, bereitgestellter Einstieg. Wiederhole dort, soweit erreichbar, nur die Begriffe Datei, Datensatz und Einheit. Der Inhalt der verlinkten Seite konnte beim Quellenabruf nicht eingesehen werden; dieser Kurs behauptet daher keine bestimmten dortigen Lernziele. Ohne den Link genügt die folgende Aktivierung: Eine CSV-Datei kann Zeilen speichern; eine Datenbank ergänzt prüfbare Beziehungen und Regeln.

Lernziele: Du erklärst Tabelle, Datensatz, Primärschlüssel und Fremdschlüssel, formulierst SELECT-Abfragen, baust eine lokale SQLite-Datenbank, prüfst ID-Eindeutigkeit, Verknüpfung und parametrisierte Eingaben und begründest mindestens einen Fehlerfall. Technische Ergebnisse werden nur simuliert. Das Angebot ist unabhängig und weder eine offizielle Liebherr- noch eine IHK-Zertifizierung.


Vom Messwert zum Datenmodell


Dateien, Datensätze und Tabellen

Eine einfache Text- oder CSV-Datei enthält Informationen, doch ohne zusätzliche Software verhindert sie weder doppelte Kennungen noch widersprüchliche Bezüge. In einer relationalen Datenbank stehen zusammengehörige Werte in Tabellen. Jede Zeile ist ein Datensatz, jede Spalte ein Attribut. Eine ID identifiziert einen Eintrag eindeutig. SQL bedeutet Structured Query Language und dient zum Definieren, Speichern, Verändern und Abfragen von Daten.

Schema einer relationalen Tabelle mit beschrifteten Zeilen und Spalten, als englischsprachige Grafik
Tabellenbegriffe: Zeile, Spalte und Schlüssel erkennen. Bild englischsprachig; Textalternative: Spalten benennen Eigenschaften, Zeilen enthalten je einen Datensatz.

Mediennachweis: Wikimedia Commons, Relational database terms.svg, Booyabazooka; Gemeinfreiheit laut Dateiseite. Die Grafik ergänzt die Definitionen, ersetzt sie aber nicht.

Beispiel: Das Objekt P-101 heißt Lehrteil A und hat einen erfundenen Sollwert von 20,0 mm. Für dieses Objekt werden Messungen von 20,2 mm und 19,8 mm protokolliert. Ein Prüfobjekt kann beliebig viele Messdatensätze besitzen; eine Messung gehört in unserem Modell genau zu einem Prüfobjekt. Alle Werte sind synthetisch und haben keine reale Prüf- oder Qualitätsaussage.


Primärschlüssel, Fremdschlüssel und Kardinalität

Ein Primärschlüssel (PRIMARY KEY) muss eindeutig sein. Ein Fremdschlüssel (FOREIGN KEY) verknüpft einen Wert in einer Tabelle mit einem vorhandenen Schlüssel der anderen Tabelle. Die Beziehung eins zu viele (1:n) bedeutet: Ein Prüfobjekt kann viele Messungen haben, eine Messung verweist hier auf genau ein Prüfobjekt. Das verhindert doppelte Objektbeschreibungen in jeder Messzeile.

Ein einfaches englisch beschriftetes Entity-Relationship-Diagramm mit einer Eins-zu-viele-Beziehung
Beziehungsdiagramm als Analogie: Ein Haupteintrag steht mit mehreren zugehörigen Einträgen in Beziehung. Textalternative: ein Primärschlüssel im Haupteintrag wird mehrfach als Fremdschlüssel verwendet.

Mediennachweis: Wikimedia Commons, ER-Beispiel, Fishpi; gemeinfrei laut Dateiseite. Die abgebildeten Unternehmen sind ein Strukturbeispiel, keine Daten unseres Modellfalls.

Mini-Aktivierung: Ordne die Begriffe ID, Messwert, Prüfobjekt, Beziehung den vier Beschreibungen zu: eindeutige Kennung, erfasste Zahl mit Einheit, zu untersuchender Lehrgegenstand und Verweis zwischen Tabellen. Nutze die interaktive Memory-Aufgabe zur Selbstkontrolle.


Struktur vor Inhalt

Normalisierung bedeutet vereinfacht: Ein Sachverhalt soll möglichst nur an einem geeigneten Ort gepflegt werden. Deshalb speichern wir die Objektbezeichnung in pruefobjekt und nicht erneut in jeder Messung. Getrennte Tabellen verringern Inkonsistenzen. Die referenzielle Integrität bezeichnet die Gültigkeit solcher Verweise. Eine Transaktion fasst zusammengehörige Änderungen zusammen und erlaubt, sie als Einheit zu speichern oder bei Fehlern zurückzunehmen.

Denkhilfe: Eine Excel-Liste reicht oft für wenige unverbundene Zeilen. Benötigst du dauerhafte Eindeutigkeit, überprüfbare Beziehungen und gezielte Abfragen, ist das relationale Modell häufig geeigneter. Welche Lösung passt, hängt von Umfang und Einsatzbedingungen ab.


Eine lokale SQLite-Datenbank aufbauen


Werkzeug und Datenmodell

SQLite ist eine lokale Datenbankbibliothek ohne eigenen Datenbankserver. Du kannst die freie SQLite-Kommandozeile oder eine kostenlos nutzbare lokale SQLite-Oberfläche verwenden. Speichere die Datei als pruefobjekte.db im eigenen Übungsordner. Für den reinen Papiermodus zeichne Tabellen und markiere erwartete Fehlermeldungen; die vollständige Prüfung der tatsächlichen Datenbankregeln erfordert jedoch das Ausführen der SQL-Befehle.

Englisch beschriftetes Schema mit Anwendung, SQL-Schicht und Speicherkomponenten von SQLite
SQLite als lokale Architektur. Textalternative: Eine Anwendung sendet SQL-Anweisungen an SQLite, das eine lokale Datenbankdatei verwaltet.

Mediennachweis: Wikimedia Commons, SQLite Architecture.svg, nach SQLite-Architekturdokumentation; CC0 1.0 laut Dateiseite.

Video zum Nacharbeiten (deutsch, externer Inhalt): SQLite-Einstieg mit CREATE TABLE, INSERT, SELECT, PRIMARY KEY und JOIN von Mit Mario, veröffentlicht 01.12.2021. Die Video-Metadaten waren abrufbar; tatsächliche Wiedergabe und regionale Verfügbarkeit können variieren. Offline-Alternative: Befolge die vollständigen SQL-Anweisungen unterhalb.


Tabellen anlegen: geführtes Beispiel

Zuerst aktiviere die Fremdschlüsselprüfung. Wichtig: Bei SQLite gilt die Einstellung für jede neue Datenbankverbindung gesondert. Ein Text-Primärschlüssel bekommt ausdrücklich NOT NULL. Die Wertebereiche 0 bis 100 mm sind nur didaktische Grenzen, keine technische Prüfnorm.

PRAGMA foreign_keys = ON;
CREATE TABLE pruefobjekt (
  objekt_id TEXT PRIMARY KEY NOT NULL,
  bezeichnung TEXT NOT NULL,
  sollwert_mm REAL NOT NULL CHECK (sollwert_mm BETWEEN 0 AND 100)
);
CREATE TABLE messung (
  messung_id INTEGER PRIMARY KEY,
  objekt_id TEXT NOT NULL,
  istwert_mm REAL NOT NULL CHECK (istwert_mm BETWEEN 0 AND 100),
  zeitpunkt TEXT NOT NULL,
  FOREIGN KEY (objekt_id) REFERENCES pruefobjekt(objekt_id)
);

Begriffe: CREATE TABLE legt ein Schema an. TEXT speichert Zeichen, REAL Fließkommazahlen, INTEGER ganze Zahlen. NOT NULL schließt fehlende Werte aus, CHECK kontrolliert einen Ausdruck, PRIMARY KEY verhindert doppelte IDs. Gleitkommazahlen sind für diese Lehrsimulation ausreichend; für hochpräzise oder metrologisch verbindliche Anwendungen braucht es ein passendes Mess- und Datentypkonzept.


Synthetische Werte eintragen

INSERT INTO pruefobjekt (objekt_id, bezeichnung, sollwert_mm)
VALUES ('P-101', 'Lehrteil A', 20.0);
INSERT INTO pruefobjekt (objekt_id, bezeichnung, sollwert_mm)
VALUES ('P-102', 'Lehrteil B', 30.0);
INSERT INTO messung (messung_id, objekt_id, istwert_mm, zeitpunkt)
VALUES (1, 'P-101', 20.2, '2026-10-22T10:00:00');
INSERT INTO messung (messung_id, objekt_id, istwert_mm, zeitpunkt)
VALUES (2, 'P-101', 19.8, '2026-10-22T10:05:00');
INSERT INTO messung (messung_id, objekt_id, istwert_mm, zeitpunkt)
VALUES (3, 'P-102', 30.4, '2026-10-22T10:10:00');

Jede INSERT-Anweisung fügt genau den angegebenen Datensatz hinzu. Ein Zeitstempel ist hier eine vereinbarte Textdarstellung und kein automatisch überprüfter Echtzeitbeleg. Führe vor wiederholten Übungen eine frische leere Datenbankdatei ein oder passe die Test-IDs an; sonst können erwartete Doppelungen bereits durch vorangegangene Versuche entstehen.

Erwartetes Ergebnis: Zwei Prüfobjekte, drei Messungen und gültige Zuordnungen. Dokumentiere die Zeilenanzahl statt nur eine Bildschirmansicht abzufotografieren.


Daten mit SQL gezielt abfragen


SELECT, WHERE und ORDER BY

SELECT wählt Spalten, FROM benennt eine Tabelle, WHERE filtert Datensätze, ORDER BY sortiert das Ergebnis. Die Abfrage verändert keine gespeicherten Werte.

SELECT objekt_id, istwert_mm, zeitpunkt
FROM messung
WHERE objekt_id = 'P-101'
ORDER BY zeitpunkt;

Erwartet: Die Messungen 20,2 und 19,8 mm für P-101, zeitlich sortiert. Vergleiche das Ergebnis mit deiner Eingabetabelle. Wenn eine Zeile fehlt, überprüfe Kennung und Schreibweise. Teste zusätzlich COUNT(*) für die Anzahl der Messungen, zum Beispiel:

SELECT objekt_id, COUNT(*) AS anzahl
FROM messung
GROUP BY objekt_id;


JOIN verknüpft Messung und Sollwert

JOIN kombiniert in einer Abfrage Daten aus zwei Tabellen. Die ON-Bedingung muss die passende Beziehung benennen. Ohne eine geeignete Verknüpfungsbedingung können falsche Kombinationen entstehen.

SELECT p.objekt_id, p.bezeichnung,
       p.sollwert_mm, m.istwert_mm,
       ABS(m.istwert_mm - p.sollwert_mm) AS abweichung_mm
FROM pruefobjekt AS p
JOIN messung AS m ON m.objekt_id = p.objekt_id
ORDER BY p.objekt_id, m.messung_id;

Erwartet: Für P-101 erscheinen zwei Zeilen mit 0,2 mm Abweichung, für P-102 eine Zeile mit 0,4 mm Abweichung. ABS macht eine Differenz positiv. Ein Alias wie p ist ein kurzer Tabellenname innerhalb der Abfrage. Die Ausgabe stellt keine technische Freigabe dar. Als rein didaktisches Vergleichskriterium kannst du eine maximale Abweichung von 0,5 mm annehmen und begründen, warum eine solche Grenze in echter Qualitätssicherung erst fachlich festgelegt werden müsste.


Speichern, ändern, sichern

UPDATE ändert vorhandene Daten, DELETE entfernt Datensätze. Diese Befehle brauchen eine sorgfältig geprüfte WHERE-Bedingung. Eine Sicherheitskopie der lokalen Datei ist bei geschlossenem Datenbankzugriff oder über die dafür vorgesehenen SQLite-Backupfunktionen sinnvoll; ein bloßes Kopieren während laufender Änderungen kann unzuverlässig sein. Verwende für Experimente ausschließlich eine Kopie. Mit BEGIN und COMMIT kannst du Änderungen als Transaktion abschließen; ROLLBACK verwirft unbestätigte Änderungen.

Vertiefung: Suche in der offiziellen SQLite-Dokumentation nach UNIQUE und CHECK. Beschreibe, warum Datenbankregeln stärker sind als eine reine Warnmeldung der Benutzeroberfläche.


Datenintegrität und Eingabesicherheit prüfen


Test eins: doppelte ID abweisen

Führe nach dem Anlegen von P-101 in einer Übungsdatenbank absichtlich Folgendes aus:

INSERT INTO pruefobjekt (objekt_id, bezeichnung, sollwert_mm)
VALUES ('P-101', 'Duplikat', 21.0);

Erwartet: Die Anweisung scheitert wegen PRIMARY KEY mit einer UNIQUE-Constraint-Fehlermeldung. Die Tabelle enthält weiterhin nur einen Datensatz mit ID P-101. Entscheidung: Die ID bleibt gleichbedeutend mit einem einzigen Prüfobjekt; der neue Satz darf nicht stillschweigend überschreiben. Dokumentiere vorher, Eingabe, beobachtete Meldung, Nachher und Begründung. Ohne echten Programmlauf ist das nur eine Vorhersage.


Test zwei: Verknüpfung prüfen

Setze sicherheitshalber in deiner aktuellen Verbindung PRAGMA foreign_keys = ON; und prüfe danach optional mit PRAGMA foreign_keys;, ob 1 ausgegeben wird. Versuche anschließend:

INSERT INTO messung (messung_id, objekt_id, istwert_mm, zeitpunkt)
VALUES (4, 'P-999', 20.0, '2026-10-22T10:15:00');

Erwartet: FOREIGN KEY constraint failed; P-999 existiert nicht. Die Messungszahl bleibt bei drei. Entscheidung: Eine Messung ohne zugehöriges Prüfobjekt wäre in unserem Modell ein verwaister Datensatz; sie ist nicht zulässig. Ist die Fremdschlüsselprüfung ausgeschaltet, kann SQLite diesen Test anders behandeln. Begründe deshalb, warum die aktivierte Einstellung selbst Teil des Testprotokolls ist.


Test drei: manipulierende Eingabe als Datenwert behandeln

SQL Injection bedeutet, dass eine ungeeignet zusammengesetzte Abfrage ungewollte SQL-Syntax aus einer Eingabe übernimmt. Nutze in einer lokalen Beispiel-App parametrisierte Abfragen: Die Struktur der SQL-Anweisung bleibt fest; der Eingabewert wird separat gebunden. Hier ist eine optionale Python-Variante für Lernende mit Programmiererfahrung; die Anwendung ist auch ohne Python als SQL-Simulation bearbeitbar.

import sqlite3
verbindung = sqlite3.connect("pruefobjekte.db")
verbindung.execute("PRAGMA foreign_keys = ON")
eingabe = "P-101' OR '1'='1"
zeilen = verbindung.execute(
    "SELECT objekt_id FROM pruefobjekt WHERE objekt_id = ?",
    (eingabe,)
).fetchall()
print(zeilen)
verbindung.close()

Erwartet: Eine leere Liste, weil die gesamte Zeichenfolge als einzelner Wert gesucht wird. Es werden keine anderen Objekte geliefert und keine zusätzliche SQL-Anweisung ausgeführt. Teste als Vergleich die reguläre Eingabe P-101: genau ein Datensatz wird gefunden. Entscheidung: Werte über Platzhalter binden, nicht per Zeichenkettenverkettung in SQL einsetzen. Parameter schützen Werte, aber nicht beliebig dynamisch eingesetzte Tabellen- oder Spaltennamen; für solche Bezeichner wären feste Auswahllisten notwendig. Parametrisierung ersetzt keine Dateirechte, Zugangskontrolle oder Plausibilitätsprüfungen.

Fehlerfall begründen: Wenn bei Test zwei doch ein Datensatz mit P-999 gespeichert wurde, liegt die wahrscheinlichste Ursache in diesem Beispiel bei einer fehlenden Aktivierung von PRAGMA foreign_keys. Prüfe die Einstellung in derselben Verbindung und wiederhole den Test in einer frischen Kopie. Nenne alternativ weitere plausible Ursachen, ohne eine ungeprüfte Diagnose als sicher auszugeben.


Testprotokoll und Sicherheitsgrenzen

Prüfkriterium Testeingabe Erwartetes Ergebnis Nachweis Fachliche Begründung
Doppelte ID P-101 erneut eintragen Einfügen abgewiesen Objektanzahl unverändert Eindeutigkeit durch PRIMARY KEY
Verknüpfung Messung zu P-999 Einfügen abgewiesen Messungsanzahl unverändert referenzielle Integrität bei eingeschaltetem PRAGMA
Manipulation P-101' OR '1'='1 keine zusätzlichen Treffer leere Trefferliste bei Parameterbindung Eingabe bleibt Datenwert statt SQL-Syntax

Unterschied zwischen Integrität und Richtigkeit: Eine gültige Datenbankregel beweist nicht, dass ein tatsächlich gemessener Wert physikalisch wahr ist. Lokale Dateien können außerhalb der App manipuliert oder gelöscht werden. Eine reale Prüfanwendung benötigt zusätzliche Zugriffskontrollen, Datensicherung, geeignete Prüfverfahren, Auditierung und unabhängige fachliche Freigaben. Hier gibt es ausschließlich synthetische Übungsdaten und keine reale Maschinenanbindung.


Die lokale Prüfobjekt-Datenbank selbstständig erweitern


Transferauftrag: ein drittes Prüfobjekt

Ergänze P-103 als Lehrteil C mit synthetischem Sollwert 40,0 mm und mindestens zwei Messungen. Erstelle eine Abfrage, die für jedes Objekt Anzahl und größte absolute Abweichung berechnet. Notiere das erwartete Ergebnis vor der Ausführung und vergleiche anschließend mit der tatsächlichen Ausgabe. Hilfestufe eins: Beginne mit INSERT und SELECT. Hilfestufe zwei: Prüfe COUNT, MAX, ABS, GROUP BY und JOIN. Herausforderung: Erkläre, weshalb Messungen ohne Verknüpfung nicht in einer INNER-JOIN-Ausgabe erscheinen und wann LEFT JOIN sinnvoll wäre.

Entscheidungsregel im Modell: Jede Prüfobjekt-ID bleibt eindeutig, Messungen brauchen eine vorhandene Objekt-ID, und frei eingegebene Filterwerte werden als Parameter gebunden. Entwickle die Regeln zu drei überprüfbaren Akzeptanzkriterien. Jede Entscheidung braucht ein SQL-Ergebnis oder ein nachvollziehbares Testprotokoll sowie eine kurze Begründung.


Lernprodukt dokumentieren

Gib als Ergebnis ab: ein kleines Schema mit zwei Tabellen und einem 1:n-Pfeil, eine lokale Datenbankdatei oder gleichwertige SQL-Datei, ein anonymes synthetisches Beispieldatenset, mindestens zwei erfolgreiche SELECT-Abfragen, die drei Negativtests und eine kurze Reflexion. Ergänze die lokale SQLite-Version mit SELECT sqlite_version();, die verwendete Oberfläche und das Testdatum. Sensible personenbezogene Daten gehören nicht hinein. Fotos, Videos oder Audioaufnahmen von realen Arbeitsplätzen sind für dieses Lernprodukt nicht nötig.

Offline-Alternative: Drucke Schema, Beispieltabelle, SQL-Anweisungen und die erwarteten Ergebnisse aus. Du kannst so Datenmodell, Abfrageverständnis und Fehlervorhersagen nachweisen; kennzeichne klar, dass die reale Zurückweisung durch die Datenbank dabei nicht ausgeführt und somit nicht empirisch bestätigt wurde.


Optional: andere Datenbankmodelle vergleichen

Relationale Tabellen sind nicht die einzige Art der Datenspeicherung. Die folgende freie Animation zeigt Knoten und Kanten einer Graphdatenbank, nicht SQLite und nicht das konkrete Prüfobjektmodell. Vergleiche die Kanten mit den 1:n-Schlüsselbeziehungen unseres Schemas. Textalternative: In einem Graphen verbinden Kanten einzelne Knoten; in unserem relationalen Modell verweisen Fremdschlüsselwerte auf Primärschlüssel.

Animation eines Organisationsgraphen, in dem Knoten über Verbindungslinien miteinander verknüpft werden
Anschaulicher Kontrast: Graphmodell statt relationaler Tabelle; Englisch.

Mediennachweis: Wikimedia Commons, Org Graph Animation.gif, Walter L Brown III, CC BY-SA 4.0.

Audio zur Fachsprache: Englische Aussprache des Wortes database (Paul2520, CC BY-SA 4.0). Textalternative: Das englische Wort database heißt auf Deutsch Datenbank; die Aufnahme erläutert keine SQL-Regeln.

Weiteres Video (deutsch): SQL-Grundkurs mit Filterung, JOIN und Datenänderungen, Programmieren lernen, veröffentlicht 25.09.2021; geprüft wurde der öffentlich auffindbare Videoeintrag, nicht eine garantierte Wiedergabe an jedem Endgerät. Ohne Video dienen die SQL-Beispiele dieses Kurses als Ersatz.


Interaktive Aufgaben


Multiple-Choice-Quiz

Bearbeite genau zehn Fragen. Wähle jeweils die fachlich richtige Aussage und nutze die Rückmeldung der Quizfunktion nach deiner Auswahl. Die Lösungen werden nicht vorab als separater Lösungsschlüssel angezeigt.

Warum eignet sich eine relationale Datenbank für Messungen mehrerer Prüfobjekte? (Weil Messungen über Schlüssel mit genau bezeichneten Prüfobjekten verknüpft werden können) (!Weil Tabellen automatisch jeden Messfehler korrigieren) (!Weil jedes Objekt einen eigenen Datenbankserver benötigt) (!Weil Tabellen grundsätzlich keine IDs enthalten dürfen)




Was verhindert in unserer Tabelle pruefobjekt eine doppelte objekt_id? (Der PRIMARY KEY auf objekt_id) (!Ein ORDER BY auf bezeichnung) (!Eine SELECT Abfrage ohne WHERE) (!Ein zusätzliches Vorschaubild)




Welche Aussage beschreibt einen Fremdschlüssel zutreffend? (Er verweist von einem Messdatensatz auf einen vorhandenen Prüfobjektdatensatz) (!Er wandelt Millimeter automatisch in Zentimeter um) (!Er ist immer die Uhrzeit der Messung) (!Er ersetzt sämtliche Prüfregeln)




Welche SQLite Anweisung ist je Verbindung wichtig für die Fremdschlüsselprüfung? (PRAGMA foreign_keys = ON;) (!ORDER BY foreign_keys;) (!SELECT UNIQUE FROM messung;) (!DROP TABLE foreign_keys;)




Was liefert SELECT mit WHERE objekt_id gleich P-101? (Nur Datensätze mit passender Objektkennung) (!Immer sämtliche Tabellen des Computers) (!Nur die Anzahl vorhandener Spalten) (!Eine automatische Freigabe der Messung)




Welche Abfrage verbindet Sollwerte und Istwerte sinnvoll? (Ein JOIN über die übereinstimmende objekt_id) (!Ein Vergleich ausschließlich der Tabellenüberschriften) (!Ein zufälliges Mischen aller Messungen) (!Ein Löschen der Prüfobjekttabelle)




Warum ist CHECK für einen Messwertebereich sinnvoll? (Weil ungültige Werte beim Einfügen oder Ändern abgewiesen werden können) (!Weil CHECK einen Sensor kalibriert) (!Weil CHECK externe Webseiten sperrt) (!Weil CHECK ohne SQL alle Dateien verschlüsselt)




Was ist bei Eingaben für SQL Abfragen die sichere Grundregel? (Werte als gebundene Parameter statt als SQL Text einfügen) (!Eingaben direkt an einen SQL Befehl anhängen) (!Apostrophe durch doppelte Bildschirmhelligkeit ersetzen) (!Benutzereingaben nur per ORDER BY absichern)




Was beweist ein erfolgreich zurückgewiesener SQL Injection Test? (Die getestete Eingabe wird in diesem Pfad als Datenwert behandelt und führt keinen zusätzlichen SQL Befehl aus) (!Das gesamte Betriebssystem ist nun gegen alle Angriffe geschützt) (!Die Prüfwerte sind automatisch physikalisch korrekt) (!Die Anwendung braucht niemals weitere Sicherheitsprüfungen)




Welche Aussage beschreibt den Lernnachweis am besten? (Ein lokales Datenmodell mit Abfragen und drei begründeten Negativtests) (!Ein Screenshot ohne gespeicherte Werte) (!Nur das Auswendiglernen der vier SQL Buchstaben) (!Die unveränderte Übernahme einer fremden Produktionsdatenbank)





Memory

Ordne die fünf unterschiedlichen Fachbegriffe ihren Bedeutungen zu.

Primärschlüssel Eindeutige Kennung eines Datensatzes
Fremdschlüssel Verweis auf einen Datensatz einer anderen Tabelle
SELECT Abfragebefehl zum Lesen von Daten
CHECK Prüfung einer Bedingung beim Schreiben
Transaktion Zusammengehörige Folge von Datenänderungen





Drag-and-Drop

Ordne fünf Sicherheits- und Abfragehandlungen den passenden Fachausdrücken zu.

Passender Fachausdruck Beschreibung
PRIMARY KEY Doppelte Objektkennung verhindern
FOREIGN KEY Fehlende Objektverknüpfung zurückweisen
WHERE Zeilen nach einem Wert filtern
JOIN Sollwert und Messung verbinden
Parameterbindung Nutzereingabe als getrennten Datenwert übergeben





Kreuzworträtsel

Trage die sechs Fachwörter ohne Leerzeichen ein.

Tabelle Struktur aus Zeilen und Spalten in einer relationalen Datenbank
Abfrage SQL-Anweisung zum gezielten Lesen von Daten
Schema Beschreibung der Tabellen und ihrer Spalten
Integritaet Eigenschaft konsistenter Beziehungen und gültiger Daten
Filter Bedingung zur Auswahl bestimmter Datensätze
Index Datenstruktur, die bestimmte Suchen beschleunigen kann





LearningApps

Externe thematische Aufgabensuche zu SQL und Datenbanken. Sie kann unterschiedliche oder zeitweise keine passenden Beiträge liefern; nutze dann Memory, Drag-and-Drop und Lückentext dieser Seite als vollständige Alternative.


Lückentext

Ergänze je Satz den passenden Fachbegriff. Jede Lücke bezieht sich auf eine erklärte Regel und kann ohne externe Medien gelöst werden.

Fülle die Lücken zum lokalen Datenbankmodell.
Eine relationale Datenbank speichert Datensätze in einer

.
Eine eindeutige Kennung wird als

bezeichnet.
Ein Verweis auf einen zugehörigen Eintrag heißt

.
Mit dem SQL-Befehl

liest du ausgewählte Daten.
Die Klausel

schränkt Treffer ein.
Mit

verbindest du passende Zeilen verschiedener Tabellen.
Eine vereinbarte Wertebereichsregel lässt sich als

formulieren.
Für SQLite aktivierst du Fremdschlüsselprüfungen mit dem Schlüsselwort

.
Werte werden gegen SQL Injection durch

von der Befehlsstruktur getrennt.
Ein kontrollierter Rücksprung ungespeicherter Transaktionsänderungen heißt

.




Offene Aufgaben


Leicht

  1. Datenbank: Erkläre anhand von drei synthetischen Messwerten den Unterschied zwischen CSV-Datei, Datensatz und Datenbanktabelle. Verwende die Einheit Millimeter korrekt.
  2. Primärschlüssel: Zeichne die Tabelle pruefobjekt mit drei Spalten und kennzeichne den Schlüssel. Begründe, warum zwei Einträge mit derselben ID problematisch sind.
  3. SQL: Schreibe eine SELECT-Abfrage für alle Messungen von P-101 und notiere die erwarteten Werte vor dem Ausprobieren.
  4. Entity-Relationship-Modell: Zeichne zwei Tabellen und einen 1:n-Pfeil. Erkläre die Verbindung in zwei verständlichen Sätzen.


Standard

  1. SQLite: Lege die beiden Tabellen lokal an, trage die drei Beispieldaten ein und dokumentiere SQLite-Version sowie Ergebnis der Zeilenzählung.
  2. Datenintegrität: Führe die drei Negativtests aus und dokumentiere Eingabe, Fehlermeldung oder Ergebnis und die unveränderte Datenmenge.
  3. SQL JOIN: Erstelle eine Abfrage mit Objektbezeichnung, Sollwert, Istwert und absoluter Abweichung. Interpretiere den Unterschied zwischen P-101 und P-102.
  4. Datensicherheit: Formuliere drei Akzeptanzkriterien für eine lokale Messdaten-App und ordne jedem Kriterium eine Abfrage oder einen Test zu.


Schwer

  1. Parametrisierte Abfrage: Zeige mit Python sqlite3 oder einer gleichwertigen lokalen Schnittstelle eine harmlose Zeichenfolge mit Apostrophen als gebundenen Filterwert und begründe, warum sie keine SQL-Syntax ausführt.
  2. Datenbanknormalisierung: Entwickle eine dritte Tabelle für synthetische Prüftermine. Lege Schlüssel und Beziehungen fest, verhindere redundante Stammdaten und benenne einen möglichen Fehlerfall.
  3. Transaktion (Informatik): Simuliere zwei zusammengehörige Änderungen; erkläre, wann COMMIT bzw. ROLLBACK angemessen wäre. Vergleiche Ergebnisse mit und ohne Rücknahme in einer Kopie.
  4. Softwaretest: Entwirf ein kleines Testprotokoll mit mindestens sechs Fällen einschließlich Grenzwerten, doppelter ID und fehlender Verknüpfung. Unterscheide erwartete, beobachtete und nur angenommene Ergebnisse.




Text bearbeiten Bild einfügen Video einbetten Interaktive Aufgaben erstellen



Lernkontrolle

  1. Datenmodellierung: Begründe mit einem Beispiel, warum Prüfobjekte und Messungen in getrennte Tabellen gehören, und erkläre die 1:n-Beziehung.
  2. SQL-Abfrage: Formuliere eine WHERE-Abfrage und einen JOIN, mit denen du alle synthetischen Abweichungen eines bestimmten Objekts nachvollziehen kannst.
  3. Eindeutigkeit: Erläutere, welcher Mechanismus die erneute P-101-Eingabe stoppt und wie du beweist, dass der Ursprungsdatensatz nicht überschrieben wurde.
  4. Referenzielle Integrität: Analysiere, warum eine P-999-Messung manchmal unerwartet akzeptiert werden könnte, und beschreibe die nötige SQLite-Einstellung.
  5. SQL Injection: Begründe den Unterschied zwischen gebundenem Wert und zusammengebautem SQL-Text an einer harmlosen Filtereingabe. Nenne eine Grenze des Schutzes.
  6. Qualitätssicherung: Beurteile, was ein technisch bestandener Datenbanktest über Datenintegrität aussagt und was er gerade nicht über physikalische Messgenauigkeit oder Sicherheitsfreigabe beweist.




Lernnachweis

Pflichtprodukt: Lokale Prüfobjekt-Datenbank. Reiche das Datenmodell, eine lokale Datenbank- oder SQL-Datei mit ausschließlich synthetischen Datensätzen, zwei dokumentierte SELECT-Abfragen, drei Negativtests und eine verständliche Begründung einer Fehlerursache ein. Verwende die Überschriften Aufbau, Abfragen, Testfälle, Begründung und Grenzen. Nenne SQLite-Version, Datum und Werkzeug. Wenn du ohne Laufzeit gearbeitet hast, kennzeichne jeden Test ausdrücklich als theoretisch und nicht als ausgeführt.

Bewertungsraster (100 Punkte): Fachlich korrektes Schema und Schlüssel 25; funktionsfähige Abfragen 20; drei nachvollziehbare Negativtests je 10, zusammen 30; Erklärung des Fehlerfalls 15; Reflexion über Grenzen, Quellen und Synthetik 10. Bestehensvorschlag für die Übung: mindestens 60 Punkte und keine Behauptung einer realen Sicherheitsfreigabe. Dieses Raster ist eine didaktische Empfehlung, kein amtlicher Abschluss.

Selbstcheck: Kannst du vor jeder Eingabe vorhersagen, was passiert? Kannst du ein erwartetes Ergebnis mit einer echten Ausgabe vergleichen? Kannst du erklären, warum eine doppelte ID abgewiesen, eine unzulässige Verknüpfung verhindert und manipulierender Eingabetext als Datenwert behandelt wird? Wenn ja, hast du den Transfer vom Verständnis zur eigenen Datenbank geschafft.




OER und Wikipedia

Fachliche Primärquellen und Recherche (Stand der Prüfung: 22.10.2026):

Einordnung: Hersteller- und Softwaredokumentation kann sich verändern; SQL-Dialekte unterscheiden sich. Ergebnisse sind für die jeweils dokumentierte lokale SQLite-Version zu überprüfen. Die Sicherheitsquellen NIST und MCP dienen der vertiefenden Einordnung und ersetzen nicht die spezifische SQLite-Dokumentation.

Wikipedia zum Nachlesen: Relationale Datenbank, SQL, SQLite und SQL-Injection. Die externen Enzyklopädieseiten ergänzen den Kurs; zentrale Inhalte und Aufgaben stehen vollständig oben.

Wikimedia-Medien, kontrollierbare Dateiseiten und Rechte:

Medium und Textalternative Urheberschaft Nutzungshinweis
Relational database terms.svg – Zeilen/Spalten Booyabazooka Public Domain laut Commons
Relational DB Example ER Diagram Corporation.svg – 1:n-Beziehung Fishpi Public Domain laut Commons
SQLite Architecture.svg – lokale SQLite-Schichten SQLite-Projekt, SVG-Fassung nach Dokumentation CC0 1.0 laut Commons
Org Graph Animation.gif – Knoten und Kanten Walter L Brown III CC BY-SA 4.0 laut Commons
En-us-database.oga – englisches Wort database Paul2520 CC BY-SA 4.0 laut Commons

Videonachweise: Lerne SQLite in 60 Minuten, Mit Mario, 2021 und SQL Tutorial für Anfänger, Programmieren lernen, 2021. Für YouTube gelten die jeweiligen Rechte und Nutzungsbedingungen, keine OER-Lizenz ist behauptet. Die öffentlich auffindbaren Videoeinträge wurden geprüft; eine dauerhafte Abspielgarantie besteht nicht. Alle Lernaufgaben haben textbasierte Offline-Alternativen.


Verknüpfte Lernbereiche


aiMOOC-Projekte



Schulfach+




aiMOOCs



aiMOOC Projekte