Tag 4 Inhaltsverzeichnis

Ähnliche Dokumente
Tag 4 Inhaltsverzeichnis

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Normalformen: Sinn und Zweck

7. Übung - Datenbanken

Datenbanken: Datenintegrität.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Datenintegrität und Transaktionskonzept

Datenbanken: Transaktionskonzept und Concurrency Control

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Transaktionsverwaltung

Isolationsstufen für Transaktionen. Dr. Karsten Tolle

Unterabfragen (Subqueries)

Transaktionsverwaltung

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SQL: statische Integrität

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

Kapitel 06 Normalisierung von Relationen. 6 Die Normalisierung von Relationen

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Software-Engineering und Datenbanken

Fachbereich Wirtschaftswissenschaften Campus Sankt Augustin

Transaktionen in der Praxis. Dr. Karsten Tolle

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Transaktionen Recovery Isolationslevel. Datenbanksysteme. Transaktionen. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

SQL (Structured Query Language) Schemata Datentypen

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin)

Einführung in Datenbanken - Wiederholung Normalformen - Philipp Cimiano AG Semantische Datenbanken und Wissensverarbeitung

Transaktionen und Synchronisation konkurrierender Zugriffe

Normalformen. Datenmodellierung, Datenbanksysteme. Ingo Claÿen, Martin Kempa, Peter Morcinek. Hochschule für Technik und Wirtschaft Berlin

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Die InnoDB Storage Engine. Handy aus?

Übungen zur Vorlesung. Datenbanken I

OP-LOG

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Synchronisation in Datenbanksystemen in a nutshell

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Fragenkatalog zum Kurs 1666 (Datenbanken in Rechnernetzen) Kurstext von SS 96

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

P.A. Bernstein, V. Hadzilacos, N. Goodman

Artikel Schnittstelle über CSV

Datenbanken II Literatur

Hochschule Karlsruhe Technik und Wirtschaft

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Options- und Freitext-Modul Update-Anleitung

PostgreSQL in großen Installationen

Labor 3 - Datenbank mit MySQL

1. Ziel des Datenbankentwurfs

Eigenschaften von TAs: ACID-Prinzip

Statuten in leichter Sprache

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

BEDIENUNG ABADISCOVER

Reporting Services und SharePoint 2010 Teil 1

Erstellen von x-y-diagrammen in OpenOffice.calc

View. Arbeiten mit den Sichten:

Archiv - Berechtigungen

Grundlagen der Informatik

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

3. Stored Procedures und PL/SQL

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Repetitionsaufgaben Wurzelgleichungen

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Software-Engineering Einführung

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Einführung in Subversion

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Transaktionen. Concurrency Management in MS SQL Server

Persönliches Adressbuch

Avira Professional Security/ Avira Server Security Version 2014 Release-Informationen

JooLIMS. Manueller Import

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

OSF Integrator für Btracking und Salesforce Anleitung für die Nutzer

Abfrage-Befehle in MySQL -diverse Funktionen -

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS Transaktionen & ACID. Dr. Christian Senger Transaktionen & ACID 1

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Datenbanken (Bachelor) (SPO2007) WS 2011/12

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Professionelle Seminare im Bereich MS-Office

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

3. Neuen Newsbeitrag erstellen Klicken Sie auf das Datensatzsymbol mit dem +, damit Sie einen neuen Newsbeitrag erstellen können.

Die Excel Schnittstelle - Pro Pack

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Datenadminstrator, Datenbankdesigner, Systemanalytiker (für die logische Sicht zuständig)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

PHPNuke Quick & Dirty

Adami CRM - Outlook Replikation User Dokumentation

SQL. Fortgeschrittene Konzepte Auszug

Transkript:

Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1

Normalformen Problematik Anomalien bei: Einfügung Update Löschen Quelle:https://de.wikipedia.org/wiki/Anomalie_%28Informatik%29, Kudraß RDB 4-2

Normalformen 1_NF, vorher Jeder Datensatz mit Primärschlüssel identifizierbar Jedes Attribut der Relation muss einen atomaren Wertebereich haben, und die Relation muss frei von Wiederholungsgruppen sein. Quelle: https://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-3

Normalformen 1_NF, zwischen Resultat Jeder Datensatz mit Primärschlüssel identifizierbar Jedes Attribut der Relation muss einen atomaren Wertebereich haben, und die Relation muss frei von Wiederholungsgruppen sein. Redundanz eingeführt... => es braucht mehr Tabellen! RDB 4-4

Normalformen 1_NF, nachher Jeder Datensatz mit Primärschlüssel identifizierbar Jedes Attribut der Relation muss einen atomaren Wertebereich haben, und die Relation muss frei von Wiederholungsgruppen sein. RDB 4-5

