Datenbanken Unit 7: Normalisierung

Werbung
Organisatorisches
SQL
Datenbanken
Unit 7: Normalisierung
Ronald Ortner
3. V. 2016
Ronald Ortner
Normalisierung: Weitere Beispiele
Organisatorisches
SQL
Outline
1
Organisatorisches
2
SQL
3
Normalisierung: Weitere Beispiele
Ronald Ortner
Normalisierung: Weitere Beispiele
Organisatorisches
SQL
Normalisierung: Weitere Beispiele
Organisatorisches
Nächste Woche findet der zweite Zwischentest statt.
Stoff: Alles bisher, exklusive heute (ohne Self Joins)
Aufsicht übernimmt Martin Antenreiter.
VO entfällt an diesem Tag.
Neue ÜBeispiele abzugeben bis 24. Mai.
NULL-Werte im ersten Zwischentest: 100% = 9 Punkte
Ronald Ortner
Organisatorisches
SQL
SQL
Nachbesprechung Wissensüberprüfung
Fragen zum Zwischentest?
Self Joins
Ronald Ortner
Normalisierung: Weitere Beispiele
Organisatorisches
SQL
Nachbesprechung Wissensüberprüfung
WHERE vs. HAVING
HAVING verlangt Booleschen Wert!
“Totaler” Join
Ronald Ortner
Normalisierung: Weitere Beispiele
Organisatorisches
SQL
Normalisierung: Weitere Beispiele
WHERE vs. HAVING
Gute Angewohnheit:
Ins HAVING kommen nur Bedingungen an Aggregatfunktionen.
Ronald Ortner
Organisatorisches
SQL
Normalisierung: Weitere Beispiele
WHERE vs. HAVING
Gute Angewohnheit:
Ins HAVING kommen nur Bedingungen an Aggregatfunktionen.
Beispiel aus Wissensüberprüfung:
SELECT b.name, r.amount FROM receipt r JOIN badguy b
ON r.badguy = b.id WHERE r.notes LIKE ’Credit Card’
AND r.amount > (SELECT AVG(r.amount) FROM receipt r
HAVING r.notes =’Credit Card’)
Ronald Ortner
Organisatorisches
SQL
Normalisierung: Weitere Beispiele
WHERE vs. HAVING
Gute Angewohnheit:
Ins HAVING kommen nur Bedingungen an Aggregatfunktionen.
Beispiel aus Wissensüberprüfung:
SELECT b.name, r.amount FROM receipt r JOIN badguy b
ON r.badguy = b.id WHERE r.notes LIKE ’Credit Card’
AND r.amount > (SELECT AVG(r.amount) FROM receipt r
HAVING r.notes =’Credit Card’)
Unbeabsichtigte korrelierte Subquery!
Ronald Ortner
Organisatorisches
SQL
Normalisierung: Weitere Beispiele
HAVING verlangt Booleschen Wert!
Im HAVING muss ein Boolescher Wert stehen.
Fantasiekonstruktionen a la HAVING MAX(score) funktionieren
nicht!!!
Ronald Ortner
Organisatorisches
SQL
Normalisierung: Weitere Beispiele
“Totaler” Join
Joins auf alle Tabellen der Datenbank sind keine gute Idee:
manche Einträge fallen raus
zuviele Einträge bei N : M-Relationen
( falsches Ergebnis für COUNT bzw. SUM)
Performance
Join immer nur auf jene Tabellen, die für Beantwortung der Frage
benötigt werden!
Ronald Ortner
Organisatorisches
Fragen
Fragen zum Zwischentest?
Ronald Ortner
SQL
Normalisierung: Weitere Beispiele
Herunterladen