====== Aufgabe 1: Mitgliederverzeichnis ====== Lea und Dominik gehen zusammen in den Schwimmverein. Ihr Trainer erfährt, dass sie in der 10. Klasse auch den Umgang mit Datenbanken lernen und fragt sie, ob sie nicht mal Ordnung in seine Datensammlung bringen könnten, indem sie eine Vereinsdatenbank erstellen. \\ Bisher speichert er das Vereinsregister in einem großen Worddokument, das alle Informationen enthält, die er für die Verwaltung des Vereins braucht: {{ :jg10:wiederholung:mitgliederverzeichnis:vereinsregister_sv_otterburg.pdf |Vereinsregister_sv_otterburg.pdf}} - Welche Daten sollen in der Datenbank gespeichert werden? Überlege kritisch! - Erstelle eine Klassenkarte. - Zeichne beispielhaft eine Objektkarte. - Finde passende Datentypen zu den Attributen und erstelle das Tabellenschema. - Die Tabelle braucht einen Primärschlüssel. Was würdest Du vorschlagen? ====== Wiederholung: relationales Datenmodell ====== {{ :jg10:wiederholung:mitgliederverzeichnis:pasted:20220910-183824.png?200}} * Einer **Klasse** im objektorientierten Modell entspricht eine **Tabelle** im relationalen Datenmodell * Der Bezeichner der Klasse entspricht dem Bezeichner der Tabelle ("Handy") * Die **Attribute** der Klasse entsprechen den **Spalten** der Tabelle ("Id", "Marke", ...) * Den **Objekten** im objektorientierten Modell entsprechen die **Zeilen** der Tabelle (Fachwort: **"Datensätze"**) * Eine Spalte (oder eine Kombination von mehreren Spalten), deren Werte über die ganze Tabelle hinweg eindeutig sind und damit jeden Datensatz eindeutig indentifizieren, verwendet man als **Primärschlüssel** der Tabelle. * Meist wird eine neue Spalte (hier "Id") als Primärschlüssel verwendet, deren Werte sachlich nichts beitragen, aber auf einfache Weise eindeutig belegt werden können (z.B. Durchnummerieren). So eine Spalte nennt man dann **künstlicher Primärschlüssel**. \\ \\ **Objektkarten** \\ Im schulischen Kontext werden Objekte/Datensätze oft als **Objektkarten** dargestellt. Für die obige Tabelle hier zwei mögliche Objektkarten: {{ :jg10:wiederholung:mitgliederverzeichnis:pasted:20220910-190339.png?400 }} \\ **Obige Klassenkarte/Objektkarten entsprechen folgender Tabelle ''Handy'' in der Datenbank:** ^__Id__^Marke^Typ^Ram^SSD^Größe^AuflösungX^AuflösungY^ |958|Apple|Iphone 5|1024|16|4.0|1136|640| |1246|Samsung|Galaxy S5|2048|32|5.0|1920|1080| ====== Wiederholung: Datentypen ====== Wir kennen folgende **SQL-Datentypen**: * varchar(50) (Zeichenkette, hier max. 50 Zeichen lang) * int (ganze Zahl) * boolean (Wahrheitswert) * decimal(10,2) (Dezimalzahl, hier 10 Stellen, davon 2 Nachkommastellen) * date (Datumswert) * time (Zeit, von 0:00 bis 23:59) * timestamp, datetime (Zeitstempel, d.h. Datum + Uhrzeit) Hier das obige **Tabellenschema** mit SQL-Datentypen: {{ :jg10:wiederholung:mitgliederverzeichnis:pasted:20220910-185151.png?300 }} Oft schreibt man Tabellenschemata in folgender **Kurzform**: \\ Handy(__id: int__, Marke: varchar(80), Typ: varchar(80), Ram: int, SSD: int, Größe: decimal(3,1), AuflösungX: int, AuflösungY: int)