Normalformen 2_NF, vorher 1_NF Wenn jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist. <=> Jedes nicht-primäre Attribut (nicht Teil eines Schlüssels) ist vom gesamten Schlüssel abhängig, nicht nur von einem Teil davon 1_NF Tabellen mit nicht zusammengesetzten Schlüsseln sind automatisch in 2_NF Quelle: https://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-6

Normalformen 2_NF, nachher 1_NF Wenn jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist. <=> Jedes nicht-primäre Attribut (nicht Teil eines Schlüssels) ist vom gesamten Schlüssel abhängig, nicht nur von einem Teil davon Hier hat man die Tabelle CD_Lieder in zwei Tabellen zerlegt Quelle: https://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-7

Normalformen 3_NF, vorher 2_NF Kein "nichtschlüssel" Attribut hängt von irgendeinem Schlüsselkandidaten transitiv ab. Ein Attribut A ist vom Schlüsselkandidaten C transitiv abhängig, wenn es ein Attribut B gibt, so dass (C B) und (B A). Quelle: https://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-8

2_NF Normalformen 3_NF, nachher Kein "nichtschlüssel" Attribut hängt von irgendeinem Schlüsselkandidaten transitiv ab. Ein Attribut A ist vom Schlüsselkandidaten C transitiv abhängig, wenn es ein Attribut B gibt, so dass (C B) und (B A). Hier hat man die Tabelle CD in zwei Tabellen zerlegt Quelle: https://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-9

Normalformen 4_NF, vorher 3_NF Vierte Normalform (4_NF) (es darf nicht mehrere, voneinander unabhängige, 1:n-Beziehungen in einer Relation geben) Quelle: https://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-10

Normalformen 4_NF, nachher 3_NF Vierte Normalform (4_NF) (es darf nicht mehrere, voneinander unabhängige, 1:n-Beziehungen in einer Relation geben) Quelle: http://de.wikipedia.org/wiki/normalisierung_(datenbank) RDB 4-11

Normalformen Weitere Formen 1_NF 2_NF 3_NF Boyce-Codd-Normalform (BC_NF) 4_NF 5_NF 6_NF RDB 4-12

Transaktionen Definition Reihenfolge von zusammengehörigen Operationen Für Datenbank, Kontoüberweisung, etc... Wechsel zwischen konsistenten Zuständen Muss ACID-Eigenschaften erfüllen (Definition folgt) Quelle: Kudraß RDB 4-13

Transaktionen Synchronisationsprobleme Verlorene Updates Schreib-Lese-Konflikt (Dirty Read) Nichtwiederholbares Lesen Phantomproblem RDB 4-14

Zeit Transaktionen Beispiel "Verlorene Updates" Programm 1 Programm 2 Programm 1 liest das Konto X Programm 1 ändert Konto X und schreibt den neuen Stand Die Aktualisierung von Programm 1 ist verloren gegangen Programm 2 liest das Konto X Programm 2 ändert Konto X und schreibt den neuen Stand RDB 4-15

Zeit Transaktionen Beispiel "Schreib-Lese-Konflikt" Programm 1 Programm 2 Programm 1 startet eine Transaktion Programm 1 fügt Zeile A ein Programm 1 macht das Einfügen von Zeile A rückgängig (Rollback) Programm 2 liest Zeile A Programm 2 hat mit A ein Problem RDB 4-16

Zeit Transaktionen Beispiel "Nichtwiederholbares Lesen" Programm 1 Programm 2 Programm 1 liest Konto X. Es ist nicht leer... Programm 2 liest Konto X Programm 2 leert Konto X Auf Grund des Zustands Konto X erlaubt Programm 1 eine Transaktion; Der Kontostand ist aber nicht gleich wie vorher... RDB 4-17

Zeit Transaktionen Phantomproblem Ziel: Durchschnitt der Artikel im Lager berechnen Programm 1 Programm 2 Programm 1 rechnet sum(artikel) des Lagers Programm 1 rechnet count(artikel) des Lagers. Dieser Wert ist falsch... Programm 2 fügt neue Artikel ins Lager RDB 4-18

Transaktionen Überblick StartTransaction oder Begin (BOT) Commit Rollback SQL Befehle Grundregeln (ACID- Eigenschaften) Savepoints Autocommit Modus Locks Werkzeuge / Konfiguration Transaktionen Sperrverfahren 2 Phases Commit Zeitstempel basiert Pessimistische Synchronisation (Siehe RDB 6) Optimistische Synchronisation (siehe RDB 6) Quelle: Wikipedia, Kudraß RDB 4-19

