<?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=Datenbank-Muster</id>
	<title>Datenbank-Muster - 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=Datenbank-Muster"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Datenbank-Muster&amp;action=history"/>
	<updated>2026-06-01T18:45:27Z</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=Datenbank-Muster&amp;diff=2904127&amp;oldid=prev</id>
		<title>imported&gt;1234qwer1234qwer4: Kommaregeln der deutschen Sprache#Infinitivgruppe (via JWB)</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Datenbank-Muster&amp;diff=2904127&amp;oldid=prev"/>
		<updated>2026-03-06T21:16:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php/Kommaregeln_der_deutschen_Sprache#Infinitivgruppe&quot; title=&quot;Kommaregeln der deutschen Sprache&quot;&gt;Kommaregeln der deutschen Sprache#Infinitivgruppe&lt;/a&gt; (via JWB)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Relationale-Datenbank-Muster&amp;#039;&amp;#039;&amp;#039; sind [[Muster]], die im Entwurf [[Relationale Datenbank|relationaler Datenbanken]] eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Grundlegende Tabellentypen ==&lt;br /&gt;
; Referenztabelle&lt;br /&gt;
: Eine Referenztabelle ist eine Tabelle, die über die Zeit relativ konstant bleibt und relativ wenige Spalten aufweist. Häufig anzutreffen sind dabei Key-Value-Referenztabellen mit nur zwei Spalten. Als Schlüssel sollten hierbei Zeichenfolgen verwendet werden, um [[Relationale Algebra#Join|Joins]] zu vermeiden.&amp;lt;ref name=&amp;quot;keys&amp;quot;&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/01/database-skills-sane-approach-to.html |titel=Database Skills: A Sane Approach To Choosing Primary Keys |datum=2008-01-14 |werk=The Database Programmer |zugriff=2013-03-06 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; Mastertabelle&lt;br /&gt;
: Eine Mastertabelle ist eine Tabelle, welche die Eigenschaften eines Objektes (Person, Adresse etc.) in getrennten Spalten ablegt. Kleine Mastertabellen sollten hierbei mit einer eindeutigen [[Zeichenfolge]]; bei großen Mastertabellen und Mastertabellen, deren Inhalt sich oft ändert, sollte eine [[Integer (Datentyp)|Ganzzahl]] als Schlüssel angelegt werden.&amp;lt;ref name=&amp;quot;keys&amp;quot; /&amp;gt;&lt;br /&gt;
; &amp;lt;span id=&amp;quot;Transaktionstabelle&amp;quot;&amp;gt;Transaktionstabelle&amp;lt;/span&amp;gt;&lt;br /&gt;
: Eine Transaktionstabelle ist eine Tabelle die Interaktionen oder Ereignisse zwischen Mastertabellen speichert. Beispielsweise eine Liste von Objekten, die ein Kunde in einen Warenkorb gelegt hat. Als Schlüssel sollten automatisch generierte Ganzzahlen verwendet werden.&amp;lt;ref name=&amp;quot;keys&amp;quot; /&amp;gt;&lt;br /&gt;
; Querverweistabelle&lt;br /&gt;
: Eine Querverweistabelle ist eine Tabelle in der die Beziehungen zwischen Mastertabellen gespeichert werden. In Querverweistabellen werden n:n-Beziehungen in mehreren Zeilen abgebildet. Als Schlüssel sollte eine Kombination aus mehreren Spalten gewählt werden.&amp;lt;ref name=&amp;quot;keys&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erweiterte Tabellentypen ==&lt;br /&gt;
; Begrenzte Transaktion&lt;br /&gt;
: Als begrenzte Transaktion bezeichnet man eine Einschränkung auf einer Tabelle, die definiert welche Transaktionen wann zulässig sind. Dieses Muster kann eingesetzt werden um entsprechende Prüfungen auf der Anwendungsseite zu reduzieren und um die Sicherheit der Datenbank vor falsch implementierten Anwendungen zu erhöhen.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/01/table-design-pattern-limited.html |titel=Table Design Pattern: Limited Transaction |sprache=en |datum=2008-02-27 |zugriff=2013-03-06 |werk=The Database Programmer}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; Vergänglicher Primärschlüssel&lt;br /&gt;
: werden eingesetzt, wenn sich eine Eigenschaft eines Objektes als Primärschlüssel anbietet (z.&amp;amp;nbsp;B. eine [[Kundennummer]]), diese sich jedoch möglicherweise ändert. In diesem Fall kann die entsprechende Eigenschaft zwar als Primärschlüssel verwendet werden, Änderungen müssen jedoch in einer [[#History-Tabelle|History-Tabelle]] protokolliert werden um auch eine nachträgliche Zuordnung gewährleisten zu können.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/02/primary-key-that-wasnt.html |titel=The Primary Key That Wasn’t |sprache=en |datum=2008-02-24 |zugriff=2013-03-06 |werk=The Database Programmer}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Muster für Fremdschlüssel ==&lt;br /&gt;
; &amp;lt;span id=&amp;quot;Fremdschlüsselbegrenzung&amp;quot;&amp;gt;Fremdschlüsselbegrenzung&amp;lt;/span&amp;gt;&lt;br /&gt;
: bezeichnet es, wenn das Löschen eines Eintrags (Zeile) aus einer Tabelle die mit dem Eintrag verknüpften Einträge (in einer anderen Tabelle) nicht mit löscht. Die Fremdschlüsselbegrenzung ist somit das Gegenteil der [[#Fremdschlüsselkaskade|Fremdschlüsselkaskade]].&lt;br /&gt;
: In [[SQL]] wird eine Fremdschlüsselbegrenzung mit dem Befehl &amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot; inline&amp;gt;DELETE RESTRICT&amp;lt;/syntaxhighlight&amp;gt; angestoßen. Dieses Verhalten ist bei den meisten Datenbankimplementierungen das Standardverhalten, wenn nur der Befehl &amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot; inline&amp;gt;DELETE&amp;lt;/syntaxhighlight&amp;gt; alleine angegeben wird.&amp;lt;ref name=&amp;quot;fkey&amp;quot;&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/07/different-foreign-keys-for-different.html |titel=Different Foreign Keys for Different Tables |sprache=en |werk=The Database Programmer |datum=2008-07-27 |zugriff=2013-03-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; &amp;lt;span id=&amp;quot;Fremdschlüsselkaskade&amp;quot;&amp;gt;Fremdschlüsselkaskade&amp;lt;/span&amp;gt;&lt;br /&gt;
: Eine &amp;#039;&amp;#039;&amp;#039;Fremdschlüsselkaskade&amp;#039;&amp;#039;&amp;#039; ist das Gegenteil der [[#Fremdschlüsselbegrenzung|Fremdschlüsselbegrenzung]]. Beim Löschen eines Eintrags werden die mit dem Eintrag verknüpften Einträge mitgelöscht.&lt;br /&gt;
: In SQL wird eine Fremdschlüsselbegrenzung mit dem Befehl &amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot; inline&amp;gt;DELETE CASCADE&amp;lt;/syntaxhighlight&amp;gt; angestoßen.&amp;lt;ref name=&amp;quot;fkey&amp;quot; /&amp;gt;&lt;br /&gt;
; Querverweisvalidierung&lt;br /&gt;
: Eine Querverweisvalidierung wird eingesetzt, wenn Spalten in einer Mastertabelle eine bestimmte [[Relation (Datenbank)|Relation]] miteinander aufweisen müssen. Diese Relation wird in einer getrennten Querverweistabelle gespeichert. Durch die getrennte Querverweistabelle wird zwar der Ressourcenverbrauch der Datenbank erhöht, der Einsatz ist jedoch nötig, um die Gültigkeit der Daten prüfen zu können.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/01/table-design-patterns-cross-reference.html |titel=Table Design Patterns: Cross-Reference Validation |sprache=en |werk=The Database Programmer |datum=2008-01-20 |zugriff=2013-03-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitsmuster ==&lt;br /&gt;
; Schreibgeschützte Lookup-Tabelle&lt;br /&gt;
: Eine &amp;#039;&amp;#039;&amp;#039;schreibgeschützte Lookup-Tabelle&amp;#039;&amp;#039;&amp;#039; ist eine Tabelle die eine Zuordnung zwischen zwei Tabellen definiert, deren Inhalt zwar allgemein abgefragt werden kann, jedoch nur von bestimmten Rollen bzw. Gruppen bearbeitet werden darf. Ein Beispiel ist die Verknüpfung von bestimmten Produkten mit einem [[Rabatt]].&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/05/introducing-database-security.html |titel=Introducing Database Security |werk=The Database Programmer |sprache=en |datum=2008-05-11 |zugriff=2013-03-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Denormalisierungsmuster ==&lt;br /&gt;
{{Hauptartikel|Normalisierung_(Datenbank)|Denormalisierung|titel1=Normalisierung}}&lt;br /&gt;
Denormalisierungsmuster ermöglichen die Denormalisierung einer Datenbank zum Zweck der Verbesserung des Laufzeitverhaltens.&lt;br /&gt;
&lt;br /&gt;
; Fetching&lt;br /&gt;
: Beim Fetching werden Daten aus einer Tabelle in eine andere (temporäre) Tabelle (z.&amp;amp;nbsp;B. eine [[#Transaktionstabelle|Transaktionstabelle]]) kopiert. Hierbei ist darauf zu achten, dass eine Änderung in der Quelltabelle nicht automatisch in die Zieltabelle übernommen wird.&lt;br /&gt;
; Vorweggenommene Aggregation&lt;br /&gt;
: {{Hauptartikel|Denormalisierung#Vorweggenommene_Aggregation|titel1=Vorweggenommene Aggregation}}&lt;br /&gt;
: Bei der &amp;#039;&amp;#039;&amp;#039;vorweggenommenen Aggregation&amp;#039;&amp;#039;&amp;#039; werden Werte aus verschiedenen Quellen bereits im Voraus im Zuge einer (lang laufenden) [[Stapelverarbeitung]] berechnet und in einer weiteren Tabelle zwischengespeichert. Die Werte werden dabei nicht bei jeder Abfrage neu berechnet, sondern erst im Zuge der nächsten Stapelverarbeitung. Der Vorteil ist, dass der Zugriff deutlich schneller ist und die Ressourcen der Datenbank geschont werden. Nachteilig wirkt sich aus, dass vor kurzem getätigte Änderungen an in der Berechnung nicht berücksichtigt sind.&lt;br /&gt;
; Erweiterung&lt;br /&gt;
: Eine Erweiterung der Tabelle liegt dann vor, wenn eine Spalte in der Tabelle durch die Berechnung aus anderen Spalten gebildet wird. Hierdurch muss die Berechnung nicht bei jeder Abfrage erneut durchgeführt werden, sondern erst wenn sich der Eintrag ändert.&lt;br /&gt;
&lt;br /&gt;
== Objekt-Relationale Verhaltensmuster ==&lt;br /&gt;
{{Hauptartikel|Objektrelationale Abbildung}}&lt;br /&gt;
; Tabelle pro Vererbungshierarchie&lt;br /&gt;
: (englisch: &amp;#039;&amp;#039;Single Table Inheritance&amp;#039;&amp;#039;) verwendet eine einzige Tabelle für jede Klasse, um einen Klassenbaum in einer Datenbank abzubilden.&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
; Tabelle pro Unterklasse&lt;br /&gt;
: (englisch: &amp;#039;&amp;#039;Class Table Inheritance&amp;#039;&amp;#039;) verwendet eine eigene Tabelle für jede konkrete oder abstrakte Klasse, um einen Klassenbaum in einer Datenbank abzubilden.&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
; Tabelle pro konkrete Klasse&lt;br /&gt;
: (englisch: &amp;#039;&amp;#039;Concrete Table Inheritance&amp;#039;&amp;#039;) verwendet eine eigene Tabelle für jede konkrete Klasse, um einen Klassenbaum in einer Datenbank abzubilden.&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
   Single Table Inheritance.svg|Tabelle pro Vererbungshierarchie&lt;br /&gt;
   Class Table Inheritance.svg|Tabelle pro Unterklasse&lt;br /&gt;
   Concrete Table Inheritance.svg|Tabelle pro konkrete Klasse&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;siehe auch:&amp;#039;&amp;#039; [[Relationale-Datenbank-Muster]], [[Entwurfsmuster]]&lt;br /&gt;
&lt;br /&gt;
== Verteilungsmuster ==&lt;br /&gt;
Bei den Verteilungsmustern wird im Wesentlichen zwischen [[#Single-Server|keiner Verteilung]], Replikation und [[#Fragmentierung|Fragmentierung]] (englisch: &amp;#039;&amp;#039;Sharding&amp;#039;&amp;#039;) unterschieden:&lt;br /&gt;
* Die Replikation nimmt dieselben Teile der Daten und kopiert diese auf mehrere Server, um eine höhere Ausfallsicherheit zu gewährleisten.&lt;br /&gt;
* Die Fragmentierung verteilt unterschiedliche Teile der Daten und verteilt diese über mehrere Server, um eine bessere Lastenverteilung zu gewährleisten.&lt;br /&gt;
Die Replikation kann hierbei mit Fragmentierung kombiniert werden. Zudem unterscheidet man bei der Replikation zwischen der [[#Master/Slave-Replikation|Master/Slave-Replikation]] und der [[#Peer-to-Peer-Replikation|Peer-to-Peer-Replikation]].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Datei:Single-Server-Replikation.svg|mini|175px|Single-Server-„Verteilung“]]&lt;br /&gt;
| [[Datei:Fragmentierung.svg|mini|155px|Verteilung durch Fragmentierung]]&lt;br /&gt;
| [[Datei:Master-Slave-Replikation.svg|mini|257px|Verteilung mit Master/Slave-Replikation]]&lt;br /&gt;
| [[Datei:P2P-Replikation.svg|mini|272px|Verteilung mit Peer-to-Peer Replikation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Single-Server ===&lt;br /&gt;
{{Hauptartikel|Datenbankserver}}&lt;br /&gt;
Das einfachste Verteilungsmuster ist keine Verteilung. Die Datenbank läuft vollständig auf einem einzelnen Server, der sämtliche Schreib- und Lesezugriffe behandelt. Der Vorteil dieses Musters ist es, dass der Server einfach zu warten ist. Updates, Datensicherungen, Reparaturen, Upgrades etc. lassen sich bei diesem Muster zentral behandeln.&amp;lt;ref name=&amp;quot;NoSQL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zudem müssen Softwareentwickler keine aufwändige Logik implementieren um Probleme mit der [[Konsistenz (Datenspeicherung)#Verteilte Systeme|Konsistenz]], [[Verfügbarkeit]] oder [[Partition (Datenbank)|Partitionierung]] zu behandeln (&amp;#039;&amp;#039;siehe auch:&amp;#039;&amp;#039; [[CAP-Theorem]]).&lt;br /&gt;
&lt;br /&gt;
Diese Variante bietet sich auch besonders bei [[Graphdatenbank]]en an, da Latenzen durch den Zugriff von Daten über das Netzwerk vermieden werden.&lt;br /&gt;
&lt;br /&gt;
=== Fragmentierung ===&lt;br /&gt;
{{Hauptartikel|Denormalisierung#Fragmentierung|titel1=Fragmentierung}}&lt;br /&gt;
Bei der Fragmentierung (englisch: &amp;#039;&amp;#039;Sharding&amp;#039;&amp;#039;) werden unterschiedliche Datenbanken bzw. voneinander unabhängige Teile der Datenbank auf verschiedene Server, die &amp;#039;&amp;#039;Shards&amp;#039;&amp;#039;, verteilt.&amp;lt;ref name=&amp;quot;NoSQL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch ergibt sich eine bessere Lastverteilung. Zudem fallen bei einem Ausfall des Servers nicht alle Applikationen aus, sondern nur jene die auf die jeweiligen Daten zugreifen oder schreiben müssen.&lt;br /&gt;
&lt;br /&gt;
Da die Lese-und-Schreibzugriffe für jeweils bestimmte Daten vom jeweiligen Shard alleine bearbeitet werden, ergibt sich keine Inkonsistenz der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Federation ===&lt;br /&gt;
Als Federation bezeichnet man einen Spezialfall der [[#Fragmentierung|Fragmentierung]], bei dem ein zentraler Server, &amp;#039;&amp;#039;federation root&amp;#039;&amp;#039; genannt, die Verteilung der einzelnen Shards automatisch bestimmt.&lt;br /&gt;
&lt;br /&gt;
=== Master/Slave-Replikation ===&lt;br /&gt;
Bei der Master/Slave-Replikation übernimmt ein zentraler Server, der &amp;#039;&amp;#039;Master&amp;#039;&amp;#039;, alle Schreibzugriffe auf die Datenbank. Anschließend werden die Änderungen auf die anderen Server, den &amp;#039;&amp;#039;Slaves&amp;#039;&amp;#039; (Sklaven) übermittelt. Wenn der Master-Server ausfallen sollte, kann ein Slave die Rolle des Masters übernehmen.&amp;lt;ref name=&amp;quot;NoSQL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da es etwas dauert, bis die Änderungen von den Slave-Servern übernommen werden, kann es kurzzeitig zu Dateninkonsistenzen kommen.&lt;br /&gt;
&lt;br /&gt;
Alle Server ermöglichen Lesezugriffe, wodurch es bei Lesezugriffen zu einer Lastverteilung kommt. Da Schreibzugriffe jedoch zentral bearbeitet werden, stellt der Master einen Flaschenhals dar.&lt;br /&gt;
&lt;br /&gt;
=== Peer-to-Peer-Replikation ===&lt;br /&gt;
Bei der Peer-to-Peer-Replikation, sind alle Server über ein [[Peer-to-Peer]]-Netzwerk verbunden. Jeder Server übernimmt sowohl Schreib- als auch Lesezugriffe. Schreibzugriffe werden hierbei mit allen Servern synchronisiert.&amp;lt;ref name=&amp;quot;NoSQL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da es jedoch einige Zeit dauert, bis die Schreibzugriffe synchronisiert werden, kann es bei diesem Modell zu Dateninkonsistenzen kommen. Dieser Effekt tritt hier besonders zutage, wenn die [[Netzwerkverbindung]] zwischen zwei Standorten ausfällt.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieser Konfiguration ist, dass eine besonders hohe Ausfallsicherheit gegeben ist. Der Wegfall einzelner Peers führt nicht zu einem Datenverlust. Zudem ist dieses Modell leicht horizontal skalierbar, da bei Engpässen einfach weitere (kostengünstige) Rechner hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Die Peer-to-Peer-Replikation ist in der Softwareentwicklung und der Wartung (Updates, Backups etc.) besonders aufwändig und bedarf daher einer guten Planung seitens des Betreibers.&lt;br /&gt;
&lt;br /&gt;
=== Fragmentierung mit Master-Slave-Replikation ===&lt;br /&gt;
Die Fragmentierung und Master-Slave-Replikation kann auch kombiniert werden. Hierbei werden für jeden Datentyp ein Master bestimmt und auf mehrere andere Server, welche hierbei dem Master als Slaves dienen, repliziert. Ein Server kann hierbei die Rolle des Masters für einen Datentyp und die Rolle des Slave für andere Datentypen gleichzeitig übernehmen.&amp;lt;ref name=&amp;quot;NoSQL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fragmentierung mit Peer-to-Peer-Replikation ===&lt;br /&gt;
Als letzte Möglichkeit bietet sich noch die Fragmentierung eines Peer-to-Peer-Netzwerkes an. Hierbei werden mehrere Server zusammengefasst um sich als Peer-to-Peer-Netzwerk um einen bestimmten Datentyp zu kümmern. Jeder Server kann hierbei Teil von mehreren Peer-to-Peer-Netzwerken sein und somit unterschiedliche Datentypen behandeln.&amp;lt;ref name=&amp;quot;NoSQL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weitere Muster ==&lt;br /&gt;
; Auflösungsmuster&lt;br /&gt;
: Das Auflösungsmuster wird eingesetzt, wenn ein Wert aus verschiedenen Quellen kommen bzw. berechnet werden kann und entschieden werden muss, welche Quelle gewählt wird bzw. welches Berechnungsmodell anzuwenden ist.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/04/advanced-table-design-resolutions.html |titel=Advanced Table Design: Resolutions |werk=The Database Programmer |datum=2008-04-20 |zugriff=2013-03-07 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; &amp;lt;span id=&amp;quot;History-Tabelle&amp;quot;&amp;gt;History-Tabelle&amp;lt;/span&amp;gt;&lt;br /&gt;
: Eine History-Tabelle ist eine Tabelle die Änderungen protokolliert. Durch diese Tabelle sind Änderungen nachvollziehbar und der ursprüngliche Zustand der überwachten Tabelle wiederherstellbar.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/07/history-tables.html |titel=History Tables |werk=The Database Programmer |datum=2008-07-20 |zugriff=2013-03-07 |sprache=en}}&amp;lt;/ref&amp;gt; Ein Beispiel für eine History-Tabelle ist die „Versionsgeschichte“ der [[Wikipedia]], in der Änderungen in Form von [[Diff]]-Elementen gespeichert werden.&lt;br /&gt;
: &amp;#039;&amp;#039;siehe auch:&amp;#039;&amp;#039; [[Versionsverwaltung]]&lt;br /&gt;
; Abhängigkeitsseqenzierung&lt;br /&gt;
: Bei einer Abhängigkeitsseqenzierung muss eine Reihe von Befehlen in einer Sequenz abgearbeitet werden. Da einige Befehle vom Ergebnis anderer Befehle abhängig sein können, muss die korrekte Reihenfolge mit Hilfe eines [[Gerichteter Analysegraph|gerichteten Analysegraphen]] (englisch: &amp;#039;&amp;#039;directed analytic graph&amp;#039;&amp;#039;) ermittelt und in einer eigenen Tabelle abgebildet werden.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/08/advanced-algorithm-sequencing.html |titel=Advanced Algorithm: Sequencing Dependencies |werk=The Database Programmer |datum=2008-08-25 |zugriff=2013-03-07 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; Sicheres Passwortrücksetzen&lt;br /&gt;
: Die Datenbank muss ein sicheres Zurücksetzen des [[Passwort]]es erlauben, falls der Benutzer das Passwort vergessen hat. Das Passwort darf weder im Klartext oder wiederherstellbar in der Datenbank gespeichert werden, noch darf das Passwort des Benutzers über einen unsicheren Kanal (z.&amp;amp;nbsp;B. etwa in einer [[E-Mail]] oder eine nicht mit [[Transport Layer Security|SSL]] verschlüsselte [[Webseite]]) übermittelt werden.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/09/advanced-table-design-secure-password.html |titel=Advanced Table Design: Secure Password Resets |werk=The Database Programmer |datum=2008-11-07 |zugriff=2013-03-07 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Antimuster ==&lt;br /&gt;
{{Hauptartikel|Anti-Pattern}}&lt;br /&gt;
; Umgekehrter Fremdschlüssel&lt;br /&gt;
Ein umgekehrter Fremdschlüssel ({{enS|reverse foreign key}}) entsteht, wenn ein bestimmter Eintrag einer Tabelle einen bestimmten Eintrag in einer anderen Tabelle verhindern soll. Ein &amp;#039;&amp;#039;&amp;#039;Umgekehrter Fremdschlüssel&amp;#039;&amp;#039;&amp;#039; sieht auf den ersten Blick oft wie ein [[Primärschlüssel]] aus.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://database-programmer.blogspot.co.at/2008/02/false-patterns-such-as-reverse-foreign.html |titel=False Patterns Such as The Reverse Foreign Key |sprache=en |werk=The Database Programmer |datum=2008-02-03 |zugriff=2013-03-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Scott J. Ambler, Pramodkumar J. Sadalage&lt;br /&gt;
   |Titel=Refactoring Databases: Evolutionary Database Design&lt;br /&gt;
   |Verlag=[[Prentice Hall]], [[Addison-Wesley]]&lt;br /&gt;
   |Ort=&lt;br /&gt;
   |Datum=2011&lt;br /&gt;
   |ISBN=978-0-321-77451-4&lt;br /&gt;
   |Seiten=384&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Scott J. Ambler&lt;br /&gt;
   |Titel=Agile Database Techniques&lt;br /&gt;
   |Verlag=[[John Wiley &amp;amp; Sons]]&lt;br /&gt;
   |Ort=&lt;br /&gt;
   |Datum=2003&lt;br /&gt;
   |ISBN=978-0-471-20283-7&lt;br /&gt;
   |Seiten=480&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Len Silverston&lt;br /&gt;
   |Titel=The Data Model Resource Book: Volume 1: A Library of Universal Data Models for All Enterprises&lt;br /&gt;
   |Verlag=John Wiley &amp;amp; Sons&lt;br /&gt;
   |Ort=&lt;br /&gt;
   |Datum=2001&lt;br /&gt;
   |ISBN=978-0-471-38023-8&lt;br /&gt;
   |Seiten=560&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Len Silverston&lt;br /&gt;
   |Titel=The Data Model Resource Book: Volume 2: A Library of Universal Data Models by Industry Types&lt;br /&gt;
   |Verlag=John Wiley &amp;amp; Sons&lt;br /&gt;
   |Ort=&lt;br /&gt;
   |Datum=2001&lt;br /&gt;
   |ISBN=978-0-471-35348-5&lt;br /&gt;
   |Seiten=576&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Len Silverston, Paul Agnew&lt;br /&gt;
   |Titel=The Data Model Resource Book: Volume 3: Universal Patterns for Data Modeling&lt;br /&gt;
   |Verlag=John Wiley &amp;amp; Sons&lt;br /&gt;
   |Ort=&lt;br /&gt;
   |Datum=2009&lt;br /&gt;
   |ISBN=978-0-470-17845-4&lt;br /&gt;
   |Seiten=648&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Internetquelle&lt;br /&gt;
   |url=http://www.codeproject.com/Articles/359654/11-important-database-designing-rules-which-I-foll&lt;br /&gt;
   |titel=11 important database designing rules which I follow&lt;br /&gt;
   |sprache=en&lt;br /&gt;
   |werk=[[The Code Project]]&lt;br /&gt;
   |autor=Shivprasad Koirala&lt;br /&gt;
   |datum=2012-09-07&lt;br /&gt;
   |zugriff=2013-03-07}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;PoEAA&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=Martin Fowler&lt;br /&gt;
 |Titel=Patterns of Enterprise Application Architecture&lt;br /&gt;
 |Verlag=Addison-Wesley-Longman&lt;br /&gt;
 |Ort=Amsterdam&lt;br /&gt;
 |Datum=2002&lt;br /&gt;
 |ISBN=0-321-12742-0}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NoSQL&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=Pramodkumar J. Sadalage, [[Martin Fowler]]&lt;br /&gt;
 |Titel=NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence&lt;br /&gt;
 |Verlag=Addison-Wesley&lt;br /&gt;
 |Ort=Amsterdam&lt;br /&gt;
 |Datum=2012&lt;br /&gt;
 |ISBN=978-0-321-82662-6&lt;br /&gt;
 |Sprache=en}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;/div&gt;</summary>
		<author><name>imported&gt;1234qwer1234qwer4</name></author>
	</entry>
</feed>