GK12 Informatik 2022/23

Willkommen!

In diesem Dokument werden im Verlauf des Jahres diverse Materialien und Aufgaben zusammengestellt, die zum Slebstlernen und Lernen in der Schule geeignet sind.

Zunächst besprechen wir ein wenig Organisatorisches.

Webentwicklung

Hier geht es um Markdown, HTML und CSS.

Markdown

Steckbriefe

PHP

Softwareentwicklung

Q2

Datenbankensysteme

Funktionen eines DBMS

Der erste Abschnitt von https://de.wikipedia.org/wiki/Datenbank#Funktionen_eines_DBMS stellt eine Übersicht und Verlinkungen auf weiterführende Artikel dar.

Nach einer Sichtung von 10 Minuten teilen wir diesen Komplex in ca. 6 Kurzvorträge auf, die als Einzelarbeit zu halten sind. Medium ist, wie immer, CampusSlides.

Die (kreative) Anforderung ist: Es dürfen keine Sichpunkte, sondern nur Bilder oder Grafiken (die dann Worte beinhalten dürfen) verwendet werden.

Für das Speichern und Sichern der Vorträge gibt es eine Abgabe im Lernraum.

Have a lot of fun!

Theorie-Sessions

Wir haben folgende Fachinhalte erarbeitet:

Praxisteil 1

Tafelbild


Person(_vorname_, _nachname_, _geburtsdatum_, mail, kuerzel, Klasse, Kursjahrgang)
Raum(_haus_, _etage_, _nr_, zweck, paltzzahl, Fach.bezeichnung)
Fach(_bezeichnung_, stufen)
Kurs(_jahrgang_von_, _bezeichnung_, istKlasse, Fach.bezeichnung, Raum.haus, Raum.etage, Raum.nr)
Unterrichtet(Person.vorname, Person.nachname, Person.geburtsdatum, Kurs.bezeichnung, Kurs.jahrgang_von)
Nimmt_Teil(-||-) #siehe Unterrichtet -,-

Praxisteil 2

Viele der hier genannten Schritte werden im Lernraum mit Abgaben der Arbeitsergebnisse kombiniert.

Beispiel:


CREATE TABLE nutzer(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    nutzername VARCHAR(100) NOT NULL, 
    passwort VARCHAR(255) NOT NULL, 
    datum DATE, 
    email VARCHAR(255) NOT NULL, 
    beschreibung TEXT, 
    bild BLOB, 
    link VARCHAR(255)
)

INSERT-Queries

TODO Beispiel...

Klausurvorbereitung

Praxisteil 3

SELECT-Queries

Vollständige Tabelle von Datenbank abfragen
SELECT * FROM table01;
Spezielle Attribute von Tabelle abfragen (Projektion)
SELECT (attr01,attr02,attr03) FROM table01;
Daten aus einer Tabelle mit Einschränkungen (Selektion)
SELECT (attr01,attr02,attr03) FROM table01 
    WHERE
        attr01 = 1
    AND
        attr02 > 100;
Daten aus mehreren Tabellen mit Einschränkungen (eigentlich JOIN)

ACHTUNG: Im Unterricht behandeln wir den JOIN nur implizit und überlassen dem DBS das Verknüpfen der Tabellen. In der Theorie wird hier zwischen vielen JOINs (left, right, outer, inner, usw.) unterschieden, die im Kern als Kreuzprodukt verarbeitet werden.

table01

id value foreign_key
1 a 2
2 b 2
3 c 1

table02

id value
1 foo
2 bar
SELECT * FROM table01, table02
    WHERE 
        foreign_key = table02.id

Aufgaben

Erstellen Sie für Ihre Beispieldatenbank für jeden der hier dargestellen SELECT-Typen eine Beispielanfrage. Erstellen Sie eine (Slides-) Präsentation, die sowohl Ihre Anfrage, als auch das Ergebnis der Datenbank darstellt. Gehen Sie in der Präsentation auf überraschende Erscheinungen und/oder Probleme ein.

Nettes Tool zum Umwandeln von Tabellen in MD-Code: https://tabletomarkdown.com/

Ein noch netteres Tool: https://tableconvert.com/

Planung der 5. PK Simulationen

ab 19.6. stehen Termine zur Verfügung in der hier stehenden Reihenfolge ist entscheidend

Zwei Vorträge pro Doppelstunde oder ein Vortrag pro Einzelstunde

Hintergrundinformationen hier

https://www.berlin.de/sen/bildung/schule/pruefungen-und-abschluesse/abitur/handreichung_5pk.pdf

Client-side storage

Bandbibliotheken (Tape Libraries)

Die Trennung von MySQL und MariaDB

Zugriff auf Datenbanken mit PHP

Wir benutzen prepared Statements, damit uns nicht folgendes Problem begegnet:

Dahinter steckt eine Angriffsmethode Namens "SQL-Injection", zu der es natürlich einen Wikipedia-Artikel gibt.

Generell ist das Dokument TODO!!!! sehr empfehlenswert, wenn es um die Erstellung sicherer Webseiten oder Webservices geht. Hier werden einige Sicherheitslücken anschaulich erläutert.

Aufgabenstellung "Prepared Statements ausprobieren"

Erstellen und testen Sie eine PHP-Datei, die ähnlich wie das Beispiel eine beliebige Anfrage auf Ihrer Beispieldatenbank ausführt. Laden Sie die PHP-Datei im Lernraum hoch.

Aufgabenstellung "Ein Formular verarbeiten und in der DB speichern"

Vollziehen Sie den Code (und das dynamische Erstellen) nach und passen Sie den Code an Ihr eigenes Beispiel an. Letztlich sollen Speichervorgänge abhängig von Formulardaten sein.

Aufgabenstellung "CRUD komplett"

Entwickeln Sie ein Formular, das erlaubt, schon existierende Daten zu verändern, zu löschen und natürlich neue Daten zu erstellen.

Hier ein Beispiel für ein mögliches Frontend:

Roadmap

Have a lot of fun!