<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Relationale_Datenbank</id>
	<title>Relationale Datenbank - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Relationale_Datenbank"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Relationale_Datenbank&amp;action=history"/>
	<updated>2026-05-27T17:20:15Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Relationale_Datenbank&amp;diff=14435&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Relationale_Datenbank&amp;diff=14435&amp;oldid=prev"/>
		<updated>2025-12-13T11:33:42Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Eine &amp;#039;&amp;#039;&amp;#039;relationale Datenbank&amp;#039;&amp;#039;&amp;#039; ist eine digitale [[Datenbank]], die zur elektronischen [[Datenverarbeitung|Datenverwaltung]] in [[Computer]]systemen dient und auf einem [[Datenbanktabelle|tabellenbasierten]] [[Relation (Mathematik)|relationalen]] [[Datenbankmodell]] beruht. Grundlage des Konzeptes relationaler Datenbanken ist die Relation. Sie stellt eine mathematische Beschreibung einer Tabelle dar und ist ein im mathematischen Sinn [[Wohldefiniertheit|wohldefinierter]] Begriff; siehe [[Relation (Datenbank)|Datenbankrelation]]. Operationen auf diesen Relationen werden durch die [[relationale Algebra]] bestimmt.&lt;br /&gt;
&lt;br /&gt;
Das zugehörige [[Datenbank]]managementsystem wird als &amp;#039;&amp;#039;&amp;#039;relationales Datenbankmanagementsystem&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;RDBMS&amp;#039;&amp;#039;&amp;#039; (Relational Database Management System) bezeichnet. Zum Abfragen und Manipulieren der Daten wird überwiegend die Datenbanksprache [[SQL]] (Structured Query Language) eingesetzt, deren theoretische Grundlage die relationale Algebra ist.&lt;br /&gt;
&lt;br /&gt;
Das relationale Datenbankmodell wurde 1970 von [[Edgar F. Codd]] erstmals vorgeschlagen und ist bis heute trotz einiger Kritikpunkte ein etablierter Standard für [[Datenbank]]en.&lt;br /&gt;
&lt;br /&gt;
== Grundlegende Konzepte ==&lt;br /&gt;
[[Datei:Begriffe relationaler Datenbanken.svg|mini|Begriffe relationaler Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
Eine relationale Datenbank kann man sich als eine Sammlung von [[Datenbanktabelle|Tabellen]] (den Relationen) vorstellen, in welchen Datensätze abgespeichert sind. Jede Zeile ([[Tupel (Informatik)|Tupel]]) in einer Tabelle ist ein [[Datensatz]] (&amp;#039;&amp;#039;record&amp;#039;&amp;#039;). Jedes Tupel besteht aus einer Reihe von Attributwerten ([[Attribut (Datenbank)|Attribute]] = Eigenschaften), den Spalten der Tabelle. Das [[Relationenschema]] legt dabei die Anzahl und den Typ der Attribute für eine Relation fest. Das Bild illustriert die Relation&amp;amp;nbsp;&amp;#039;&amp;#039;R&amp;#039;&amp;#039; mit Attributen &amp;#039;&amp;#039;A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; bis &amp;#039;&amp;#039;A&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; in den Spalten.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird ein Buch in einer Bibliothek durch den Datensatz &amp;#039;&amp;#039;(Buch-ID, Autor, Verlag, Verlagsjahr, Titel, Datum der Aufnahme)&amp;#039;&amp;#039; beschrieben. Ein Datensatz muss eindeutig identifizierbar sein. Das geschieht über einen oder mehrere [[Schlüssel (Datenbank)|Schlüssel]] ({{enS|key}}). In diesem Fall enthält &amp;#039;&amp;#039;Buch-ID&amp;#039;&amp;#039; die Schlüssel. Ein Schlüssel darf sich niemals ändern. Er bezieht sich auf den Datensatz und nicht auf die Position in der Tabelle.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Beispiel einer Relation „Buch“:&lt;br /&gt;
! Buch-ID|| Autor || Verlag || Verlagsjahr || Titel || Datum&lt;br /&gt;
|-&lt;br /&gt;
| 100 || Hans Vielschreiber || Musterverlag || 2007 || Wir lernen SQL || 13.01.2007&lt;br /&gt;
|-&lt;br /&gt;
| 200 || J. Gutenberg || Gutenberg und Co. || 1452 || Drucken leicht gemacht || 01.01.1452&lt;br /&gt;
|-&lt;br /&gt;
| 300 || G. I. Caesar || Handschriftverlag || −44 || Mein Leben mit Asterix || 16.03.−44&lt;br /&gt;
|-&lt;br /&gt;
| 400 || Galileo Galilei || Inquisition International || 1640 || Eppur si muove || 1641&lt;br /&gt;
|-&lt;br /&gt;
| 500 || Charles Darwin || Vatikan-Verlag || 1860 || Adam und Eva || 1862&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beziehungen zwischen Tabellen ==&lt;br /&gt;
Weiterhin können Verknüpfungen genutzt werden, um die Beziehungen zwischen Tabellen auszudrücken. Eine Bibliothekdatenbank könnte damit etwa folgendermaßen mit drei Tabellen implementiert werden:&lt;br /&gt;
&lt;br /&gt;
Tabelle &amp;#039;&amp;#039;Buch&amp;#039;&amp;#039;, die für jedes Buch eine Zeile enthält:&lt;br /&gt;
* Jede Zeile besteht aus den Spalten der Tabelle (Attributen): &amp;#039;&amp;#039;Buch-ID, Autor, Verlag, Verlagsjahr, Titel, Datum der Aufnahme&amp;#039;&amp;#039;.&lt;br /&gt;
* Als Schlüssel dient die &amp;#039;&amp;#039;Buch-ID&amp;#039;&amp;#039;, da sie jedes Buch eindeutig identifiziert.&lt;br /&gt;
&lt;br /&gt;
Tabelle &amp;#039;&amp;#039;Nutzer&amp;#039;&amp;#039;, die die Daten von allen registrierten Bibliotheksnutzern enthält:&lt;br /&gt;
* Die Attribute wären zum Beispiel: Nutzer-ID, Vorname, Nachname.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable float-left&amp;quot; style=&amp;quot;float:left; margin-right:3em;&amp;quot;&lt;br /&gt;
|+ Relation „Nutzer“&lt;br /&gt;
! Nutzer-ID|| Vorname || Nachname&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Hans || Vielleser&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Jens || Mittelleser&lt;br /&gt;
|-&lt;br /&gt;
| 12 || Erich || Wenigleser&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left;&amp;quot; &amp;gt;&lt;br /&gt;
|+ Relation „Entliehen“&lt;br /&gt;
! Nutzer-ID|| Buch-ID&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 300&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 400&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Außerdem braucht man eine dritte Tabelle &amp;#039;&amp;#039;Entliehen&amp;#039;&amp;#039;, die Informationen über die Verfügbarkeit des Buches enthält. Sie würde die Attribute &amp;#039;&amp;#039;Nutzer-ID&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Buch-ID&amp;#039;&amp;#039; enthalten. Jede Zeile dieser Tabelle &amp;#039;&amp;#039;Entliehen&amp;#039;&amp;#039; ordnet einer Nutzer-ID eine Buch-ID zu.&lt;br /&gt;
&lt;br /&gt;
Der Eintrag &amp;#039;&amp;#039;(10,300)&amp;#039;&amp;#039; würde also heißen, dass der Nutzer mit der ID &amp;#039;&amp;#039;10&amp;#039;&amp;#039; („Hans Vielleser“) das Buch mit der ID &amp;#039;&amp;#039;300&amp;#039;&amp;#039; („Mein Leben mit Asterix“) entliehen hat. Derselbe Nutzer hat auch das Buch „Drucken leicht gemacht“ entliehen, was durch den Tabelleneintrag &amp;#039;&amp;#039;(10,200)&amp;#039;&amp;#039; dargestellt ist. Als Schlüssel nimmt man hier die Attributmenge &amp;#039;&amp;#039;(Nutzer-ID, Buch-ID)&amp;#039;&amp;#039;. Gleichzeitig verbindet die &amp;#039;&amp;#039;Nutzer-ID&amp;#039;&amp;#039; jeden Eintrag der Tabelle &amp;#039;&amp;#039;Entliehen&amp;#039;&amp;#039; mit einem Eintrag der Tabelle &amp;#039;&amp;#039;Nutzer&amp;#039;&amp;#039; sowie die Buch-ID jeden Eintrag von &amp;#039;&amp;#039;Entliehen&amp;#039;&amp;#039; mit einem Eintrag der Tabelle &amp;#039;&amp;#039;Buch&amp;#039;&amp;#039;. Deswegen heißen diese Attribute in diesem Zusammenhang [[Fremdschlüssel]] (englisch {{lang|en|&amp;#039;&amp;#039;foreign key&amp;#039;&amp;#039;}}).&lt;br /&gt;
Tabellen ohne Fremdschlüssel nennt man [[flache Tabelle]]n.&lt;br /&gt;
&lt;br /&gt;
Der hier benutzte Begriff &amp;#039;&amp;#039;Relation&amp;#039;&amp;#039; beschreibt die Beziehung der Attribute zum Relationennamen. So gilt im obigen Beispiel: Hans ist ein Attribut der Relation &lt;br /&gt;
„Nutzer“. Somit wird &amp;#039;&amp;#039;Relation&amp;#039;&amp;#039; bei relationalen Datenbanken allgemein als Synonym für &amp;#039;&amp;#039;Tabelle&amp;#039;&amp;#039; genutzt. Im Gegensatz dazu beschreibt die Relation bei einem [[Entity-Relationship-Modell]] die Beziehung zwischen Entitäten.&lt;br /&gt;
&lt;br /&gt;
== Abgrenzung ==&lt;br /&gt;
Neben dem relationalen Datenbankmodell gibt es verschiedene alternative Konzepte, die es erlauben, Daten in anderen Strukturen zu verwalten. Diese Konzepte haben oft nur noch eine geringe Bedeutung oder haben sich noch nicht durchgesetzt. Dennoch bieten sie für bestimmte Applikationen eine einfachere Anbindung der zu verwaltenden Daten. In den letzten Jahren haben sich vermehrt sogenannte [[NoSQL]] Datenbanken durchgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Ältere Ansätze ===&lt;br /&gt;
In den 1960er und 1970er Jahren wurden zur betrieblichen Datenverarbeitung [[hierarchische Datenbank]]systeme sowie [[Netzwerkdatenbankmodell|Netzwerk-Datenbanksysteme]] verwendet. Bei diesen wird die Daten- bzw. Tabellenstruktur in der Entwurfsphase definiert und kann nicht bei der Abfrage variiert werden. Sie kommen in Spezialfällen auch heute noch zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
=== Objektorientierte Datenbanken ===&lt;br /&gt;
Mit dem Aufkommen [[Objektorientierte Programmierung|objektorientierter Programmiersprachen]] wurden zunehmend [[Objektdatenbank]]en angeboten. Damit können Objekte aus [[Objektorientierte Programmiersprache|OO-Sprachen]] wie [[Java (Programmiersprache)|Java]] direkt in der Datenbank gehalten werden – eine Abbildung der Objekte auf die relationale Tabellenstruktur, das [[Objektrelationale Abbildung|objektrelationale Mapping]], ist dann nicht mehr notwendig. Dieses Vorgehen hat Vorteile gegenüber dem relationalen Entwurf, wenn man komplexe Datenobjekte speichern möchte, die nur schwer auf die flachen relationalen Tabellenstrukturen abgebildet werden können. Objektdatenbanken haben jedoch noch immer Nachteile gegenüber relationalen Datenbanken bei der Verarbeitung großer Datenmengen. Dies ist beispielsweise durch Zugriffspfade zu Objekten über mehrere Pfadarten (bspw. Vererbung und Assoziation) verursacht. Dies führt bei Schreiboperationen in der Sperrverwaltung zu einer exponentiellen Komplexität und somit zu schlechter Leistung. Die Leistungsprobleme wurden in den objektrelationalen Datenbanken aufgegriffen, in denen nur die Konstrukte aus objektorientierten Datenbanken mit niedrigerer Komplexität (bspw. &amp;lt;math&amp;gt;O(n \cdot \log(n))&amp;lt;/math&amp;gt;) übernommen wurden.&lt;br /&gt;
&lt;br /&gt;
=== Objektrelationale Datenbanken ===&lt;br /&gt;
Einige Anbieter fügen ihren relationalen Datenbanken objektorientierte Eigenschaften hinzu und nennen diese dann [[objektrelationale Datenbank]]en. Diese sind jedoch nicht zur direkten Abbildung von Objekten der Programmiersprache vorgesehen – sie benutzen lediglich das Konzept der [[Vererbung (Programmierung)|Vererbung]] bei Definition und Abfrage von Tabellen mit ähnlichen Feldstrukturen und vereinfachen damit deren Handhabung. Der SQL-99-Standard wurde um objektrelationale Sprachelemente erweitert.&lt;br /&gt;
&lt;br /&gt;
=== Semistrukturierte Datenbanken ===&lt;br /&gt;
Neuere Konzepte sind die [[Semistrukturierte Daten|semistrukturierten Datenbanken]]. Sie unterscheiden sich von den herkömmlichen Datenbankmodellen darin, dass sie kein fest vorgegebenes Schema haben. Die Datenbank wird hierarchisch, baumartig aufgebaut und jede Datenbankeinheit ({{enS|entity}}) des gleichen Typs kann verschiedene Mengen von &amp;#039;&amp;#039;Attributen&amp;#039;&amp;#039; haben.&lt;br /&gt;
&lt;br /&gt;
Typische Vertreter dieses Typs sind [[XML-Datenbank]]en, welche die Daten als XML-Fragmente verwalten. Die XML-Daten sind hierbei hierarchisch geordnet und können beliebige Strukturen enthalten, solange diese nach XML-Definition wohlgeformt sind. Die Daten können über [[XQuery]] oder [[XPath]] abgefragt werden. Zur Manipulation werden heute proprietäre Spracherweiterungen verwendet. Der Nachteil von aktuellen XML-Datenbanken ist die im Vergleich zu relationalen Systemen geringere Performance.&lt;br /&gt;
&lt;br /&gt;
Semistrukturierte Datenbanken lassen sich über Erweiterungen oder Server-Programmierung auch mit relationalen DB realisieren, wobei das Relationenmodell aber nicht mehr angewendet wird.&lt;br /&gt;
&lt;br /&gt;
== Theorie der relationalen Datenbanken ==&lt;br /&gt;
Die Grundlagen der Theorie der relationalen Datenbank wurden von Edgar&amp;amp;nbsp;F.&amp;amp;nbsp;Codd in den 1960ern und 1970ern gelegt und in seiner Arbeit {{lang|en|&amp;#039;&amp;#039;A Relational Model of Data for Large Shared Data Banks&amp;#039;&amp;#039;}}&amp;lt;ref name=&amp;quot;Codd1970&amp;quot;&amp;gt;{{Literatur |Autor=[[Edgar F. Codd]] |Titel={{lang|en|A Relational Model of Data for Large Shared Data Banks}} |Sammelwerk={{lang|en|Communications of the ACM}} |Verlag=ACM Press |Ort=New York |Datum=1970-06-13 |ISSN=0001-0782 |Seiten=377–387 |Sprache=en |Online=http://www.acm.org/classics/nov95/}}&amp;lt;/ref&amp;gt; beschrieben. Theoretisch basieren alle Operationen auf der relationalen Algebra.&lt;br /&gt;
&lt;br /&gt;
=== Grundlegendes zur relationalen Algebra ===&lt;br /&gt;
Die [[relationale Algebra]] ist ein [[Algebra|algebraisches Modell]], das beschreibt, wie Daten gespeichert, abgefragt und manipuliert werden können. Die wesentlichen Operationen, aus denen alle weiteren abgeleitet werden können, sind die folgenden:&lt;br /&gt;
&lt;br /&gt;
* [[Relationale Algebra#Projektion|Projektion]] (englisch {{lang|en|&amp;#039;&amp;#039;projection&amp;#039;&amp;#039;}})&lt;br /&gt;
* [[Selektion (Informatik)|Selektion]] (englisch {{lang|en|&amp;#039;&amp;#039;selection&amp;#039;&amp;#039;}})&lt;br /&gt;
* [[Relationale Algebra#Kartesisches Produkt (Kreuzprodukt)|Kreuzprodukt]] oder [[Relationale Algebra#Kartesisches Produkt (Kreuzprodukt)|Kartesisches Produkt]] (englisch {{lang|en|&amp;#039;&amp;#039;cross product&amp;#039;&amp;#039;}}, {{lang|en|&amp;#039;&amp;#039;cross join&amp;#039;&amp;#039;}} oder {{lang|en|&amp;#039;&amp;#039;cartesian product&amp;#039;&amp;#039;}})&lt;br /&gt;
* [[Relationale Algebra#Umbenennung|Umbenennung]] (englisch {{lang|en|&amp;#039;&amp;#039;rename&amp;#039;&amp;#039;}})&lt;br /&gt;
* [[Relationale Algebra#Vereinigung|Vereinigung]] (englisch {{lang|en|&amp;#039;&amp;#039;union&amp;#039;&amp;#039;}})&lt;br /&gt;
* [[Relationale Algebra#Differenz|Differenz]] (englisch {{lang|en|&amp;#039;&amp;#039;set difference&amp;#039;&amp;#039;}} oder {{lang|en|&amp;#039;&amp;#039;minus&amp;#039;&amp;#039;}})&lt;br /&gt;
&lt;br /&gt;
Alle Anfragen, die mittels SQL an eine relationale Datenbank gestellt werden, werden vom Datenbankmanagementsystem auf diese Operatoren abgebildet, das heißt übersetzt. In der Praxis gibt es weitere Operatoren, wie zum Beispiel den [[Relationale Algebra#Join|Join-Operator]], der jedoch ebenfalls nur eine Kombination aus Kreuzprodukt, Selektion und Projektion darstellt.&lt;br /&gt;
&lt;br /&gt;
=== Beschränkungen der relationalen Algebra ===&lt;br /&gt;
Die relationale Algebra bietet keine Unterstützung zur Berechnung von [[Rekursion|rekursiven]] Anfragen ([[Transitive Hülle (Relation)|transitive Hülle]]). Das heißt beispielsweise, dass es nicht möglich ist, in einer Anfrage alle Vorfahren einer Person zu berechnen, wenn diese in einer Relation &amp;#039;&amp;#039;Person&amp;#039;&amp;#039; gespeichert sind und über eine Relation &amp;#039;&amp;#039;VorfahreVon&amp;#039;&amp;#039; mit dem jeweiligen Vorfahren in &amp;#039;&amp;#039;Person&amp;#039;&amp;#039; verbunden ist. Die Vorfahren können nur durch eine Folge von Anfragen ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
Mit der Einführung von SQL-99 wurde jedoch auch eine erweiterte relationale Algebra eingeführt, die eine Operation zur Berechnung der transitiven Hülle erlaubt.&lt;br /&gt;
&lt;br /&gt;
== Datenbankschema und Modellierung ==&lt;br /&gt;
[[Datei:Er-diagramm.svg|mini|Ein ER-Diagramm in [[Chen-Notation]]]]&lt;br /&gt;
&lt;br /&gt;
Wichtiger Bestandteil einer relationalen Datenbank ist ihr &amp;#039;&amp;#039;Schema&amp;#039;&amp;#039;. Das Schema legt fest, welche Daten in der Datenbank gespeichert werden und wie diese Daten in Beziehung zueinander stehen. Der Vorgang zum Erstellen eines Schemas nennt sich [[Datenmodellierung]].&lt;br /&gt;
&lt;br /&gt;
Zur Modellierung von relationalen Datenbanken wird auch das [[Entity-Relationship-Modell]] verwendet. Es dient zum Entwurf eines konzeptuellen Schemas, welches unter Verwendung eines [[Datenbankmanagementsystem]]s (DBMS) implementiert werden kann. Dieser Schritt wird als &amp;#039;&amp;#039;logischer Entwurf&amp;#039;&amp;#039; oder auch &amp;#039;&amp;#039;Datenmodellabbildung&amp;#039;&amp;#039; bezeichnet und hat als Ergebnis ein Datenbankschema im Implementierungsdatenmodell des DBMS.&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Schritt des Modellierungsprozesses ist die [[Normalisierung (Datenbank)|Normalisierung]]. Diese soll [[Redundanz (Informationstheorie)|Redundanzen]] verringern und [[Anomalie (Informatik)|Anomalien]] verhindern, um so die [[Wartung]] einer Datenbank zu vereinfachen, sowie die [[Konsistenz (Datenspeicherung)|Konsistenz]] der Daten zu gewährleisten. Edgar&amp;amp;nbsp;F.&amp;amp;nbsp;Codd hat dazu vier Normalformen vorgeschlagen, die seitdem bei dem relationalen Datenbankentwurf zum Einsatz kommen und um weitere ergänzt wurden.&lt;br /&gt;
&lt;br /&gt;
== Kritik am relationalen Datenbankmodell ==&lt;br /&gt;
; Segmentierung&lt;br /&gt;
: In der relationalen Darstellung erfolgt die Abspeicherung eines Objektes segmentiert auf viele unterschiedliche Relationen. Die Anwendungsobjekte sind normalerweise &amp;#039;&amp;#039;komplex&amp;#039;&amp;#039;, bestehen also selbst wieder aus Objekten oder Listen von Objekten. Da das relationale Modell lediglich Tupelmengen kennt, die aus &amp;#039;&amp;#039;Werten&amp;#039;&amp;#039; bestehen, müssen komplexe Anwendungsobjekte bei einer Abfrage durch das DBMS mittels zahlreicher [[Relationale Algebra#Join|Joins]] aus den einzelnen Relationen wiederhergestellt werden. Dies kann zu unübersichtlichen Abfragen führen, die bei jeder strukturellen Änderung des Anwendungsobjekts auf Anpassungsbedarf hin überprüft werden müssen. Die Verwendung von Joins, welche durch jeweils gut passende [[Datenbankindex|Datenbank-Indizes]] unterstützt werden müssen, macht den Objektzugriff aufwendiger als z.&amp;amp;nbsp;B. bei einer [[Objektdatenbank]], sowohl beim Ressourcenbedarf als auch beim Entwicklungsaufwand.&lt;br /&gt;
; Künstliche Schlüsselattribute&lt;br /&gt;
: Zur eindeutigen Identifizierung von [[Tupel]]n müssen in manchen Fällen [[Surrogatschlüssel|künstliche Schlüssel]] eingesetzt werden. Dies dient z.&amp;amp;nbsp;B. dazu, die Größe des Schlüssels zu reduzieren, wenn er als Fremdschlüssel eingesetzt werden soll, oder dazu, gehört-zu-Beziehungen zu implementieren. Es werden also Attribute in die Relation aufgenommen, die mit der abstrakten Beschreibung eines Anwendungsobjekts nichts zu tun haben, sondern „nur“ Verwaltungsinformationen sind.&lt;br /&gt;
; Externe Programmierschnittstelle&lt;br /&gt;
: Da in vielen relationalen Datenbanken nur Datenmanipulationssprachen eingeschränkter Mächtigkeit vorhanden sind, werden meist Schnittstellen zu mächtigeren Programmiersprachen notwendig. Diese Verbindung führt ggf. zu einer ungünstigen Handhabung, z.&amp;amp;nbsp;B. wenn das mengenorientierte [[SQL]] in dem satzorientierten [[C++]] zu verarbeiten ist, siehe [[Object-relational impedance mismatch]].&lt;br /&gt;
: Es gibt jedoch auch relationale Datenbanken mit mächtigen Programmiersprachen, etwa [[PL/SQL]] in [[Oracle (Datenbanksystem)|Oracle]] oder [[PL/pgSQL]] in [[PostgreSQL]] oder T/SQL in [[Microsoft SQL Server]]; bei beiden Datenbanksystemen erlauben die jeweiligen Datenmanipulationssprachen das Einbinden von anderen Programmiersprachen. PL/SQL ermöglicht z.&amp;amp;nbsp;B. die Verwendung von Java-Programmen oder C++-Programmen innerhalb von PL/SQL-Programmen. PL/pgSQL ermöglicht wiederum die Server-Programmierung mit anderen Sprachen wie [[PHP]], [[Tcl]] oder [[Python (Programmiersprache)|Python]].&lt;br /&gt;
; Objekteigenschaften und -verhalten häufig nicht abbildbar&lt;br /&gt;
: In der relationalen Datenbank kann das anwendungstypische Verhalten eines Objektes nicht beschrieben werden. Diese Beschreibung kann somit erst außerhalb der Datenbank in einer Anwendungssoftware erfolgen. Wenn mehrere Anwendungen den gleichen Datenbestand nutzen, kann das zu einer redundanten Implementierung führen.&lt;br /&gt;
Mit dem Sammelbegriff [[NoSQL]] werden &amp;#039;&amp;#039;&amp;#039;nicht-relationale Datenbankmodelle&amp;#039;&amp;#039;&amp;#039; bezeichnet, die Probleme wie die genannten durch alternative Herangehensweisen zu lösen beabsichtigen.&lt;br /&gt;
&lt;br /&gt;
== Gegenüberstellung von Grundbegriffen ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Relationale Datenbank !! Relationen-Modell !! [[Entity-Relationship-Modell]] (ERM) !! [[Unified Modeling Language]] (UML)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Wertebereich (Domäne, Domain)&lt;br /&gt;
|-&lt;br /&gt;
| Kopfzeile || Relationstyp/Relationsformat || Entitätstyp || Klasse, Objekttyp&lt;br /&gt;
|-&lt;br /&gt;
| Spalte || [[Attribut (Programmierung)|Attribut]]||[[Attribut (Programmierung)|Attribut]]|| [[Attribut (UML)|Attribut]]&lt;br /&gt;
|-&lt;br /&gt;
|Tabelle || [[Relation (Datenbank)|Relation]] || Entitätsmenge(-set) || Objektmenge, Instanzmenge, Klasse&lt;br /&gt;
|-&lt;br /&gt;
| Spaltenüberschrift(en) || [[Schlüssel (Datenbank)#Fremdschlüssel|Fremdschlüssel]] || funktionale Beziehung (Relationship) || Assoziation&lt;br /&gt;
|-&lt;br /&gt;
| Zeile || [[Tupel (Informatik)|Tupel]] || [[Entität (Informatik)|Entität]] || [[Objekt (Programmierung)|Objekt]], Instanz&lt;br /&gt;
|-&lt;br /&gt;
| Zelle ||colspan=&amp;quot;3&amp;quot;| Attributwert&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Relationale Entwurfstheorie]]&lt;br /&gt;
* [[Datenbank-Muster]]&lt;br /&gt;
* [[Datenbankoperator]]&lt;br /&gt;
* [[Deduktive Datenbank]]&lt;br /&gt;
* [[Liste der Datenbankmanagementsysteme]]&lt;br /&gt;
* [[Referentielle Integrität]]&lt;br /&gt;
* [[Online Analytical Processing#12 Regeln nach Codd|Codd’sche Regeln]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Edgar F. Codd: &amp;#039;&amp;#039;The Relational Model for Database Management. Version 2.&amp;#039;&amp;#039; Addison-Wesley, Reading u.&amp;amp;nbsp;a. 1990, ISBN 0-201-14192-2.&lt;br /&gt;
* [[Alfons Kemper]], André Eickler: &amp;#039;&amp;#039;Datenbanksysteme. Eine Einführung.&amp;#039;&amp;#039; R. Oldenbourg Verlag, München 2004, ISBN 3-486-27392-2.&lt;br /&gt;
* Andreas Meier: &amp;#039;&amp;#039;Relationale und postrelationale Datenbanken&amp;#039;&amp;#039;. 7. Auflage. Springer-Verlag, Heidelberg 2010, ISBN 978-3-642-05255-2 ([https://www.springer.com/computer/database+management+%26+information+retrieval/book/978-3-642-05255-2 online]).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap6.htm Kriterien für relationale Datenbanksysteme] mit ausführlicher Beschreibung der 12 Regeln&lt;br /&gt;
* [http://wikis.gm.fh-koeln.de/wiki_db/Datenbanken/RDBMS &amp;#039;&amp;#039;RDBMS&amp;#039;&amp;#039;.] In: &amp;#039;&amp;#039;Datenbanken Online Lexikon&amp;#039;&amp;#039;, FH Köln&lt;br /&gt;
* [https://www.datenbanken-verstehen.de/ Datenbanken-verstehen] – Umfangreiches Portal&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Relationales Datenbankmanagementsystem| ]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>