/
Set of flashcards Details
Flashcards | 62 |
---|---|
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 02.02.2016 / 27.04.2024 |
Weblink |
https://card2brain.ch/box/datenbanken_3_semester
|
Embed |
<iframe src="https://card2brain.ch/box/datenbanken_3_semester/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Was ist eine View?
- "virtuelle Tabelle"
- enthält aktuelle Informationen aus einer oder mehreren Tabellen
- existiert nur in Benutzersicht, liegt nicht physikalisch vor
Vorteile:
- Vermeidung komplexer Anfragen
- stabilere Schnittstelle zu Anwendungsprogrammen, Änderungen am Modell bleiben verborgen (Geheimnisprinzip)
Welche Probleme können beim Einfügen von Daten über eine View auftreten?
- falsches Setzen des Primärschlüssels, da z.B. nicht in der View enthalten
- beim Erzeugen der View wurden Werte berechnet, Nutzer weiß nicht, dass es sich eigentlich um mehrere Einzelwerte handelt
- Daten füllen nicht alle Spalten und NULL-Werte sind nicht zugelassen
- weitere Verstöße gegen Constraints, die in den Ausgangstabellen existieren
Was ist eine Transaktion?
- feste Folge von Datenbankoperationen (in Bezug auf Veränderungen von Tabelleninhalten), die logische Einheit bilden
- komplette Ausführung ohne Störung durch nebenläufige Operationen anderer Nutzer
Was versteht man unter den ACID-Eigenschaften von Transaktionen?
A = Atomicity (Unteilbarkeit), Aktualisierung komplett oder gar nicht
C = Consistency, Aktualisierung von einem konsistenten in einen ebenfalls konsistenten Datenzustand
I = Isolation, Aktualisierung, als ob sie Datenbank allein nutzen würde
D = Durability (Dauerhaftigkeit), Datenbankzustand nach abgeschlossener Aktualisierung ist dauerhaft
Was bedeuten Commit, Rollback und Savepoint?
Commit: Übernahme der eingegebenen Befehle in die Datenbank
Rollback: Abbruch der Transaktion, Verwerfen der Änderungen seit der letzten abgeschlossenen Transaktion
Savepoint: Setzen eines Sicherungspunktes, nächstes Rollback verwirft nur Befehle nach dem Sicherungspunkt
Welche Anomalien gibt es?
Dirty Read: Transaktion liest noch nicht durch Commit bestätigten, mit UPDATE oder DELETE veränderten Wert einer anderen Transaktion
Lost Update: Transaktion überschreibt durch andere Transaktion geänderte Werte, ohne zu erkennen, dass zwischen der eigenen Leseaktion und der anschließenden Änderung die gelesenen Daten von dieser anderen Transaktion geändert wurden.
Phantomproblem: Transaktion liest noch nicht durch Commit bestätigten, mit INSERT veränderten Wert einer anderen Transaktion
Welche Blocktypen gibt es in PL/SQL?
- anonymer Block
- Prozedur (über Name adressierbar, kann parametrisiert werden)
- Funktion (über Name adressierbar, kann parametrisiert werden, Rückgabewert)
Was ist der Unterschied zwischen einer Variablen und einem Bezeichner in PL/SQL?
Variable: verweist auf Speicherort von Variablen
Bezeichner: zur Benennung von PL/SQL-Objekten (Variablen, Cursor, Unterprogrammen)
Welche Variablentypen gibt es in PL/SQL?
- Skalar: einzelne Werte
- Zusammengesetzt
- Referenz: enthalten Zeiger mit Verweis auf Speicherort
- LOB (Large Object): enthalten Positionsanzeiger, die Speicherort großer Objekte (z.B. Grafiken) bezeichnen, die out-of-line gespeichert werden
Geben Sie Beispiele für skalare Datentypen.
Char, Varchar2, Number, Binary_Integer oder PLS_Integer, Boolean, Binary_Float, Binary_Double, Date, Timestamp (verschiedene Variationen)
Wie können für eine Variable vorhandene Variablendeklarationen übernommen werden?
- Deklaration gemäß Definition einer Datenbankspalte oder einer anderen deklarierten Variablen
- Attribut %TYPE, davor kommt Spaltenname oder Name der bereits deklarierten Variablen
- für Records entsprechend %ROWTYPE
Wie werden zusammengesetzte Datentypen deklariert?
TYPE typname IS RECORD (felddeklaration1, felddeklaration2)
felddeklaration entspricht der Deklaration einer Variablen: Feldname Datentyp
Welche Ziele hat das DB-Tuning?
- Verkürzung der Antwortzeiten
- Erhöhung des Durchsatzes (Bearbeitung möglichst vieler Anfragen innerhalb einer Zeitspanne)
Welche Ebenen hat das DB-Tuning? Ordnen Sie sie nach aufsteigendem Optimierungspotenzial.
- Hardware
- Network
- DB Changes
- Indexes (30%)
- SQL Statements (60%)
Wie kann das Relationenschema angepasst werden, um eine Datenbank zu tunen?
- Zerlegung von Relationen, wenn auf Teile der Relation wesentlich häufiger zugegriffen wird als auf andere
- Denormalisierung (durch redundante Speicherung) zur Vermeidung von Joins
Was sind Materialized Views?
- im Gegensatz zu normaler View Datenkopien der Originaldaten
- einmal berechnet und dann dauerhaft gespeichert
- Vorteil: bei aufwendiger Berechnung bessere Performance als normale View
- Nachteil: muss neu berechnet werden, wenn Daten aktualisiert werden
Was ist ein Datenbank-Index?
- ähnlich einem Index in einem Buch
- eigener Speicherplatz
- besteht größtenteils aus Redundanzen, verweist auf Information, die an anderer Stelle gespeichert ist
- Einträge in bestimmter Reihenfolge --> einzelne Einträge können schneller gefunden werden, da sich Position des Eintrags aus Sortierreihenfolge ergibt
Welche beiden Möglichkeiten gibt es für Anwendungssoftware, auf eine Datenbank zuzugreifen?
Embedded SQL: Einbettung von SQL-Befehlen in die Programmiersprache (Unterstützung durch Compiler notwendig)
Realisierung der Schnittstelle durch DB-Hersteller: Programm verhält sich wie normaler Datenbankbenutzer
Was ist JDBC?
Java Database Connectivity
- Datenbankschnittstelle der Java Plattform
- einheitliche Schnittstelle zu Datenbanken unterschiedlicher Hersteller
- auf relationale Datenbanken ausgerichtet
Was ist ODBC?
Open Database Connectivity
- standardisierte Datenbankschnittstelle
- Verwendung von SQL als Datenbanksprache
- Programmierschnittstelle zur relativ unabhängigen Entwicklung einer Anwendung von dem verwendeten DBMS, wenn dafür einer ODBC-Treiber existiert
Wie erfolgt der Zugriff auf die H2-Datenbank aus Java heraus?
Laden des Datenbanktreibers
- Class.forName("org.h2.Driver");
Aufbau der Datenbankverbindung
- Connection conn = DriverManager.getConnection(<Connection String>, <user>, <password>);
Erzeugen eines Statements:
- Statement std = conn.createStatement();
Ausführen des SQL-Statements:
- ResultSet rs = std.executeQuery(<String>);
Auslesen der Ergebnisse aus SQL-Abfrage:
- while (rs.next()) {<Anweisung>}
Ändern / Einfügen von Datensätzen:
- std.executeUpdate(<String>)
Schließen der Verbindung:
- std.close();
- conn.close();
Was sind die Java-Basisklassen zur DB-Anbindung?
Connection: Kapselt einer DB-Verbindung
Statement: Kapselt ein DB-Statement
ResultSet: Kapselt das Ergebnis einer Datenbankabfrage