Relationale Datenbanken
Relationale Datenbanken
Übernommen von inf-schule.de
Tabellen eignen sich besonders gut, um Daten darzustellen. Sie bilden daher die Basis für relationale Datenbanken.
Merke:
Eine relationale Datenbank ist im einfachsten Fall eine Sammlung von Tabellen.
Eine Datenbanktabelle besteht aus mehreren Elementen:
- einem eindeutigen Namen
- einer Reihe von eindeutig benannten Spalten (Attribute)
- einem genau definierten Wertebereich (Datentyp) für jedes Attribut (Zahl, Text, Datum, etc.)
- beliebig vielen Zeilen (Datensätze). Jeder Datensatz besitzt Werte in den Attributen (Datenwerte).
Bei der Planung einer Datenbank sind die Datensätze zunächst unwichtig. Deswegen stellt man die Tabellen einer Datenbank verkürzt als Datenbankschema dar, wie rechts zu sehen ist für die Tabelle „ort“.
Im Datenbankschema sind nur Attribute mit ihren Datentypen zu sehen.
- ▤Name : varchar(30)
- ▤Land : varchar(50)
- #Einwohner : int(11)
- #Laenge : decimal(10,4)
- #Breite : decimal(10,4)
Fahre mit der Maus über die Begriffe oder die Zeilen des Schemas (oder tippe sie an): Die passenden Teile der Tabelle werden hervorgehoben.
Der Begriff „relational“ kommt von einer mathematischen Betrachtung einer Datenbank in einer so genannten Relationenalgebra. Das ist für uns aber zunächst nicht weiter wichtig.
Ein Wert für ein Attribut in einem Datensatz soll atomar sein. Das bedeutet unter anderem, dass nur einfache Werte und keine Listen gespeichert werden dürfen. Das Beispiel einer Klassen-Tabelle unten wäre also aufgrund der Lehrerliste nicht korrekt.
| Name | Raum | Lehrer |
|---|---|---|
| 9a | 407 | G.Lenk, A.Kribich, T.Oretisch |
| 9b | 405 | A.Kribich, S.Treng |
Aufgabe 1
Hier siehst du ein mögliches Datenbankschema für Länder, darunter drei Datensätze in der Tabelle.
- ▤LNR : varchar(4)
- ▤Name : varchar(50)
- #Einwohner : decimal(20,2)
- #Flaeche : int(11)
- ▤Hauptstadt : varchar(30)
- ▤Kontinent : varchar(15)
- #KontinentFlaeche : int(11)
- #KontinentEinwohner : int(11)
| LNR | Name | Einwohner | Flaeche | Hauptstadt | Kontinent | KontinentFlaeche | KontinentEinwohner |
|---|---|---|---|---|---|---|---|
| UAE | Vereinigte Arabische Emirate | 5.47 | 83600 | Abu Dhabi | Asien | 44 | 4010 |
| WAN | Nigeria | 230.8 | 923768 | Abuja | Afrika | 30 | 944 |
| GH | Ghana | 25.24 | 238537 | Accra | Afrika | 30 | 944 |
Ergänze drei weitere Länder und führe dazu auch ggf. eine kurze Recherche durch.
| LNR | Name | Einwohner | Flaeche | Hauptstadt | Kontinent | KontinentFlaeche | KontinentEinwohner |
|---|---|---|---|---|---|---|---|
| UAE | Vereinigte Arabische Emirate | 5.47 | 83600 | Abu Dhabi | Asien | 44 | 4010 |
| WAN | Nigeria | 230.8 | 923768 | Abuja | Afrika | 30 | 944 |
| GH | Ghana | 25.24 | 238537 | Accra | Afrika | 30 | 944 |
Aufgabe 2
Beim Planen einer Datenbank sind die konkreten Datensätze noch nicht von Bedeutung. Daher plant man zunächst nur die Tabellen mit ihren verschiedenen Attributen. Unten ist das Datenbankschema der ort-Tabelle dargestellt, welche du im Merkkasten oben schon gesehen hast. Zusätzlich ist noch eine weitere Tabelle für Länder angegeben.
- ▤Name : varchar(30)
- ▤Land : varchar(50)
- #Einwohner : int(11)
- #Laenge : decimal(10,4)
- #Breite : decimal(10,4)
- ▤LNR : varchar(4)
- ▤Name : varchar(50)
- #Einwohner : decimal(20,2)
- #Flaeche : int(11)
- ▤Hauptstadt : varchar(30)
- ▤Kontinent : varchar(15)
- #KontinentFlaeche : int(11)
- #KontinentEinwohner : int(11)
d) Welche Bedeutung könnten die Werte in den Klammern haben, z. B. varchar(30) oder int(11)?
Aufgabe 3
Erstelle die Struktur einer Tabelle für die Daten der Schülerinnen und Schüler deiner Klasse, z. B. für eine Schulverwaltungssoftware oder eine App für Vertretungspläne.
a) Welche Attribute mit welchen Wertebereichen (Datentypen) müsste die Tabelle haben?
| Attribut | Datentyp |
|---|---|
b) Was solltest du speichern: das Alter der Schülerin/des Schülers oder das Geburtsdatum?
c) Schreibe einige wenige Beispieldatensätze auf (mit erfundenen Daten). Trage in die erste Zeile deine Attribute ein.
Aufgabe 4
Immer wieder parken Autos von Fremden auf dem Lehrerparkplatz. Das Sekretariat benötigt daher die Information, welches Auto von welchem Lehrer gefahren wird. Dafür wurde die Lehrer-Tabelle ergänzt:
| Name | Fächer | KFZ |
|---|---|---|
| G.Lenk | D, E | XX-GL 999 |
| A.Kribich | M, kR, Sp | YY-AK 42, YY-MK 88 |
Warum ist die Tabelle nicht gut gelungen und widerspricht eigentlich sogar den Regeln einer relationalen Datenbank?