Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
DatenbankenUnit 12: NoSQL-Datenbanken und XML
Ronald Ortner
18. VI. 2018
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Outline
1 Organisatorisches
2 NoSQL: Diverse Ansätze
3 NoSQL: Objekt-relationale DatenbankenObject-Relational Impedance MismatchObjekt-relationale Erweiterungen
4 XML
5 Normalisierung
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Outline
1 Organisatorisches
2 NoSQL: Diverse Ansätze
3 NoSQL: Objekt-relationale DatenbankenObject-Relational Impedance MismatchObjekt-relationale Erweiterungen
4 XML
5 Normalisierung
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Organisatorisches
Nächste Woche Fragestunde in der VO
UE entfällt nächste Woche
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Outline
1 Organisatorisches
2 NoSQL: Diverse Ansätze
3 NoSQL: Objekt-relationale DatenbankenObject-Relational Impedance MismatchObjekt-relationale Erweiterungen
4 XML
5 Normalisierung
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
NoSQL
NoSQL:Sammelbegriff für alternative Datenbanklösungen, die das traditionellerelationale Schema nicht implementieren.
NoSQL fasst völlig unterschiedliche Ansätze für Lösungunterschiedlicher Probleme zusammen:
Verteilte DatenbankenGraph DatenbankenKey-Value und Document Stores(Wide) Column StoresObjekt- und objektrelationale Datenbanken
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Verteilte Datenbanken
Große Datenmengen können oft nicht mehr auf einem Rechnergespeichert werden.
verteilte Datenbanken
Umsetzung wirft mehrere technische Probleme auf:Wie soll aufgeteilt werden? (Fragmentierung und Allokation)Wie werden Anfragen bearbeitet?Wie können Transaktionen konsistent durchgeführt werden?
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Key-Value und Document Stores
Key-Value Store:funktioniert wie Map in Java, wobei Value sehr große Datei seinkannDie Values haben i.a. keinen einheitlichen Daten- bzw. Dateityp.Zugriff erfolgt immer über Key.
Document Stores:verallgemeinern Key-Value StoreSuchmöglichkeit auch über Values
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Graph Datenbanken
Graph Datenbanken erlauben die Speicherung vernetzter Daten(Graphen).
Speicherung von Datenobjekten als GraphSowohl Knoten als auch Kanten besitzen Attribute.Graphenspezifische Abfragen schneller als in relationem System.Beispiele:
Welche Schauspieler haben mit Christopher Walken in einem Filmgespielt?Wie komme ich am schnellsten mit öffentlichen Verkehrsmitteln vonMariazell nach Kirchberg in Tirol?Welche Artikel haben Kunden gekauft, die diesen Artikel gekaufthaben?
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Row Store vs. Column Store
Typischerweise werden Tabellen zeilenweise gespeichert.
Bei vielen Spalten, kann es aus Performancegründen u.U. auchbesser sein, spaltenweise zu speichern:
Die meisten Abfragen betreffen nur wenige Spalten.Spaltenwerte sind ähnlicher und können leichter komprimiertwerden. Verwendung von Wörterbuch-Tabelle
(s. Bsp. auf Folien von A. Kemper)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Row Store vs. Column Store
Typischerweise werden Tabellen zeilenweise gespeichert.Bei vielen Spalten, kann es aus Performancegründen u.U. auchbesser sein, spaltenweise zu speichern:
Die meisten Abfragen betreffen nur wenige Spalten.Spaltenwerte sind ähnlicher und können leichter komprimiertwerden. Verwendung von Wörterbuch-Tabelle
(s. Bsp. auf Folien von A. Kemper)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Row Store vs. Column Store
Typischerweise werden Tabellen zeilenweise gespeichert.Bei vielen Spalten, kann es aus Performancegründen u.U. auchbesser sein, spaltenweise zu speichern:
Die meisten Abfragen betreffen nur wenige Spalten.
Spaltenwerte sind ähnlicher und können leichter komprimiertwerden. Verwendung von Wörterbuch-Tabelle
(s. Bsp. auf Folien von A. Kemper)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Row Store vs. Column Store
Typischerweise werden Tabellen zeilenweise gespeichert.Bei vielen Spalten, kann es aus Performancegründen u.U. auchbesser sein, spaltenweise zu speichern:
Die meisten Abfragen betreffen nur wenige Spalten.Spaltenwerte sind ähnlicher und können leichter komprimiertwerden.
Verwendung von Wörterbuch-Tabelle
(s. Bsp. auf Folien von A. Kemper)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Row Store vs. Column Store
Typischerweise werden Tabellen zeilenweise gespeichert.Bei vielen Spalten, kann es aus Performancegründen u.U. auchbesser sein, spaltenweise zu speichern:
Die meisten Abfragen betreffen nur wenige Spalten.Spaltenwerte sind ähnlicher und können leichter komprimiertwerden. Verwendung von Wörterbuch-Tabelle
(s. Bsp. auf Folien von A. Kemper)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Outline
1 Organisatorisches
2 NoSQL: Diverse Ansätze
3 NoSQL: Objekt-relationale DatenbankenObject-Relational Impedance MismatchObjekt-relationale Erweiterungen
4 XML
5 Normalisierung
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Object-Relational Impedance Mismatch
Beispiel: Bücherdatenbank
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Object-Relational Impedance Mismatch
Beispiel: Bücherdatenbank
Wir führen IDs für Autoren, Bücher und Keywords ein.
Dann:eine Tabelle für jeden Entitätstyp (mit den IDs alsPrimärschlüssel):Autoren: {[a_id, Name]}Bücher: {[b_id, Titel, Verlag]}Keywords: {[k_id, Keyword]}eine Tabelle für jede Relation:schreibt: {[a_id, b_id]}hat_Keyword: {[b_id, k_id, Gewicht]}
→ brauchen fünf (!) Tabellen für einen Entitätstyp
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Object-Relational Impedance Mismatch
Beispiel: Bücherdatenbank
Wir führen IDs für Autoren, Bücher und Keywords ein.
Dann:eine Tabelle für jeden Entitätstyp (mit den IDs alsPrimärschlüssel):Autoren: {[a_id, Name]}Bücher: {[b_id, Titel, Verlag]}Keywords: {[k_id, Keyword]}eine Tabelle für jede Relation:schreibt: {[a_id, b_id]}hat_Keyword: {[b_id, k_id, Gewicht]}
→ brauchen fünf (!) Tabellen für einen Entitätstyp
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Object-Relational Impedance Mismatch
Beispiel: Bücherdatenbank
Wir führen IDs für Autoren, Bücher und Keywords ein.
Dann:eine Tabelle für jeden Entitätstyp (mit den IDs alsPrimärschlüssel):Autoren: {[a_id, Name]}Bücher: {[b_id, Titel, Verlag]}Keywords: {[k_id, Keyword]}eine Tabelle für jede Relation:schreibt: {[a_id, b_id]}hat_Keyword: {[b_id, k_id, Gewicht]}
→ brauchen fünf (!) Tabellen für einen Entitätstyp
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Object-Relational Impedance Mismatch
Object-Relational Impedance Mismatch
→ brauchen fünf (!) Tabellen für einen Entitätstyp
“Object-Relational Impedance Mismatch”:
Objekte lassen sich im allgemeinen nicht gut in relationenDatenbanken abbilden.
Verschiedene Lösungsansätze:ObjektdatenbankenJava Persistence Library:speichert Objekte automatisch in passender relationalerDatenbank
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Object-Relational Impedance Mismatch
Object-Relational Impedance Mismatch
→ brauchen fünf (!) Tabellen für einen Entitätstyp
“Object-Relational Impedance Mismatch”:
Objekte lassen sich im allgemeinen nicht gut in relationenDatenbanken abbilden.
Verschiedene Lösungsansätze:ObjektdatenbankenJava Persistence Library:speichert Objekte automatisch in passender relationalerDatenbank
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige AttributeGeschachtelte Relationen: Relationen als AttributeTypendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)Referenzen auf andere Tupel oder ObjekteVererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige Attribute
Geschachtelte Relationen: Relationen als AttributeTypendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)Referenzen auf andere Tupel oder ObjekteVererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige AttributeGeschachtelte Relationen: Relationen als Attribute
Typendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)Referenzen auf andere Tupel oder ObjekteVererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige AttributeGeschachtelte Relationen: Relationen als AttributeTypendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)
Referenzen auf andere Tupel oder ObjekteVererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige AttributeGeschachtelte Relationen: Relationen als AttributeTypendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)Referenzen auf andere Tupel oder Objekte
Vererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige AttributeGeschachtelte Relationen: Relationen als AttributeTypendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)Referenzen auf andere Tupel oder ObjekteVererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Objekt-relationale Erweiterungen
Objekt-relationale Datenbanken
→ erweitern relationale Datenbanktheorie mit objektorientierten Ideen:
Erweiterungen:
Large Objects (z.B. Datentyp blob in MySQL)
Mengenwertige AttributeGeschachtelte Relationen: Relationen als AttributeTypendeklaration: Definition eigener Datentypen(ähnlich wie Klassendefinition in objektorientierter Sprache)Referenzen auf andere Tupel oder ObjekteVererbung
SQL:1999 Standardisierung des objekt-relationalen Datenmodells(bisher in kommerziellen Systemen nur teilweise und mituneinheitlicher Syntax umgesetzt)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Outline
1 Organisatorisches
2 NoSQL: Diverse Ansätze
3 NoSQL: Objekt-relationale DatenbankenObject-Relational Impedance MismatchObjekt-relationale Erweiterungen
4 XML
5 Normalisierung
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Relationales Datenmodell
Das relationale Datenmodell ist rigide:Tabellenstruktur ist vorgegeben.fixe Anzahl von SpaltenSpalten haben vorgegebenen Typ.ein Datensatz pro Zeile
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Flexible Datenstruktur
XML (eXtensible Markup Language) ist im Unterschied dazu soflexibel wie möglich:
XML-File legt nicht nur die Daten sondern auch die Struktur fest.
Beispiel:<info>Der
<tier typ="vogel">Darwinfink</tier>ist ein sehr zutraulicher Vogel, der auf den<ort typ="insel">Galapagos-Inseln</ort>lebt.
</info>
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Flexible Datenstruktur
XML (eXtensible Markup Language) ist im Unterschied dazu soflexibel wie möglich:
XML-File legt nicht nur die Daten sondern auch die Struktur fest.Trennung von Struktur und Präsentationerweiterbar und anpassbarEs gibt auch Abfragesprachen für XML.Ein XML-File ist ein Text-Dokument.
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Anwendungen
Verwendung:Hochstrukturierte Daten (Tabellen)Semistrukturierte DatenDatenaustauschWeb-Dokumente (html)Grafiken (svg)Formeln
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Flexible Datenstruktur
Weiteres Beispiel:<?xml version="1.0" encoding="iso-8859-1"?><planetensystem>
<stern typ="G2"><name>Sonne</name><durchmesser>1390000</durchmesser>
</stern><planet>
<name>Venus</name><durchmesser>12102</durchmesser><entfernung>
<min>107.1</min><max>109.0</max>
</entfernung>· · ·
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Flexible Datenstruktur
Weiteres Beispiel:<?xml version=’1.0’ encoding=’UTF-8’?><PEOPLE>
<PERSON personid=p1retired="yes"><NAME>Mark Wilson</NAME><ADDRESS>
<STREET>Somewhere Circle</STREET><NR>911</NR><CITY>Canberra</CITY><COUNTRY>Australia</COUNTRY>
</ADDRESS><EMAIL>[email protected]</EMAIL>
</PERSON><PERSON personid=p2»
· · ·Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Flexible Datenstruktur
Weiteres Beispiel (svg-Grafikfile):<?xml version=’1.0’ encoding=’UTF-8’ ?><svg xmlns="http://www.w3.org/2000/svg"version="1.1">
<rect x="10"y="10"width="200"height="225"stroke="blackfill=transparentßtroke-width="1px"/>
<circle cx="110cy="110r="75"stroke="blackfill="yellow"/>
<circle cx="75cy="80r="10"stroke="blackfill="black"/>
<circle cx="145cy="80r="10"stroke="blackfill="black"/>
<path d=M74,130 A35,35 0 0,0 149,130"stroke="blackßtroke-width="6pxfill=transparent"/>
<text x="60"y="210font-family="sans-serif">Hello SVG!</text>
</svg>
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
XML: Flexible Datenstruktur
Weiteres Beispiel (svg-Grafikfile):<?xml version=’1.0’ encoding=’UTF-8’ ?><svg xmlns="http://www.w3.org/2000/svg"version="1.1">
<rect x="10"y="10"width="200"height="225"stroke="blackfill=transparentßtroke-width="1px"/>
<circle cx="110cy="110r="75"stroke="blackfill="yellow"/>
<circle cx="75cy="80r="10"stroke="blackfill="black"/>
<circle cx="145cy="80r="10"stroke="blackfill="black"/>
<path d=M74,130 A35,35 0 0,0 149,130"stroke="blackßtroke-width="6pxfill=transparent"/>
<text x="60"y="210font-family="sans-serif">Hello SVG!</text>
</svg>
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
VO + UE: Datenbeschreibungssprachen
Einführung in XML u.a.:→ Lehrveranstaltung “Datenbeschreibungssprachen” (Antenreiter)
Wenn Sie nicht hingehen:
XML ist ein Standard. XML-Schnittstelle vs. proprietäre Schnittstelle
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Outline
1 Organisatorisches
2 NoSQL: Diverse Ansätze
3 NoSQL: Objekt-relationale DatenbankenObject-Relational Impedance MismatchObjekt-relationale Erweiterungen
4 XML
5 Normalisierung
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Weiteres Beispiel
Entwerfen Sie eine Datenbank einer Ticketagentur fürPop-/Rock-Konzerte. Für jedes Konzert sollen die spielenden Bands,das Datum und die Beginnzeit, das Land, die Stadt sowie derVeranstaltungsort gespeichert werden. Weiters soll der Ticketpreishinterlegt werden, wobei Sie davon ausgehen können, dass dieser fürjedes Konzert einheitlich ist. Für jeden Kunden sollen Name undAdresse gespeichert werden sowie wieviele Tickets für welchesKonzert bestellt wurden.
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Tickets für Konzerte
Manchmal bekommt man kein gutes Schema, wenn man dieNormalformen der Reihe nach durchgeht.
Beispiel:
Ticket_no∗ Concert_no Band∗
......
...
Es gibt folgende FDs und MVDs:Ticket_no→ Concert_no
Ticket_no→→ Band
Concert_no→→ Band
Der Dekompositionsalgorithmus für 4NF auf die letzte MVD angewandtgibt ein gutes Datenbankschema.
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Tickets für Konzerte
Manchmal bekommt man kein gutes Schema, wenn man dieNormalformen der Reihe nach durchgeht.
Beispiel:
Ticket_no∗ Concert_no Band∗
......
...
Es gibt folgende FDs und MVDs:Ticket_no→ Concert_no
Ticket_no→→ Band
Concert_no→→ Band
Der Dekompositionsalgorithmus für 4NF auf die letzte MVD angewandtgibt ein gutes Datenbankschema.
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Verallgemeinerter Dekompositionsalgorithmus für 4NF
Gegeben: Relation R, Menge F von MVDsWir wollen: Zerlegung R1, . . . ,Rn in 4NF
Verallgemeinerter Dekompositionsalgorithmus:Initialisiere Z := {R};while (es gibt Ri in Z , das nicht in 4NF) do
1 Finde MVD α→→ β in Ri mit α ∩ β = ∅ und α 6→ Ri .2 Zerlege Ri in Ri1 := α ∪ β und Ri2 := Ri − β.3 Ersetze Ri in Z durch Ri1 und Ri2, d.h.
Z := (Z − {Ri}) ∪ {Ri1,Ri2}.
(Nachdem jede Relation in 4NF auch in BCNF ist, gibt es Fälle, woeine 4NF Zerlegung nicht abhängigkeitserhaltend ist.)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Tickets für Konzerte
Beispiel:
Ticket_no∗ Concert_no Band∗
......
...
Es gibt folgende FDs und MVDs:Ticket_no→ Concert_no
Ticket_no→→ Band
Concert_no→→ Band
Achtung: Wählt man eine andere FD/MVD für Zerlegung erhält manein schlechteres Datenbankschema. (Zur Erinnerung: 4NF ist nichtimmer abhängigkeitserhaltend, sodass es einen Unterschied machenkann, welche FD für Zerlegung gewählt wird!)
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Wartungszeiten für Anlagen
Im Beispiel 8.4 ist dasselbe passiert:
Item_id∗ Time_stamp∗ Wartungszeit
......
...
Es gelten folgende FDs:Anlage→ Wartungszeit
Item_id, Time_stamp→ Anlage
Item_id, Time_stamp→ Wartungszeit
Besser ist es offensichtlich, die Wartungszeiten mit den Anlagen zuspeichern:
Anlage∗ Wartungszeit
......
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Wartungszeiten für Anlagen
Im Beispiel 8.4 ist dasselbe passiert:
Item_id∗ Time_stamp∗ Wartungszeit
......
...
Es gelten folgende FDs:Anlage→ Wartungszeit
Item_id, Time_stamp→ Anlage
Item_id, Time_stamp→ Wartungszeit
Besser ist es offensichtlich, die Wartungszeiten mit den Anlagen zuspeichern:
Anlage∗ Wartungszeit
......
Ronald Ortner
Organisatorisches NoSQL: Diverse Ansätze NoSQL: Objekt-relationale Datenbanken XML Normalisierung
Normalisierung: Fazit
Manchmal ist es eine gute Idee, aus FDs α→ β gleich eine Tabelle mitSpalten α und β zu extrahieren und β aus der ursprünglichen Tabellezu entfernen (vgl. Dekompositionsalgorithmus), auch wenn dies nichtder nächste Schritt in der Normalisierungsreihenfolge ist.
Ronald Ortner