====== Tabellen erstellen ====== ===== Beispielaufgabe 1 ===== Eine Bibliothek möchte eine Datenbank zur Speicherung ihrer Bücher verwenden. Sie benötigt dazu eine Tabelle ''Buch'' mit Spalten zum Speichern von * Titel, * Autor, * Erscheinungsjahr, * Verlag, * Anschaffungsdatum und * der Information darüber, ob es sich um ein Kinderbuch handelt. a) Erstelle das Tabellenschema. Füge zu den obigen Spalten noch eine Primärschlüsselspalte ''id'' vom Datentyp ''int'' hinzu. b) Gib eine ''CREATE TABLE''-Anweisung zur Erstellung der Tabelle in der Sprache SQL an. ==== Primärschlüssel ==== In einer relationalen Datenbank benötigt jede Tabelle einen **Primärschlüssel**. Dies ist eine Spalte((Es ist auch möglich, mehrere Spalten zu einem Primärschlüssel zu kombinieren, dies wird aber in der Praxis nie so gehandhabt, da es zu schlechterer Performance bei Datenbankabfragen führt.)), in der lauter verschiedene Werte stehen, d.h. die Datenbank stellt sicher, dass es keine zwei Datensätze in der Tabelle gibt, die denselben Wert in dieser Spalte haben. In der Regel verwendet man als Primärschlüssel eine Spalte ''id'' vom Datentyp ''int''. Im **Tabellenschema** kennzeichnen wir die **Primärschlüsselspalte**, indem wir sie **unterstreichen**. **Wozu wird der Primärschlüssel benötigt?** \\ In Jahrgangsstufe 10 werden wir Daten auf mehrere Tabellen verteilen, die miteinander in Beziehung stehen. Ein Datensatz einer Tabelle kann dann auf einen Datensatz einer anderen Tabelle verweisen. Stell' dir folgende zwei Tabellen in der Datenbank einer Schule vor: \\ \\ Klasse(__id: int__; name: varchar(5)) \\ Schüler(__id: int__; rufname: varchar(30); familienname: varchar(30); klasse_id int) \\ \\ Die Spalte ''klasse_id'' nennt man **Fremdschlüssel**. Ist dir klar, wozu sie dient und welche Werte darin gespeichert werden? Das funktioniert natürlich nur dann, wenn die Werte in der Primärschlüsselspalte ''__id__'' der Tabelle ''Klasse'' eindeutig sind. Freu' dich auf Jahrgangsstufe 10, da werden wir Fremdschlüssel ganz langsam und ausführlich kennenlernen! ===== Lösung ===== === Tabellenschema: === Buch(__id: int__; Titel: varchar(200); Autor: varchar(200); Erscheinungsjahr: int; Verlag: varchar(150), anschaffungsdatum: date; ist_kinderbuch: boolean) === SQL === CREATE TABLE Buch ( id int primary key, Titel varchar(200), Autor varchar(200), Erscheinungsjahr int, Verlag varchar(150), anschaffungsdatum date, ist_kinderbuch boolean ); ===== Aufgabe 2 ===== In der Tabelle ''Staat'' sollen die Daten aller Staaten der Erde gespeichert werden. Sie soll Spalten für * Name * Bevölkerungsanzahl * Fläche (in $km^2$) und * das Gründungsdatum besitzen. Zudem wird eine Primärschlüsselspalte benötigt. a) Erstelle das Tabellenschema. \\ b) Gib eine ''CREATE TABLE''-Anweisung zur Erstellung der Tabelle in der Sprache SQL an. ===== Aufgabe 3 ===== Die Firma "Fahrradhandel fit & schnell" möchte alle Waren in einer Datenbanktabelle speichern. Die Tabelle soll Spalten für * Die Bezeichnung der Ware, * ihren Preis je Stück und * den Lagerbestand enthalten, sowie eine Primärschlüsselspalte. a) Erstelle das Tabellenschema. \\ b) Gib eine ''CREATE TABLE''-Anweisung zur Erstellung der Tabelle in der Sprache SQL an.