# 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/)