Vorteile von Datenbanken
1. Redundanz wird gesenkt
2. Inkonsistenz wird vermieden
3. Daten sind teilbar
4. Förderung von Standarts
5. Verbesserter Datenschutz
6. Daten Integrität
7. Zuschnitt der Daten auf Anforderungen des Unternehmens
2. Inkonsistenz wird vermieden
3. Daten sind teilbar
4. Förderung von Standarts
5. Verbesserter Datenschutz
6. Daten Integrität
7. Zuschnitt der Daten auf Anforderungen des Unternehmens
Was ist ein lokales Attribut?
Attribut, dass:
- nur in einer Tabelle vorkommt
- und dort nicht Schlüsselattribut ist
- nur in einer Tabelle vorkommt
- und dort nicht Schlüsselattribut ist
Was ist eine Transaktion?
- an Integritätsregeln gebundene Folge von Datenbankoperationen → ACID-Prinzip
Was ist das Ziel von Transaktionen?
- konfliktfreies Arbeiten für mehrere Benutzer
- Änderungen dürfen nach außen erst sichtbar werden, wenn Integritätsbedingungen respektiert sind
Nenne die 3 Abstraktionsebenen (Sichten) eines Datenbanksystems und deren Ziele!
1. Konzeptionelle Datensicht:
- logische Gesamtsicht aller Daten
- Ankerpunkt des DB-Entwurfs
- Ziel: stabiler Bezugspunkt
2. interne Datensicht:
- pysische Datenorganisation, tatsächliche Speicherung der Daten
- Zugriffspfade
- Ziel: Festlegung für Benutzergemeinschaft, Zugriffshäufigkeiten
3. externe Datensicht:
- Benutzerschnittstelle
- logische Sichten einzelner Benutzergruppen auf Teile der DB
- Zugriffsschutz
- logische Gesamtsicht aller Daten
- Ankerpunkt des DB-Entwurfs
- Ziel: stabiler Bezugspunkt
2. interne Datensicht:
- pysische Datenorganisation, tatsächliche Speicherung der Daten
- Zugriffspfade
- Ziel: Festlegung für Benutzergemeinschaft, Zugriffshäufigkeiten
3. externe Datensicht:
- Benutzerschnittstelle
- logische Sichten einzelner Benutzergruppen auf Teile der DB
- Zugriffsschutz
Wie lautet die 1. Normalform?
Jedes Attribut ist elementar
Tabelle hat eine feste Breite
Tabelle hat eine feste Breite
Nennen Sie die Probleme bei redundanten Tabellen! (Mutationsanomalien)
1. Änderungsanomalie:
Ändert Lieferant seinen Name, muss er in allen Tupeln verändert werden
2. Löschanomalie:
Werden alle Zeilen mit Bestellungen eines Lieferanten gelöscht, geht auch Info über Lieferanten verloren
3. Einfügeanomalie
Solange ein Lieferant keine Bestellung gemacht hat, ist er nicht in Tabelle
Ändert Lieferant seinen Name, muss er in allen Tupeln verändert werden
2. Löschanomalie:
Werden alle Zeilen mit Bestellungen eines Lieferanten gelöscht, geht auch Info über Lieferanten verloren
3. Einfügeanomalie
Solange ein Lieferant keine Bestellung gemacht hat, ist er nicht in Tabelle
Erklären Sie funktionale Abhängigkeit!
Wo ist der Unterschied zu voll-funktional?
Wo ist der Unterschied zu voll-funktional?
B heißt funktional abhängig wenn in jedem Tupel in dem A vorkommt der selbe Wert für B existiert.
(A→B)
Voll-funktional:
B hängt von allen Elementen von A ab, nicht nur von einem Teil.
→ bei Verbundsschlüsseln
(A→B)
Voll-funktional:
B hängt von allen Elementen von A ab, nicht nur von einem Teil.
→ bei Verbundsschlüsseln
Wie heißt die 2. Normalform?
- ist in 1. NF
- jedes Nicht-Schlüssel Attribut hängt vom gesamten Schlüssel ab → volle funktionale Abhängigkeit
Wie lautet die 3. Normalform?
- muss in 2. NF sein
- keine Abhängigkeiten zwischen Nichtschlüsselattributen
- z.B. PLZ und Ort → PLZ wird Primärschlüssel in neuer Tabelle)
Wie heißt die 3. NF?
- ist in 2. NF
- keine Abhängigkeit zwischen Nicht-Schlüssel Attributen
- keine Abhängigkeit zwischen Nicht-Schlüssel Attributen
Wie geht man beim Normalisieren vor?
1. funktionale Abhängigkeiten
2. voll funktionale Abhängigkeiten
3. transitive Abhängigkeiten
4. nur noch lokale und globale Attribute
--> alle Probleme beim Löschen und Entfernen entfernen
2. voll funktionale Abhängigkeiten
3. transitive Abhängigkeiten
4. nur noch lokale und globale Attribute
--> alle Probleme beim Löschen und Entfernen entfernen
Wie ist der Primärschlüssel definiert?
- jedes nicht-Schlüssel Attribut ist vom Schlüssel funktional abhängig
- bei Verbundschlüssel ist kein Schlüsselattribut von den anderen Schlüsselattributen abhängig
- bei Verbundschlüssel ist kein Schlüsselattribut von den anderen Schlüsselattributen abhängig
Nenne 3 unteschiedliche DB-Modelle und deren Eigenschaften!
1. Hierarchisches Modell: 1:N, sequentiell
2. Netzwerk Modell: N:N, Adressverweise
3. Relationales Modell: N:N, gemeinsame Attribute (Primär/Fremdschlüssel)
2. Netzwerk Modell: N:N, Adressverweise
3. Relationales Modell: N:N, gemeinsame Attribute (Primär/Fremdschlüssel)
Was bedeutet ACID und warum brauch eine Transaktion dieses Prinzip?
Atomicity: ganz oder gar nicht
→ Einheit für Rücksetzbarkeit nicht abgeschlossener Transaktionen
Consistency: Überführung DB von konsistentem Zustand in einen anderen
→ Einheit zur Konsistenzerhaltung
Isolation: verhindert, dass sich nebenläufige Transaktionen gegenseitig beeinflussen
→ Einheit für Serialisierbarkeit
Durability: Daten werden nur nach dem erfolgreichen Abschluss einer Transaktion garantiert dauerhaft in der Datenbank gespeichert
→ Einheit für Wiederherstellbarkeit
→ garantiert jedem Anwender konsistente Datenbestände; bei zwischenzeitlicher Inkonsistenz ist diese nach außenhin unsichtbar und wird bei einem Fehler rückgängig gemacht.
→ Einheit für Rücksetzbarkeit nicht abgeschlossener Transaktionen
Consistency: Überführung DB von konsistentem Zustand in einen anderen
→ Einheit zur Konsistenzerhaltung
Isolation: verhindert, dass sich nebenläufige Transaktionen gegenseitig beeinflussen
→ Einheit für Serialisierbarkeit
Durability: Daten werden nur nach dem erfolgreichen Abschluss einer Transaktion garantiert dauerhaft in der Datenbank gespeichert
→ Einheit für Wiederherstellbarkeit
→ garantiert jedem Anwender konsistente Datenbestände; bei zwischenzeitlicher Inkonsistenz ist diese nach außenhin unsichtbar und wird bei einem Fehler rückgängig gemacht.
Was ist Serialisierbarkeit?
- konkurrierende Zugriffe auf dieselben Datenobjekte müssen serialisiert werden → unabhängiges Arbeiten verschiedener Anwender
Wie läuft eine Transaktion ab?
Before-Image-Zustand BOT
bei Abbruch: Rollback to BOT
-
After-Image-Zustand EOT
bei Abbruch: Rollback to BOT
-
After-Image-Zustand EOT
Was ist ein serieller Ablauf?
Ein Ablauf heißt seriell, wenn alle Schritte einer Transaktion
vollständig ausgeführt werden, ehe die der nächsten Transaktion
beginnen
vollständig ausgeführt werden, ehe die der nächsten Transaktion
beginnen
Wann stehen Transaktionen im Konflikt?
Zwei Aktionen in einem Ablauf stehen in Konflikt, wenn die folgenden 3 Punkte zutreffen:
(1) sie gehören zu unterschiedlichen Transaktionen
(2) sie greifen auf dasselbe Datenobjekt zu
(3) mindestens einer der Aktionen ist write
Was ist der Präzedenzgraph?
Kriterium für Serialisierbarkeit
→ Transaktionen sind serialisierbar, wenn Präzedenzgraphen keine Zyklen aufweisen
Der Präzedenzgraph zu einem Ablauf S ist ein gerichteter Graph
GS mit
(1) den Knoten T1,T2, . . . für jede Transaktion Ti
in S
(2) den Kanten Ti → Tj falls Ti und Tj konfligierende Aktionen
haben, bei denen die Aktion in Ti vor der in Tj
in S vorkommt.
→ Transaktionen sind serialisierbar, wenn Präzedenzgraphen keine Zyklen aufweisen
Der Präzedenzgraph zu einem Ablauf S ist ein gerichteter Graph
GS mit
(1) den Knoten T1,T2, . . . für jede Transaktion Ti
in S
(2) den Kanten Ti → Tj falls Ti und Tj konfligierende Aktionen
haben, bei denen die Aktion in Ti vor der in Tj
in S vorkommt.
Wozu dient der Präzedenzgraph?
Hat der Präzedenzgraph keinen Zyklus, ist ein Ablauf S serialisierbar,
Was ist 2PL (2-Phasen-Sperrprotokoll)?
- alle Sperraktionen in der Transaktion werden vor der ersten Freigabeaktion ausgeführt → Transaktion darf nach erstem UNLOCK kein LOCK mehr verlangen→ Verhinderung zyklischer Abhängigkeiten
Was ist S2PL, und welche Vorteile/Nachteile gibt es?
S2PL: Strict-2-Phase-Locking
Eine Transaktion folgt dem strikten 2PL, wenn sie dem 2PL folgt
und alle Sperren en bloc am Ende der Transaktion freigibt.
-dynamischer Ablauf
- weniger Wartezeiten
ABER Gefahr von Verklemmung (Deadlock)
Eine Transaktion folgt dem strikten 2PL, wenn sie dem 2PL folgt
und alle Sperren en bloc am Ende der Transaktion freigibt.
-dynamischer Ablauf
- weniger Wartezeiten
ABER Gefahr von Verklemmung (Deadlock)
Was ist C2PL? Vor-Nachteile
Conservative 2-Phase-Locking
- vor der Transaktion werden alle Daten gesperrt, auf die in der Transaktion zugegriffen werden
- Vorteil: Transaktion beginnt erst, wenn alle Datensätze verfügbar sind → keine Deadlocks
- Nachteil: höhere Wartezeit
Was ist der WFG- Algorithmus (Wait-for-graph)?
- Analyse des Wartegraphs, um gegenseitige Behinderungen zu erfassen
- zeigt, wie Transaktionen auf andere warten
→ Zyklus im WFG: Deadlock
Was macht das optimistische Verfahren bei Verklemmungen?
- nimmt Konflikte in Kauf, setzt keine Sperren
- Konfliktbehebung durch Zurücksetzen der auslösenden Transaktion vor erfolgreichem Abschluss
- wenn Transaktion in Validierungsphase kommt, wird Serialisierbarkeit geprüft
Was sind Vor- und Nachteile von optimistischen Verfahren für Synchronisationsmechanismen?
- Vorteil: verkürzte Wartezeiten, hoher Grad an Parallelität
- Nachteile: nur bis 10% Kollisionen "gut" (danach ist Rücksetzungszeit größer als die gesparte Wartezeit), Gefahr des "Verhungerns" von Transaktionen
Zusammenhang Dateiorganisation und Dateizugriff
Speicherung/Zugriff | physikalisch fortlaufen | Logisch fortlaufen | wahlfrei direkt |
Sequenziell | + + | +- | +- |
Indiziert/ indexsequentiell | - | + + | + |
relativ (direkte oder Indirekte Adressierung) | - | +- | ++ |
Nenne 5 Kriterien zur Beurteilung von Dateiorganisation- und zugriff
1. Speicherplatz
2. Zugriffszeit
3. Neue Datensätze
4. Re-Organisationsnotwendigkeit
5. Zusammenhang zwischen Ordnungsbegriff und logischer Adresse
2. Zugriffszeit
3. Neue Datensätze
4. Re-Organisationsnotwendigkeit
5. Zusammenhang zwischen Ordnungsbegriff und logischer Adresse
Was macht das pessimistische Verfahren bei Verklemmungen und was ist ein Beispiel?
- verhindert im Vorfeld, dass Konflikte bei parallel laufenden Transaktionen entstehen können → Gewährleistung der Serialisierbarkeit
→ 2PL (S2PL, C2PL)
Was sind Vor- und Nachteile des pessimistischen Verfahrens bei Synchronisationsmechanismen?
- Vorteil: meist nur wenig Rücksetzungen
- Nachteil: evtl. lange Wartezeiten
Wie heißen die 2 Phasen die beim 2PL ablaufen und was passiert in diesen?
Wachstumsphase: Sperren aller notwendigen Datensätzen werden verhängt
Schrumpfungsphase: Sperren werden aufgehoben
Schrumpfungsphase: Sperren werden aufgehoben
Welche Phasen gibt es bei optimistischen Verfahren?
- Lesephase: Lesen der Objekte, Speicherung und Verarbeitung
- Validierungsphase: Überprüfung auf Konfliktfreiheit, evtl. Zurückstellung
- Schreibphase: Einbringung Änderungen in DB
Es soll eine Datenbank Personalverwaltung in MySQL angelegt werden, die folgende Tabelle enthält:
Mitarbeiter (PersNr (Primärschlüssel), Name, Gruppe, Eintrittsdatum, Gehalt)
Geben Sie die für die Erstellung der Datenbank und der Tabelle notwendigen SQL-Befehle an. Überlegen Sie sich dabei sinnvolle Datentypen für die Attribute der Tabelle Mitarbeiter.
Mitarbeiter (PersNr (Primärschlüssel), Name, Gruppe, Eintrittsdatum, Gehalt)
Geben Sie die für die Erstellung der Datenbank und der Tabelle notwendigen SQL-Befehle an. Überlegen Sie sich dabei sinnvolle Datentypen für die Attribute der Tabelle Mitarbeiter.
1. Schritt: Datenbank anlegen
CREATE DATABASE Personalverwaltung;
2. Schritt: Die Datenbank Personalverwaltung aufrufen
USE Personalverwaltung;
3. Schritt: Die Tabelle Mitarbeiter anlegen
CREATE TABLE Mitarbeiter(PersNr INT UNSIGNED NOT NULL,
Name VARCHAR(20) NOT NULL,
Gruppe VARCHAR(3),
Eintrittsdatum DATE,
Gehalt FLOAT(8,2),
PRIMARY KEY(PersNr));
CREATE DATABASE Personalverwaltung;
2. Schritt: Die Datenbank Personalverwaltung aufrufen
USE Personalverwaltung;
3. Schritt: Die Tabelle Mitarbeiter anlegen
CREATE TABLE Mitarbeiter(PersNr INT UNSIGNED NOT NULL,
Name VARCHAR(20) NOT NULL,
Gruppe VARCHAR(3),
Eintrittsdatum DATE,
Gehalt FLOAT(8,2),
PRIMARY KEY(PersNr));
Wie kann eine Spalte eingefügt/gelöscht werden?
Alter table table_name ADD
column_name datatype;
Alter table table_name DROP
column_name;
column_name datatype;
Alter table table_name DROP
column_name;
Wie kann ein Primärschlüssel eingefügt werden?
Alter table table_name
Add Primary key(column_name);
Alter table table_name
Add Foreign Key (column_name)
References table_name2(column_name2);
Add Primary key(column_name);
Alter table table_name
Add Foreign Key (column_name)
References table_name2(column_name2);
Die Tabelle aus Aufgabe 1 soll nun mit 10 Datensätzen gefüllt werden, die in Form einer EXCEL-Liste vorliegen.
Beschreiben Sie möglichst genau (z.B. durch Angabe in SQL-Syntax) fünf Vorgehensweisen, wie die Daten in die Tabelle geschrieben werden können.
Beschreiben Sie möglichst genau (z.B. durch Angabe in SQL-Syntax) fünf Vorgehensweisen, wie die Daten in die Tabelle geschrieben werden können.
1. Möglichkeit – Eingabe von Hand per INSERT – Anweisung
INSERT INTO Mitarbeiter VALUES (20,’Maier’,’Ang’,’2008-12-12’,2800);
2. Möglichkeit – Direktes Auslesen der Datei
3. Möglichkeit – Verwenden einer GUI, Eingabe von Hand (z.B. mit MySQL Workbench)
4. Möglichkeit – Übertragen per ODBC
5. Möglichkeit - Übertragen mit select ... into
SELECT *
INTO newtable
FROM table1;
INSERT INTO Mitarbeiter VALUES (20,’Maier’,’Ang’,’2008-12-12’,2800);
2. Möglichkeit – Direktes Auslesen der Datei
- Liste aus Excel als Textdatei importieren
- auf korrekte Formatierung achten (Textfelder und Datumsangaben)
- LOAD DATA LOCAL INFILE ’/home/BA_Stuttgart/Kausur2013/Daten.txt’ INTO TABLE Mitarbeiter;
3. Möglichkeit – Verwenden einer GUI, Eingabe von Hand (z.B. mit MySQL Workbench)
4. Möglichkeit – Übertragen per ODBC
- Daten aus Excel/Access per ODBC in neue Tabelle der DB schreiben
- dann mit INSERT-Anweisung Daten aus dieser Tabelle in DB einfügen
5. Möglichkeit - Übertragen mit select ... into
SELECT *
INTO newtable
FROM table1;
Wie können Datensätze aus einer Tabelle in eine andere eingefügt werden?
SELECT ...
INTO Tabellenname
FROM ...
INTO Tabellenname
FROM ...
Wie können Daten aus einer Tabelle gelöscht werden?
DELETE
FROM Tabellenname
[WHERE Bedingung];
FROM Tabellenname
[WHERE Bedingung];
Wie können Daten mit INSERT INTO in eine neue Tabelle geschrieben werden?
INSERT INTO Tabellenname(Spalte1, Spalte2)
SELECT Spalte3, Spalte4
FROM Tabellenname2
SELECT Spalte3, Spalte4
FROM Tabellenname2
Wie können alle Datensätze aus einer Tabelle gelesen werden?
SELECT * FROM tabellenname;
Wie funktioniert eine Unterabfrage?
SELECT ...
FROM ...
WHERE Spaltenname =
(SELECT Funktionsaufruf
FROM Tabellenname
[WHERE Bedingung]);
FROM ...
WHERE Spaltenname =
(SELECT Funktionsaufruf
FROM Tabellenname
[WHERE Bedingung]);
Wie wird eine Tabelle aktualisiert?
UPDATE Tabellenname
SET Spaltenname = ...
[WHERE ...];
SET Spaltenname = ...
[WHERE ...];
Sie wollen eine Kundentabelle aus einem deutschen ERP-System in ein amerikanisches ERP-System exportieren.
Überlegen Sie sich in Stichworten, welche Schwierigkeiten dabei auftreten können.
Überlegen Sie sich in Stichworten, welche Schwierigkeiten dabei auftreten können.
1. Ein Problem kann die Darstellung von Umlauten sein, insbesondere auch dann, wenn diese in Tabellen- oder Spaltenbezeichnungen verwendet wurden. Dies sollte allgemein vermieden werden.
2. Allgemein werden Datumsangaben unterschiedlich dargestellt.
3. Bestimmte Datenformate, z.B. für die Aufnahme von Postleitzahlen, können unterschiedlich sein.
4. Steuertabellen bzw. Angaben müssen angepasst werden.
5. Zahlungs-, Liefer- und Versandkonditionen müssen übersetzt bzw. angepasst werden.
2. Allgemein werden Datumsangaben unterschiedlich dargestellt.
3. Bestimmte Datenformate, z.B. für die Aufnahme von Postleitzahlen, können unterschiedlich sein.
4. Steuertabellen bzw. Angaben müssen angepasst werden.
5. Zahlungs-, Liefer- und Versandkonditionen müssen übersetzt bzw. angepasst werden.
Was sind Stored Procedures?
Ähnlich wie Funktionen, aber im Gegensatz zu Funktionen muss es keinen Rückgabewert geben.
Was ist referentielle Integrität?
- Prüfung, ob in Datensätzen der Detailtabelle gültige Primärschlüssel der Mastertabellen benutzt werden
- Aktualisierungsweitergabe/Löschweitergabe an Detailtabelle
Wie sieht der Quellcode einer Stored Procedure aus?
CREATE PROCEDURE simpleproc(OUT param1 INT)
BEGIN
Select count (*) INTO param1 FROM actor;
END;
Aufruf:
CALL simpleproc (@x);
BEGIN
Select count (*) INTO param1 FROM actor;
END;
Aufruf:
CALL simpleproc (@x);
Wie greift man von JAVA aus auf Stored Procedures zu?
1.Aufruf ankündigen
2.Ausgabeparameter registrieren
3.Eingabeparameter setzen
4.Prozedur ausführen
5.Ergebnis verarbeiten
2.Ausgabeparameter registrieren
3.Eingabeparameter setzen
4.Prozedur ausführen
5.Ergebnis verarbeiten
Wie codiert man eine Funktion in SQL? Wie wird sie aufgerufen/gelöscht?
CREATE FUNCTION Hallo (S CHAR(20))
RETURNS CHAR(30)
RETURN Case
WHEN current_time<’12:00’
then concat (’Guten Morgen’, S)
WHEN current_time<’18:00’
then concat(’Guten Tag’, S)
ELSE concat (’Guten Abend’,S)
END;
Aufruf: select Hallo(’Chuck’);
Löschen: Drop function [if exists] Hallo;
RETURNS CHAR(30)
RETURN Case
WHEN current_time<’12:00’
then concat (’Guten Morgen’, S)
WHEN current_time<’18:00’
then concat(’Guten Tag’, S)
ELSE concat (’Guten Abend’,S)
END;
Aufruf: select Hallo(’Chuck’);
Löschen: Drop function [if exists] Hallo;
Beschreibe einen Datenbankzugriff von Java.
- 1. JDBC-Treiber installieren, Classpath setzen
- 2. Treiber laden import java.sql.*;String dbDRV="com.mysql.jdbc.driver";Class.forName(dbDrv);
- 3. Verbindung zum DBMS aufbauen und DB auswählen String dbURL="jdbc:mysql:localhost/kino";Connection cn=DriverManager.getConnection(dbUrl, User, Pwd);
- 4. Statement vereinbaren Statement st=cn.createStatement();
- 5. Abfrage senden Result rs=st.executeQuery("select * from " + dbTbl);
- 6. Abfrageergebnis verarbeiten ResultSetMetaData rsmd=rs.getMetaData();
- 7. Verbindung zur DB schließen rs.close();
Wie kann in der Tabelle actor 'Hans' als Vorname an die Stelle 500 gesetzt werden?
(Lösung mit Java)
(Lösung mit Java)
st.executeUpdate("update actor set first_name='Hans' where actor_id=500;");
Wie können alle Datensätze aus der Tabelle actor gelesen werden?
(Lösung mit Java)
(Lösung mit Java)
ResultSet rs=st.executeQuery("select * from actor");
Kartensatzinfo:
Autor: @destructive_influen...
Oberthema: Datenbanken
Thema: Datenbanken
Veröffentlicht: 27.04.2016
Schlagwörter Karten:
Alle Karten (61)
keine Schlagwörter