---
cssclasses:
  - lecture-note
  - db-note
---

> [!question] Was ist ein Datenbanksystem (DBS)?
> Ein System zum speichern und Verwalten von Daten

> [!question] Warum kein herkömmliches Dateisystem verwenden?
> Ausfallsicherheit und Skalierbarkeit nur mit hohem Aufwand erreichbar.

> [!cards]
> > [!card] Typische Probleme ohne DBS
> > - Redundanz und Inkonsistenz
> > - Verschiedene Datenformate
> > - Probleme beim Mehrbenutzerbetrieb
> > - Verlust von Daten
> > - Integritätsverletzungen
> > - Sicherheitsprobleme
> > - Hohe Entwicklungskosten für Anwendungsprogramme
>
> > [!card] Gründe für den DBS-Einsatz
> > - [[#Datenunabhängigkeit|Datenunabhängigkeit]]
> > - [[#Deklarative Anfragesprache|Deklarative Anfragesprachen]]
> > - [[#Mehrbenutzersynchronisation|Mehrbenutzersynchronisation]]
> > - [[#Fehlerbehandlung|Fehlerbehandlung]]
> > - [[#Datenintegrität|Sicherstellung der Datenintegrität]]
> > - [[#Effizienz und Skalierbarkeit|Effizenz und Skalierbarkeit]]

### Datenunabhängigkeit

> [!split]
> ![[database_three_level_architecture.png|300]]
>
> **Sicht:** beschreibt wie ein Benutzer die Daten sieht
> **Logische Ebene:** beschreibt wie die Daten strukturiert sind
> **Physische Ebene:** beschreibt wie die Daten gespeichert wird

- DBS entkoppelt Anwendungen von der eigentlichen Struktur und Speicherung der Daten
- **Logische Datenunabhäangigkeit**
	- Änderungen auf der logischen Ebene haben keinen Einfluß auf Anwendungen
- **Physische Datenunabhäangigkeit**
	- Änderungen auf der physischen Ebene haben keinen Einfluß auf Anwendungen
	- Wird in fast allen modernen DBS durchgesetzt

### Deklarative Anfragesprache

- Benutzer sagt DBS was für Daten geholt werden sollen ...
- ... und nicht **wie** die Daten geholt werden sollen
- Weniger fehleranfällig (beim Formulieren von Anfangen / Entwickeln von Anwendungen), da kein wissen über die tieferen Schichten des DBS nötig sind.

### Mehrbenutzersynchronisation

- Wenn mehrere Benutzer ohne jegliche Kontrolle gleichzeitig Daten ändern können, gibt es große Probleme
- DBS erlaubt gleichzeitigen Zugriff und verhindert schlimme Seiteneffekte

### Fehlerbehandlung

- DBS kann Zustand zum Zeitpunkt eines Absturzes rekonstruieren
- Dafür werden Logdateien vom DBS angelegt und verwaltet

### Datenintegrität

- Datenverarbitung in einer anwendung läuft nicht völlig zufallig ab, sondern folgt gewissen Prinzipien
- DBS befolgt (angegebene) Prinzipien und schützt so vor:
	- Benutzerfehlern
	- Programmfehlern

### Effizienz und Skalierbarkeit

- DBSe sind für groß angelegte Anwendungen konzipiert
- In DBSen sind Techniken integriert, die mit großen Datenvolumen umgehen können

### Grobe Architektur

> [!figure|nocap]
> ![[database_management_system_architecture.png|440]]

### Detalierte Übersicht

> [!figure|nocap]
> ![[database_management_system_internal_architecture.png|480]]

## Datenmodellierung

Ein Benutzer muss immer noch die Anforderungen einer Anwendung und die Art von daten die gespeichert werden sollen spezifieren

### Zwei wichtige konzepte beim Entwurf

> [!definition] Datenmodell
> Es legt fest, welche Konstrukte zum Beschreiben der Daten existieren
>
> > [!example] Beispiel
> > → ==SQL==: Das relatione Modell ist dein Datenmodell. Deine "Lego-Bausteine" sind Konzepte wie Tabellen, Spalten (mit Datentypen wie `VARCHAR`, `INT`, `BOOLEAN`) Primärschlüssel und Fremdschlüssel. Das Modell gibt vor, dass Daten in Tabellen organisiert werden und wie diese Tabellen miteinander in Beziehung stehen können

> [!definition] Schema
> eine konkrete Bescreibung einer bestimmten Datensammlung (unter Verwendung eines Datenmodells)
>
> > [!example] Beispiel
> > → ==SQL==: deine `CREATE TABLE` Anweisungen sind dein Schema. Wenn man schreibt:
> >
> > ```sql
> > CREATE TABLE Kunden (
> >     kunden_id INT PRIMARY KEY,
> >     name VARCHAR(255),
> >     email VARCHAR(255),
> >     age INT
> > );
> > ```
> >
> > ... dan hast du gerade das Schema für eine Kundendatenbank definiert-

### Datenmodelle

> [!columns]
> > [!column] Konzeptuelle Modelle:
> > - Entity-Relationship-Modell (ER-Modell)
> > - Unified Modeling Language (UML)
>
> > [!column] Logische Modelle:
> > - Hierarchisches Modell
> > - Netzwerkmodell
> > - Relationales Modell
> > - Objekt-orientiertes Modell
> > - Objekt-relationales Modell
> > - Semistrukturiertes Modell
> > - Graphstrukturiertes Modell

#### Schritte der modellierung

> [!figure|nocap]
> ![[conceptual_to_logical_database_schema_transformation.png|440]]

> [!figure] Beispiel
> ![[university_entity_relationship_model.png|400]]

> [!figure] Beispiel(2)
> ![[university_relational_database_schema.png|520]]

> [!summary] Zusammenfassung
> - Viele Anwendungen haben ähnliche Erfordernisse, was die Datenverwaltung angeht
> - Ein DBS bildet eine gemeinsame Basis und bietet eine Infrastruktur, die diese Anwendungen unterstützt