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
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
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 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.
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
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));
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;
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.
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();
Flashcard set info:
Author: @destructive_influen...
Main topic: Datenbanken
Topic: Datenbanken
Published: 27.04.2016
Card tags:
All cards (61)
no tags