Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
modul:m290_guko:learningunits:lu01:theorie:c_relational_dbs [2025/08/17 03:38] – gkoch | modul:m290_guko:learningunits:lu01:theorie:c_relational_dbs [2025/08/17 20:30] (aktuell) – gkoch |
---|
| |
==== Vorteile beim Einsatz von Datenbanken ==== | ==== Vorteile beim Einsatz von Datenbanken ==== |
* Eine Datenbank ermöglicht die **dauerhafte, zentrale Speicherung von Daten** und kann diese eigenständig verwalten. Das Speichern und Abfragen erfolgt über eine **Skriptsprache** wie SQL oder einer herstellerspezifischen Abwandlung (z.B. T-SQL von Microsoft). | * Eine Datenbank ermöglicht die **dauerhafte, zentrale Speicherung von Daten** und kann diese eigenständig verwalten. |
* Der Einsatz von Datenbanken **verhindert Redundanzen** (mehrfache Speicherung gleicher Informationen) und Inkonsistenzen (Probleme bei der Aktualisierung mehrfach gespeicherter Datensätze). Zudem wird die **Programm-Daten-Abhängigkeit** aufgelöst, da alle Programme eine zentrale Datenbasis verwenden. | * Der Einsatz von Datenbanken **verhindert Redundanzen** ((Ohne Datenbank kommt es schnell zu mehrfachen Datensätzen, z. B. ein Kunde in mehreren Excel-Listen unterschiedlicher Abteilungen. Mit einer zentralen Datenbank wird jeder Kunde nur einmal gespeichert – alle greifen auf denselben Datensatz zu.)) und Inkonsistenzen ((Wenn dieselbe Information mehrfach gespeichert wird, können Abweichungen entstehen – z. B. wird die Adresse eines Kunden nur in einer Datei geändert, aber nicht in der anderen. Mit einer zentralen Datenbank gibt es nur eine Datenquelle und damit keine widersprüchlichen Angaben.)). Zudem wird die **Programm-Daten-Abhängigkeit** ((Früher hatten Programme eigene Datenbestände, die gepflegt werden mussten. Änderungen in der Datenstruktur erforderten oft Programmänderungen. Mit einem Datenbankmanagementsystem (DBMS) werden die Daten getrennt von der Logik verwaltet. Mehrere Programme können so dieselben Daten nutzen, ohne sie selbst speichern zu müssen.)) aufgelöst, da alle Programme eine zentrale Datenbasis verwenden. |
* DBMS bieten eine Vielzahl von **Datenanalyse-Methoden** zur Auswertung von Informationen. Die SQL-Skriptsprache stellt Funktionen zur Berechnung, Aggregation und Sortierung der Daten zur Verfügung. | * DBMS bieten eine Vielzahl von **Datenanalyse-Methoden** zur Auswertung von Informationen. Die SQL-Skriptsprache stellt Funktionen zur Berechnung, Aggregation und Sortierung der Daten zur Verfügung. |
* Datenbankmanagementsysteme (DBMS) sind **abfrageoptimiert** und können Daten in einem Bruchteil der Zeit auslesen, die andere Dateiformate (z.B. Excel, CSV) benötigen. | * Datenbankmanagementsysteme (DBMS) sind **abfrageoptimiert** und können Daten in einem Bruchteil der Zeit auslesen, die andere Dateiformate (z.B. Excel, CSV) benötigen. |
| |
===== Relationale Datenbanken (Relational Databases) ===== | ===== Relationale Datenbanken (Relational Databases) ===== |
Relationale Datenbanksysteme (RDBMS, *Relational Database Management Systems*) existieren seit den 1980er Jahren und haben sich seitdem zum De-facto-Standard für die Verwaltung strukturierter Daten entwickelt. Sie sind die am weitesten verbreiteten Datenbanksysteme weltweit. Relationale Datenbanken ermöglichen eine **strukturierte Speicherung** von Daten, die in **Tabellen** (tables), **Spalten** (columns) und **Zeilen** (rows) organisiert sind. Diese Struktur hilft dabei, Daten effizient zu verwalten und zu durchsuchen. | Relationale Datenbanksysteme (RDBMS, *Relational Database Management Systems*) gibt es seit den 1980er Jahren. Sie haben sich zum De-facto-Standard für die Verwaltung strukturierter Daten entwickelt und sind heute die am weitesten verbreitete Form von Datenbanksystemen. |
| |
Ein zentrales Konzept relationaler Datenbanken ist die **Relation** (relation), ein mathematischer Begriff, der als Grundlage für das Modell von Daten dient. Jede Tabelle in einer relationalen Datenbank stellt eine Relation dar, wobei jede Zeile dieser Tabelle als **Tupel** (tuple) bezeichnet wird. Eine Zeile (Tuple) repräsentiert dabei ein Datensatz. Die **Spalten** einer Tabelle sind durch **Attribute** (attributes) definiert, und die **Spaltenüberschriften** repräsentieren die **Attributnamen** (attribute names). Ein einzelner Eintrag in einer Zeile und einer Spalte wird als **Attributwert** (attribute value) bezeichnet. | Relationale Datenbanken speichern Informationen in **Tabellen** (tables). Tabellen bestehen aus **Zeilen** (rows, auch **Tupel/tuples** genannt) und **Spalten** (columns, auch **Attribute/attributes** genannt). |
| - Eine **Zeile** (Tupel) steht für einen vollständigen Datensatz, zum Beispiel einen Kunden oder eine Bestellung. |
| - Eine **Spalte** (Attribut) beschreibt eine bestimmte Eigenschaft dieses Datensatzes, zum Beispiel den Namen oder die E-Mail-Adresse eines Kunden. |
| - Ein einzelner Eintrag in einer Zelle ist ein **Attributwert** (attribute value). |
| |
Die erste Zeile einer Tabelle gibt die Struktur der Tabelle an und definiert die Anzahl und die Benennung der Spalten. Die Verknüpfungen zwischen den Tabellen ermöglichen es, Beziehungen zwischen den gespeicherten Entitäten (entities) zu modellieren und so Datenredundanzen zu vermeiden. So können beispielsweise mehrere Tabellen miteinander in Beziehung gesetzt werden, um komplexe Datenstrukturen abzubilden und die Datenkonsistenz zu gewährleisten. | {{:modul:m290_guko:learningunits:lu01:theorie:relationale_dbs_tabellen.png?direct&900|}} |
| |
Stellen Sie sich eine Tabelle, die Kundendaten speichert vor. Jede Zeile der Tabelle repräsentiert dabei einen Kunden. Jede Spalte gibt bestimmte Informationen über den Kunden an, wie z.B. den Namen und die Email-Adresse. In einer Tabelle für Bestellungen könnte eine Zeile eine einzelne Bestellung darstellen, und die Spalten könnten Informationen wie die Bestellnummer oder das Bestelldatum enthalten. | Beispiel einer Kundentabelle mit verknüpfter Bestelltabelle: |
| - Jede **Zeile** repräsentiert einen Kunden. |
* Zeile = Tupel (tuple): Eine Zeile enthält alle Informationen zu einem bestimmten Datensatz (z.B. ein Kunde oder eine Bestellung). | - Die **Spalten** enthalten Merkmale wie Name und E-Mail-Adresse. |
* Spalte = Attribut (attribute): Die Spalten der Tabelle beschreiben Merkmale des Kunden (z.B. "Name" oder "Email"). | |
| |
{{:modul:m290_guko:learningunits:lu01:theorie:relationale_dbs_tabellen.png?direct&900|}} | |
| |
==== Was bedeutet Relation? ==== | In der zweiten Tabelle **Bestellungen**, repräsentiert jede Zeile eine Bestellung mit Attributen wie das bestellte Produkt oder wer die Bestellung getätigt hat (via Fremdschlüssel -> Erklärung dazu, weiter unten). |
| |
Der Begriff Relation ist der mathematische Ursprung für die Struktur von Tabellen. Eine Relation (relation) ist einfach eine Tabelle, die eine bestimmte Art von Daten speichert (z.B. Kunden, Bestellungen). Der Name "relational" kommt daher, dass wir Beziehungen (Relations) zwischen verschiedenen Tabellen herstellen können. | ==== Was bedeutet „Relation“? ==== |
| Der Begriff **Relation** stammt aus der Mathematik und ist die Grundlage relationaler Datenbanken. Eine Relation ist nichts anderes als eine Tabelle mit Daten einer bestimmten Art (z.B. Kunden, Bestellungen). Der Name „relational“ ergibt sich daraus, dass Tabellen miteinander in **Beziehung** (relation) gesetzt werden können. |
| |
=== Wie sind Tabellen miteinander verbunden? === | ==== Wie sind Tabellen miteinander verbunden? ==== |
| Tabellen können über **Schlüssel** verknüpft werden: |
| - Ein **Primärschlüssel** (primary key) identifiziert jede Zeile in einer Tabelle eindeutig. |
| - Ein **Fremdschlüssel** (foreign key) verweist auf den Primärschlüssel einer anderen Tabelle. |
| |
Ein wichtiger Bestandteil relationaler Datenbanken ist, dass Tabellen miteinander verknüpft werden können. Diese Verknüpfung erfolgt über Primär- und Fremdschlüssel (primary and foreign keys). Ein Fremdschlüssel ist ein Verweis von einer Tabelle auf eine andere. Zum Beispiel: | Beispiel: |
| - In der **Kundentabelle** gibt es für jeden Kunden eine eindeutige **Kundennummer (ID)** (Primärschlüssel). |
| - In der **Bestellungstabelle** wird dieselbe Kundennummer als **Fremdschlüssel (customer_id)** gespeichert. |
| So lässt sich jede Bestellung eindeutig einem Kunden zuordnen. |
| |
* In einer Kundentabelle könnte jede Zeile eine Kundennummer enthalten. | |
* In einer Bestellungstabelle könnte es eine Spalte geben, die die Kundennummer enthält. Dieser Verweis stellt eine Verbindung zwischen den beiden Tabellen her, weil wir so wissen, welcher Kunde welche Bestellung gemacht hat. | |
| |
| |
==== SQL ==== | ==== SQL ==== |
| |
Relationale Datenbanken nutzen die **Structured Query Language (SQL)**, um Daten abzufragen (query), zu modifizieren (manipulate), zu löschen (delete) und zu verwalten. SQL ist eine standardisierte Programmiersprache, die speziell für die Verwaltung relationaler Daten entwickelt wurde. Dabei haben verschiedene Datenbankanbieter oft eigene Erweiterungen oder Dialekte von SQL entwickelt, wie z.B. T-SQL (Transact-SQL) von Microsoft oder PL/SQL (Procedural Language/SQL) von Oracle. Mehr dazu auf der nächsten Seite. | Relationale Datenbanken nutzen die **Structured Query Language (SQL)**, um Daten abzufragen (query), zu modifizieren (manipulate), zu löschen (delete) und zu verwalten. SQL ist eine standardisierte Programmiersprache, die speziell für die Verwaltung relationaler Daten entwickelt wurde. Dabei haben verschiedene Datenbankanbieter oft eigene Erweiterungen oder Dialekte von SQL entwickelt, wie z.B. T-SQL (Transact-SQL) von Microsoft oder PL/SQL (Procedural Language/SQL) von Oracle. |
| |
===== Video: Relationale und NoSQL-Datenbanken ===== | ===== Video: Relationale und NoSQL-Datenbanken ===== |