Transaktionen Autocommit "...user has always a transaction open..." COMMIT oder ROLLBACK nötig set autocommit=0; Per Default = 1 Jedes Statement => new Transaction Bei Schema Änderung create index lock / unlock table Automatisches Transaktionsende Autocommit START TRANSACTION oder BEGIN möglich Zustand anzeigen (MySQL): SELECT @@autocommit; RDB 4-20

Transaktionen Autocommit "...user has always a transaction open..." COMMIT oder ROLLBACK nötig set autocommit=0; Per Default = 1 Jedes Statement => new Transaction Bei Schema Änderung create index lock / unlock table Automatisches Transaktionsende Autocommit START TRANSACTION oder BEGIN möglich Zustand anzeigen (MySQL): SELECT @@autocommit; RDB 4-21

Zeit Transaktionen Locking, Beispiel (1) Quelle: Wikipedia RDB 4-22

Zeit Transaktionen Locking, Beispiel (2) RDB 4-23

Transaktionen Locking (READ) Nur für InnoDB-Tabellen und wenn autocommit == 0 Kein READ LOCK Statement => SQL Select Erweiterung: SELECT * FROM... WHERE konto='x' LOCK IN SHARE MODE; Lock auf Datensatz-Ebene Erlaubt andere Transaktionen die ausgewählten Datensätze zu lesen aber nicht zu schreiben Gilt bis Ende der Transaktion Quelle: http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html RDB 4-24

Transaktionen Locking (WRITE) Nur für InnoDB Tabellen und wenn autocommit == 0 Kein WRITE LOCK => MySQL Select Erweiterung: SELECT * FROM... WHERE konto='x' FOR UPDATE; Erlaubt andere Transaktionen die ausgewählten Datensätze zu lesen (je nach IsolationLevel) aber nicht zu schreiben. Transaktionen mit SELECT... LOCK IN SHARE MODE sind blockiert. Gilt bis Ende der Transaktion Quelle: http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html RDB 4-25

Default: Kein Lock Transaktionen Locking für MyISAM Lock auf Tabellenebene: LOCK TABLE table_1 locktyp_1,... UNLOCK Lock Typen: READ LOCAL (Locks Updates, insert am Ende der Tabelle möglich) READ (Locks alle Arten von Updates) WRITE (Lock alle Lesen und Schreiben) Quelle: http://dev.mysql.com/tech-resources/articles/storage-engine/part_2.html RDB 4-26

Transaktionen Locks and Deadlocks... InnoDB-Treiber erkennt es => im letzten Prozess Fehler Rollback der Transaktion "innodb_lock_wait_timeout=n", Default 50 Sek. Quelle: Wikipedia RDB 4-27

Transaktionen Savepoints START TRANSACTION;... SAVEPOINT point_1;... SAVEPOINT point_2;... <Exception>! => "ROLLBACK TO SAVEPOINT point_1;"... COMMIT; Nur für InnoDB Tables und innerhalb der Transaktion Quelle: http://dev.mysql.com/doc/refman/5.5/en/savepoint.html RDB 4-28

Transaktionen Isolation Levels SET [session global] TRANSACTION ISOLATION LEVEL wenig isoliert stark isoliert READ UNCOMMITTED (=> "dirty reads" möglich) effizient READ COMMITTED (=> besser geschützt) REPEATABLE READ (=> wie der Name sagt) SERIALIZABLE (=> select == weniger effizient select in share mode) mysql> SELECT @@tx_isolation, @@global.tx_isolation; +-----------------+-----------------------+ @@tx_isolation @@global.tx_isolation MySQL Defaults +-----------------+-----------------------+ REPEATABLE-READ REPEATABLE-READ +-----------------+-----------------------+ Quelle: http://www.databasejournal.com/features/mysql/article.php/3393161/ MySQL-Transactions-Part-II---Transaction-Isolation-Levels.htm RDB 4-29

Übungen 1) Normalisieren Sie diese Datenbank mit den bekannten Normalformen. Artikel: { Name, Typ, Herstellername, Herstelleradresse } Lieferant: { ID, Name, Strasse, Stadt, Kanton, Land } Lieferung: { ID, LieferantID, ArtikelName, Menge, PreisProMenge } 2) Schreiben Sie eine SQL-Anweisung, die nicht erfüllte Integritätsregeln in der CD DB anzeigt (z.b. Unbekannte CD in "CDStueck"). Hinweis: Addieren Sie zuerst eine unbekannte CD in "CDStueck". Dafür soll "SET foreign_key_checks=0" verwendet werden. RDB 4-30