# Einführung in relationale Datenbanken
## Was ist eine relationale Datenbank?
Eine **relationale Datenbank** speichert Daten in **Tabellen**, ähnlich wie in einer Excel-Tabelle.
Jede Tabelle besteht aus:
- **Zeilen** = einzelne Datensätze (z. B. ein Kunde)
- **Spalten** = Eigenschaften dieser Datensätze (z. B. Name, Adresse)
Tabellen werden über **gemeinsame Schlüssel (IDs)** miteinander **verknüpft**.
So können Daten **geordnet, eindeutig und ohne Dopplungen** gespeichert werden.
**Beispiel:**
- **Kunden**-Tabelle: enthält eine eindeutige **Kundennummer (ID)**
- **Bestellungen**-Tabelle: enthält die **Kundennummer (Fremdschlüssel)**, um festzulegen, **welcher Kunde** die Bestellung aufgegeben hat.
In **Django** werden diese Verknüpfungen durch **Modelle** und **Foreign Keys** umgesetzt.
---
## Beziehungen zwischen Tabellen
| Beziehung | Bedeutung | Beispiel (Onlineshop) | Umsetzung in Django |
|------------|------------|-----------------------|---------------------|
| **1 : 1** | Ein Datensatz in Tabelle A gehört zu genau einem in Tabelle B | Jeder **Kunde** hat genau **ein Kundenkonto** | `OneToOneField` |
| **1 : n** | Ein Datensatz in A gehört zu vielen in B | Jeder **Kunde** kann **mehrere Bestellungen** haben | `ForeignKey` |
| **m : n** | Viele Datensätze in A können mit vielen in B verknüpft sein | Eine **Bestellung** enthält **mehrere Produkte**, und jedes **Produkt** kann in **mehreren Bestellungen** vorkommen | `ManyToManyField` |
---
## Wichtige Begriffe
- **Primärschlüssel (Primary Key)** → eindeutige ID für jeden Datensatz
- **Fremdschlüssel (Foreign Key)** → verweist auf eine ID in einer anderen Tabelle
- **Relation** → logische Verbindung zwischen Tabellen über Schlüssel
## Hilfreiche Links
- [Django Many-to-Many Beziehungen](https://docs.djangoproject.com/en/5.1/topics/db/examples/many_to_many/)
- [Django Many-to-One Beziehungen](https://docs.djangoproject.com/en/5.2/topics/db/examples/many_to_one/)
- [Django One-to-One Beziehungen](https://docs.djangoproject.com/en/5.1/topics/db/examples/one_to_one/)