🇩🇪 Grundlagen von Datenbanksystemen
Tags: german, sql, database, beginners
Published: 2024-07-06 10:12:15

Hast du dich je gefragt, wie deine Lieblings-Apps blitzschnell auf deine Daten zugreifen? Oder wie Online-Shops Millionen von Produkten verwalten? Die Antwort liegt in der faszinierenden Welt der Datenbanken. In diesem Beitrag tauchen wir in die Grundlagen ein und schauen uns an, wie du mit MySQL, einem der beliebtesten Datenbanksysteme, loslegen kannst.

## Was sind Datenbanken?
Stell dir vor, du hast eine riesige Tabelle mit allen deinen Kontakten, Terminen und Notizen. Super für dich, aber eine App wie WhatsApp müsste das für Milliarden von Nutzern tun - nicht so optimal. Hier kommen Datenbanken ins Spiel. Eine Datenbank ist eine organisierte Sammlung von Daten. Statt alles in einer endlosen Tabelle zu haben, strukturieren Datenbanken Informationen in Tabellen mit Zeilen (Datensätze) und Spalten (Eigenschaften)[<sup>1</sup>](#fn-1)


```
+-------------+---------+---------------+
| Name        | Alter   | E-Mail        |
+-------------+---------+---------------+
| Anna Müller | 27      | anna@web.de   |
| John Doe    | 32      | john@mail.com |
+-------------+---------+---------------+
```

Der Clou? Datenbanken können diese Tabellen verknüpfen. So kannst du schnell und effizient Beziehungen zwischen Daten herstellen, ohne alles mehrfach zu speichern.

Für einen verständlichen Einstieg empfehle ich "Database Design for Mere Mortals" von Michael J. Hernandez[<sup>2</sup>](#fn-2). Er erklärt die Konzepte wirklich gut für Anfänger.

## Unterschied zwischen relationalen und nicht-relationalen Datenbanken
### Relationale Datenbanksysteme
Die relationalen Datenbankverwaltungssystem (*Relational Database Management System, RDBMS*) basieren auf einem Modell von Edgar F. Codd aus den 70ern[<sup>3</sup>](#fn-3). Denk an sie wie an ein gut organisiertes Bücherregal, wo jedes Buch (*Datensatz*) einen festen Platz hat.

- **Bekannte Vertreter**: MySQL, PostgreSQL, Oracle Database
- **Sprache**: SQL (Structured Query Language)
- **Gut für**: Banken, E-Commerce, alles mit stark strukturierten Daten

```sql
-- SQL in Aktion: Finde alle Kontakte mit "@web.de"
SELECT Name, eMail 
FROM Kontakte 
WHERE eMail LIKE '%@web.de';
```

### Nicht relationale (NoSQL) Datenbanksysteme
NoSQL bedeutet "Not Only SQL". Sie entstanden, weil das Internet plötzlich mit Daten überflutet wurde, die nicht gut in Tabellen passten.

- **Bekannte Vertreter**: MongoDB (*Dokumente*), Cassandra (*Spalten*), Redis (*Key-Value*)
- **Gut für**: Social Media, Internet-of-Things (*IoT*), schnell ändernde Datenstrukturen

```json
// MongoDB-Stil: Ein Kontakt und seine Notizen
{
  "name": "Anna Müller",
  "alter": 27,
  "email": "anna@web.de",
  "notizen": [
    { "datum": "2024-05-15", "text": "Meeting für Projekt X" },
    { "datum": "2024-05-20", "text": "Annas Geburtstag!" }
  ]
}
```

### Vorteile von Datenbanksystemen
1. **Zentrale Datenverwaltung**: Alles an einem Ort, leicht zu warten und zu sichern.
2. Datensicherheit:
	- ACID-Prinzipien (Atomicity, Consistency, Isolation, Durability)
		- mehr dazu in den folgenden Einträgen 😉
	- Benutzerverwaltung und Zugriffskontrolle
3. **Effiziente Abfragen**: Komplexe Daten schnell finden und analysieren.
4. **Datenintegrität**: Keine Duplikate, keine Inkonsistenzen.
5. **Mehrere Nutzer**: Gleichzeitiger Zugriff ohne Datenkonflikte.


## Einführung in MySQL
MySQL ist ein beliebtes Open-Source-Datenbanksystem - schnell, zuverlässig und einfach zu benutzen.

### Installation und Tools
1. Besuche [mysql.com](https://mysql.com/) und lade MySQL Comunity Server herunter
2. Folge den Installationsanweisungen für dein Betriebssystem
3. Verwende Tools wie [MySQL Workbench](https://www.mysql.com/products/workbench/) oder [Tableplus](https://tableplus.com) (grafisch), oder die Kommandozeile

### Erste Schritte mit MySQL
Als erstes öffne MySQL Workbench oder die Konsole (oder ein anderes Tool deiner Wahl) und verbinde dich mit deinem Server. In den folgenden Beispielen nutzen wir die Kommandozeile:

```bash
mysql -u root -p
```

Lass uns nun unsere erste Datenbank und eine Tabelle erstellen

```sql
CREATE DATABASE meinprojekt;
USE meinprojekt;

CREATE TABLE aufgaben(
  id INT PRIMARY KEY,
  titel VARCHAR(100),
  abgabe DATE
);
```

Sei unbesorgt, falls dir nicht ganz klar ist, was die einzelnen SQL Befehle genau machen - das schauen wir uns im nächsten Beitrag genauer an.

## Fazit
Datenbanken sind das Rückgrat moderner Anwendungen. MySQL ist ein toller Einstieg in die Welt der relationalen Datenbanken. Bleib dran, in den nächsten Beiträgen tauchen wir tiefer in SQL und fortgeschrittene MySQL-Themen ein!

## Übungen
- **Übung 1**: Recherchiere und beschreibe die Unterschiede zwischen relationalen und nicht-relationalen Datenbanken. Gebe Beispiele für beide Typen und diskutiere die Vor- und Nachteile von beiden.
- **Übung 2**: Installiere MySQL und MySQL Workbench auf deinem Computer. Erstelle eine neue Datenbank namens `Bibliothek` und überprüfen, ob du erfolgreich eine Verbindung herstellen kannst


## Referenzen
Referenzen und weiterführende Lektüre

1. <span id="fn-1"></span>[C.J. Date (2003), *"An Introduction to Database Systems: International Edition"*](https://amzn.to/3KBbMxs) *
2. <span id="fn-2"></span>[Hernandez, Michael J. (2013), *"Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design"*](https://amzn.to/3KC3Ufo) *
3. <span id="fn-3">Codd, E.F. (1970), *"A Relational Model of Data for Large Shared Data Banks"*</span> *
4. <span id="fn-4"></span>[Alfons Kemper und André Eickler (2015), *"Datenbanksysteme: Eine Einführung (De Gruyter Studium)"*] (https://amzn.to/4cflG3P) *
5. <span id="fn-5"></span>[Michael Kofler (2024), *"Datenbanksysteme: Das umfassende Lehrbuch für Ausbildung, Beruf und Studium"*](https://amzn.to/4aOJb2B) *


\* **Affiliatelinks/Werbelinks**: Wenn du auf einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Du unterstützt den Blog und für dich ändert sich nichts am Preis.