--- author: Florian Fischer theme: metropolis aspectratio: 169 header-includes: | \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{positioning} \usetikzlibrary{tikzmark} \usetikzlibrary{fit} \usetikzlibrary{decorations.pathreplacing,angles,quotes} \usepackage{fontawesome5} \let\tightlist\relax \makeatletter \beamer@ignorenonframefalse \makeatother --- ## Organisatorisches ### Name Herr Fischer \pause ### Material * Papier Ordner, Schnellhefter * Buch (Mitbringen, wenn angekündigt) \pause ### Noten pro Halbjahr * 1 Kurzarbeit * >= 1 Stehgreifaufgabe * Unterrichtsbeiträge * (Abfragen) ## {.standout} \begin{center} \Huge Fragen? \end{center} ## Wettbewerbe Informatik ### Jugendwettbewerb \hfill ![](logos/bwinf_bw.png){ width=2cm } \vspace{1cm} ::: columns :::: {.column width=55%} * Wer: Alle Schüler*innen * Webseite: [**bwinf.de/bundeswettbewerb**](https://bwinf.de/bundeswettbewerb) * Einsendeschluss: Zweite Novemberhälfte * Anmeldung: [**login.bwinf.de**](https://login.bwinf.de) :::: :::: {.column width=45%} ![](img/bwinf_bw_qrcode_a.png){ width=4cm } :::: ::: ## Vorstellung Suche Dir eine oder mehrere Fragen aus. Stelle Dich kurz vor indem du deinen Namen nennst und die Frage[n] beantwortest. * Welche digitalen Geräte benutzt du im Alltag? * Wie viel Zeit verbringst du täglich mit digitalen Medien? * Was wünscht du Dir vom Informatikunterricht? * Was hast du dich über Computern / Informatik schon immer gefragt? ## Grober Farplan * Bis Weihnachten: **Datenbanken** `{ \Large \faIcon{database} }`{=latex} * Fast das restliche Schuljahr: **Objektorientierte Modellierung und Programmierung** `{ \Large \faIcon{java} }`{=latex} * Zum Abschluss: **Projekt** `{ \Large \faIcon{rainbow} }`{=latex} ## Daten Daten Daten {.standout} Daten sind das Öl des 21. Jahrhundert - Gefühlt jeder zweite Politiker ## Stell Dir vor du bist Teil einer Organisation die warum auch immer an Personendaten interessiert ist. Du verwaltest diese Informationen als Datenbankadmin. ## Wiederholung - Modellierung: Objekte und Klassen ### Was war nochmal? > - Klasse > - Objekt > - Attribut > - Attributwert > - Methode ## Wiederholung - Modellierung: UML ### Arbeitsauftrag \faIcon{pencil-alt} Zeichne eine Klassenkarte für die Klasse `Person`, mit mindestens fünf sinnvollen Attributen. Zeichne eine Objektkarte, die dich als Objekt deiner Klasse `Person` darstellt. ## Wiederholung - Modellierung: Tabellen und ihr Schema ### Von der Klasse zur Tabelle > - Attribute -> \pause Spaltenüberschriften > - Objekt -> \pause ein Datensatz / Zeile der Tabelle ### Was waren nochmal? > - Primärschlüssel > - Datentypen ## Wiederholung - Datentypen - Ganze Zahlen \pause `INTEGER`{.SQL} \pause - Zeichenketten \pause `VARCHAR`{.SQL} / `TEXT` \pause - Gleitkommazahlen \pause `FLOAT`{.SQL} \pause - Datum \pause `DATE`{.SQL} \pause - ... ## Wiederholung - Schema{.fragile} \pause Struktur einer Tabelle \pause ### Beispiel \vspace{2cm} \begin{center} \begin{tikzpicture}[overlay, remember picture] \node {\texttt{\pgfmark{start}Person\pgfmark{nameEnd}(\pgfmark{pkStart}\underline{Nr}\pgfmark{pkEnd}: \pgfmark{dataStart}Integer\pgfmark{dataEnd}; Name: Text Geburtstag: Date; ...\pgfmark{end})}}; \node[fit=(pic cs:start) (pic cs:nameEnd)] (tn) {}; \node[fit=(pic cs:pkStart) (pic cs:pkEnd)] (pk) {}; \node[fit=(pic cs:dataStart) (pic cs:dataEnd)] (dt) {}; \node[fit=(pic cs:pkStart) (pic cs:end)] (a) {}; \only<1>{ \node[above=of tn] (tnL) {}; } \only<2->{ \node[above=of tn] (tnL) {Tabellenname}; } \draw[<-] ($(tn.north) + (0, 5pt)$) -- (tnL); \only<3>{ \node[below=of pk] (pkL) {}; } \only<3->{ \draw[<-] (pk) -- (pkL); } \only<4->{ \node[below=of pk] (pkL) {Primärschlüssel}; } \only<5>{ \node[above=of dt] (dtL) {}; } \only<5->{ \draw[<-] ($(dt.north) + (0, 5pt)$) -- (dtL); } \only<6->{ \node[above=of dt] (dtL) {Datentyp}; } \only<7>{ \node[below=of a] (aL) {}; } \only<7->{ \draw[<-] ($(a.south) - (0, 10pt)$) -- (aL); \draw[decoration={brace,mirror,raise=5pt},decorate] (pic cs:pkStart) -- (pic cs:end); } \only<8->{ \node[below=of a] (aL) {Attribute}; } \end{tikzpicture} \end{center} \vspace{2cm} \pause \pause \pause \pause \pause \pause \pause \pause ### Allgemein \begin{center} \begin{tikzpicture} \node at (0, -3) {\texttt{Tabellenname(\underline{[Primärschlüsselattribut]+}; Attributname: Datentyp; ...)}}; \end{tikzpicture} \end{center} ## Arbeitsauftrag \faIcon{pencil-alt} Erstelle ein Datenbankschema passend zu deiner Klasse *Person*. ## Wiederholung SQL ### SQL (**S**truktured **Q**uery **L**anguage) Weitverbreitete Abfragesprache für die auf eine Anfrage eine neue Tabelle als Antwort liefert. \pause ### Wichtige Bestandteile einer Anfrage > - `SELECT`{.SQL} \pause - Spaltenliste der Antworttabelle > - `FROM`{.SQL} \pause - Abgefragte Tabelle > - `WHERE`{.SQL} \pause - Bedingung die Datensätze der Antwort erfüllen müssen ## Wiederholung SQL ### Beispiel - Namen aller Personen ```SQL SELECT name FROM Person; ``` \pause ### Beispiel - Namen aller Frauen ```SQL SELECT name FROM Person WHERE geschlecht='w'; ``` \pause ### Beispiel - Namen aller großen und kleinen Frauen ```SQL SELECT name FROM Person WHERE geschlecht='w' AND (groesse < 150 OR groesse > 190); ``` ## Arbeitsauftrag \faIcon{desktop} Öffne den SQL Trainer unter [https://info-am-gym.de/sqltrainer/](https://info-am-gym.de/sqltrainer/). Mach dich zunächst mit dem Tabellenschema der Tabelle `Person` vertraut. - Finde den Vornamen aller Männer - Finde die Vornamen aller Männer und filtere Duplikate aus (`DISTINCT`{.SQL}) - Finde den Wohnort aller Personen mit einem Jahreseinkommen über 100000 - Löse die Aufgaben unter `Kurse > Übungen 1`