Please enable JavaScript.
Coggle requires JavaScript to display documents.
Datenbanken, Ändern von Constraints, Deklaration von Variablen…
Datenbanken
Design
Keys
Sind einmalige Attribute von Entitäten
Super Key
Alle spalten welche ein Entity einzigartig identifizieren
Candidate Key
Die geringste Anzahl an Spalten die Benötigt wird um ein Entity eindeutig zu identifizieren
Primary Key
Eindeutiger Identifikator eines Entity
Niemals Null
Darf sich nicht Ändern
Muss unique sein
Foreign Key
Eine Referenz auf den Primary Key/ Candidate Key einer anderen Tabelle
Domäne (Attribute): Zulässige Datentypen einer Spalte
Menge von atomaren Werten
Nicht weiter zerlegbar
Semantisch nicht weiter Teilbar
Relation (Tabellen)
Kreuzprodukt zweier Domänen
Wertepaarungen (Tupel) (a,b)
Modellbildung
Anforderungsanalyse
Qualitative und quantitative Erfassung des Ist Zustandes
Techniken
Dokumentanalyse
Fragebögen
Interviews/ Workshops
Beobachtung
Resultat der Analyse: Anforderungsdokument
Informationsanforderungen
Beschreiben Struktur/ Art der anfallenden Daten
Interessant:
Integritätsbedingungen
Min/ Maxkapazitäten der Datenelemente
Funktionale Anforderungen
Sollte ... sein
Korrekt
Vollständig
Eindeutig
Einfach
Bearbeitungsanfoderungen
Dynamische Anforderungen
Semantisches Datenmodell
ER-Schema
Datenelemente: Attribute
Spalten/ Attribute stellen die Eigenschaften von Entitäten dar
Gruppierung:
Entity’s
Tabellen sind Entitätstypem, einzelne Zeilen Entitäten eines Types
Bsp. Tabelle Schiff, eine Reihe ist eine spezifische Instanz eines Schiffes mit Attributen wie einem Name
Verknüpfung: Relationship
Verbindungen zwischen Entitiys
Grad der Beziehung: Anzahl der an der Beziehung beteiligten Entitäten
Typ
Total: alle Entitäten müssen an der Beziehung teilnehmen
<1:1>
Optional: Teilnahme nicht verpflichtend
<1:0,1>
Kardinalität: <1:1>, <1:N>, <N:M> beschreibt die Anzahl der maximal an der Beziehung beteiligter Entitäten
Relationales Datenbankmodell
Datenbankschema
Grundsätze
Richtigkeit
Relevanz
Wirtschaftlichkeit
Integrität
Referenz Integrität
Funktionierende Links zwischen den Tabellen
Domänen Integrität
Akzeptable Werte in Spalten
Enitiäts Integrität
Keine Doppelten vorkommenden Datenzeilen
Normalisierung
Das sicherstellen von Integrität durch das erfüllen von Vorgaben
Besonders wichtig in interaktiven Systemen:
Daten unterliegen regelmäßigen Änderungen
Datenmanipulation durch Nutzer
Erste Normalform
Nur atomare Werte
Zweite Normalform
Frei von Funktionellen Abhängigkeiten
Alle Attribute müssen vom gesamten Schlüssel abhängen oder sind Teil davon
Dritte Normalform
Frei von transitiven Abhängigkeiten
Anomalien: Verletzung der Integrität , inkonsistente redundante Daten
Änderungsanomalien
Löschungsanomalien
Einfüge Anomalien
Verhindert durch Constraints und Transaktionen und Trigger
Der Entwurf von relationalen Datenbanken ist die Gruppierung von Attributen in Relationen/ Tabellemn so das aufschnitte der realen Welt bestmöglich beschrieben werden
SQL
Mengen orientiert: Es wird mit Tabellen gearbeitet nicht mit einzelnen Zeilen
Dreiwertige Logik: True, False, Null
Operationen auf Null ist immer unknown, also kein Column = Null
Normierte Standardsprache für RDBMS, Implementierung hängt von DBMS ab
Commands
Data Manipulation Language
Abfragen auf Tabellen
SELECT
SELECT expression FROM tables [Clause]
tables: name der Relation (Tabelle) aus der selektiert Weden soll
Temporäre Objekte: Views
Erstellen/ Löschen von VIEWS
3 more items...
Persistente Objekte: Tabellen
Aliasnamen: Name mit dem ein Objekte angesprochen werden kann
SELECT bus.modell FROM bus_liste AS bus
SELECT sum(kosten*stunden) AS kosten_pro_stunde FROM auto_vermietung
Clauses
WHERE condition;
Eine oder die andere Bedingung: OR
1 more item...
2 Bedingungen: AND
1 more item...
GROUP BY column, ....
Ermöglicht das Gruppieren von Ergebnismengen nach Spalten
1 more item...
HAVING condition
1 more item...
ODER BY column ASC/DSC
Sortiert das Ergebnis nach spalte. ASC aufsteigend, DCS absteigend
1 more item...
DISTINC splate, spalte...
Eliminiert doppelt vorkommende Reihen basierend auf der angeben Spalte(n)
1 more item...
Bedingungen
AND: Verbinden von Bedingungen
OR: Eine der Bedingungen
LIKE: Enthält
LIKE ‘%abc‘
1 more item...
LIKE ’_abc’
1 more item...
BETWEEN x AND y: Zwischen
IS NULL
EXISTS: Existiert
[select Statement]
UNION ALL
[select statement]
Kombiniert die gelieferten Reihen zweier Abfragen
Bedingung: Beide Abfragen müssen in der selben Spaltenanzahl resultieren
Beispiel gegenüberstellen archivierter Daten mit aktuellen Daten
[select Statement]
UNION
[select statement]
Beinhaltet keine Duplikate
Beinhaltet Duplikate
SELECT b.column 1, b.column2, a.column 1, a.column2 FROM a
[INNER/ LEFT/RIGHT OUTER] JOIN
b ON a.id = b.id
Kombiniert Spalten zweier Tabellen
INNER
Vereinigung von A und B
LEFT OUTER
Menge A und Vereinigung A und B
RIGTH OUTER
Menge B und Vereinigung A und B
FULL OUTER
A und B und Vereinigung
SELECT a.column1, a.column2 FROM a
INTERSECT
SELECT b.column1, b.column2 FROM b
Returnt alle Zeilen die in A und B exisitieren
SELECT a.column1, a.column2 FROM a
MINUS
SELECT b.column1, b.column2 FROM b
Return alle Zeilen, die in A vorkommen aber nicht in B
Einsetzen von Werten in Tabellen
INSERT INTO table (column, column ...) VALUES (value, value, ...)
INSERT INTO auto_preisliste (modell, preis) VLAUES ('Zafira', '20000$' )
Updaten von Werten in einer Tabelle
UPDATE table SET (column = value, column = value...)
Data Control Language (DCL)
USER
Anlegen
CREATE USER name IDENTIFY BY password
Rechtevergabe
GRANT role TO user
GRANT function ON object TO user/ role
Data Defintion Language (DDL)
Erstellen/ Löschen von Tabellen
ALTER TABLE table
ADD column column_definition
ADD (column column_definition, column column_definition, ...)
Hinzufügen von Spalten bei bestehender Tabelle
ALTER TABLE supplier ADD supplier_name CHAR(50)
MODIFY column column_definition
Bearbeiten bestehender Spalten
ALTER TABLE supplier MODIFY supplier_name CHAR(100)
MODIFY (column column_definition, column column_definition)
Ändern von Tabellen
Bestehende Daten dürfen nich ungültig werden
Bestehende Daten dürfen nicht verstümmelt werden
Bestehende Beziehungen dürfen nicht verletzt werden
CREATE TABLE table (column column_definition, ...)
CREATE TABEL tabel AS [select statment]
DROP TABLE table
Constraints
Hinzufügen von Constraints
ALTER TABLE table ADD CONSTRAINT constraint
Löschen von Constraints
ALTER TABEL table DROP CONSTRAINT constraint
Primary Key
CONSTRAINT constraint PRIMARY KEY (column, ...)
Foreign Key
CONSTRAINT constraint FOREIGN KEY (column,...) REFERENCES other_table (column...)
CONSTRAINT constraint CHECK (column IN (1,2,3)
Indexierung
Zugriffs Optimierung: Ablegen von Referenzen von Spalten
Balancierte Binärbäume
Erstellen
CREATE INDEX index_idx ON table (column, column, ..)
Verändern
ALTER index_idx RENAME TO newindec_idx
Löschen
DROP INDEX index_idx
Transaktionen
PL/SQL
Fusion aus SQL und prozeduraler Programmiersprache
Erweiterung der DBMS Funktionalität
Komplexere Intergritätsbedingungen
Netztraffic Redutkion in Client/Server Systemen
Konzepte
Prozedur: Anweisungsausführendes Programm
Funktion: Progamm, welches Werte zurückliefert
Trigger: Programme welche durch Änderungen in der Datenbank ausgeführt werden
Package: Sammelobjekt für Prozeduren, Funktionen und Trigger (Wie Klassen)
Block Struktur
Syntax
Variablen
Deklaration
variable_name datatype [NOT NULL] [:= initial_value]
V_name VARCHAR2 := ‘Lukas’;
V_name VARCHAR2 DEFAULT ‘Lukas’;
':=' = DEFAULT
b_profitable := n_sales > n_costs;
Verankern mit Tabellen
variable_name table.column%TYPE
l_credit_limit customers.credit_limit%TYPE;
Exceptions
Divide by null
when zero_divide then dbms_output.put_line( SQLERRM);
Deklarieren
PRAGMA EXCEPTION
EXCEPTIONS aufrufen
RAISE exception;
Konstanten
Deklaration
constant_name CONSTANT datatype [NOT NULL] := expression
co_payment_term CONSTANT NUMBER := 45;
co_area CONSTANT REAL := (co_pi
co_radius*
2);
Funktionen
Bedingungen
If Statement
IF THEN
IF THEN ELSE
IF THEN ELSIF
Case Statement
Selector
Selector wird einmal evaluiert (wie switch)
Search
Mehrere Boolean Bedingung werden geprüft
Null Statement
NULL;
Does nothing
Goto Statement
Erlaubt das Springen zu Labeln im Code Block
<<lable>>
GOTO lable;
Es ist nicht möglich in Loops oder Conditions hinein zu springen. GOTO erlaubt nur das Springen auf der selben Ebene
Schleifen
Loop
Wiederholen der Schleife bis der Loop durch EXIT oder EXIT WHEN durchbrochen wird
For Loop
Schleife mit beschränkten Wiederholungen
Verwenden äußeren Variablen in einer Schleife über die Deklaration eines Labels
Durch IN REVERSE zählt die Schleife von oben nach unten
While Loop
CONTINUE; erlaubt es den aktuellen Durchlauf zu stoppen und den nächsten direkt zu starten
Wertezuweisung aus der Zeile einer Tabelle in Variablen
Procedures (Prozeduren)
IN: Eingangs Parameter OUT: Parameter der rerturnt wird IN OUT Parameter ist sowohl in als auch out
AS wenn Prozedur alleine Steht ohne in einem Block zu sein (standalone)
Standalone: EXECUTE procedure_name, In Beginn: procedure_name;
Löschen: DROP PROCEDURE procedure_name
Function (Funktion)
Trigger
BEFORE/AFTER wann trigger ausgeführt wird, INSEAT OF mit views
FOR EACH ROW für jede von der Änderung betroffene Zeile
Records
Datentyp welcher mehrere Variablen/ Spalten beinhalten kann
Deklaration
Tabellen basiert: Reihe aus Tabelle
record_name table_name%ROWTYPE;
Cursor basiert: Reihe aus Cursor
record_name cursor_name%ROWTYPE;
Selbst definiert: Eigene Spalten vergeben und deklarieren
Werte einer Variablen bekommen
record_name.field_name
2 Records lassen sich nicht direkt miteinander vergleichen. Stattdessen muss man die einzelnen Variablen vergleichen
Cursor
Implizit
Werden Standardmäßig mit DML Statements angelegt
Hat folgende abfragbate Attribute
%FOUND: true wenn eine oder mehr Reihen beeinflusst wurden
%NOTFOUND
%ISOPEN: fa
%ROWCOUNT: Anzahl der Reihen einer Abfrage
Explizit
Durch spezielle Angabe eines Select Statements
CURSOR cursor IS select_statement
OPEN cursor; Präpariert den Cursor zum empfangen der Abfrage
FETCH cursor INTO variable, variable; Erlaubt das schrieben von Abfragedaten in die Variablen
CLOSE cursor; Gibt Speicher wieder frei
Temporärer Arbeitsspeicher in welchem SQL Abfragen und ihre Ergebnisse abgelegt werden und manipuliert werden können
Impedance Mismatch
SQL Mengenorintiert != Programme: Statzorintiert (Zeile für Zeile)
Mit SELECT wird eine unbestimmte Anzahl an Datensätzen aus der Datenbank geholt um diese Bearbeiten zu können müssen ein Cursor erinnert werden
Datentypen
Scalar:
NUMBER
PLS_INTEGER
Neuer Datentyp, schneller als NUMBER, range -2,147,483,648 bis 2,147,483,647
BOOLEAN
CHARACTER
DATETIME
Composite
RECORD
Datentypen einer Reihe, kann mehrer Felder beinhalten
Datenbank
Tatsächliche Implementierung einer Datenbank
Relationale Datenbanken
Datenbanken sind in Tabellen (Relationen) organisiert
Persistente Objekte: Tabellen
Temporäre Objekte: Views, Snapshots
Ist eine Menge von (Datenbank) Objekten welche durch DBMS verwaltet wird
Schema: Ist eine Menge von Datenbank Objekten , die Zusammenhängend betrachtet wird
Alle die durch einen Nutzer erstellen Objekte
Datenbank Management Systeme DBMS
Software Schnittstelle zwischen Datenbank und und Anwendung
Grundprinzip: muss effizient und zuverlässig sein
Effiziens (geringer Aufwand hohe Wirkung)
Nutzer
Einfache Abfrage/ Manipulation von Daten
Betreiber
Effizient Ressourcen (Speicher, Prozessor) Nutzung
Paralleler Zugriff auf Daten (mehrere Nutzer zeitgleich)
Caching von Daten (Vorspeicher um Datenabfrage zu verkürzen)
Daten sollten unabhängig von Hardware/ Software organisiert sein -> Zukunftssicher
RDBMS Nutzen eigene Datentypen, schränkt ein deshalb abbilden des SQL Standards auf eigene Typen: Integer -> Number
Zuverlässigkeit
Nach Zugriff mehrerer Nutzer oder nach Hardwarecrash muss Datensatz immer noch Fehlerhaft sein
Daten müssen immer in einem Exakt definierten Staus sein
Lösung: Transaktionen (virtueller Singleuser Betrieb)
Vollständige oder gar keine Ausführung von Befehlen
Transaktionale Sicherheit durch
Begin: Starten einer Änderung (Transaktion)
2 more items...
End: Überführen der Datenbank in den neuen veränderten Zustand
1 more item...
UnDo: Verwerfung einer noch offenen Transaktion
1 more item...
Virtueller Singeluser Betrieb: Parallelitätssteuerung zwischen mehreren Nutzern
Ziel
Keine verlorengegangenen Änderungen (Lost Update)
Kein Zugriff auf nicht commitete Daten (Dirty Read)
Funktionale Sperr-Ebene
Temporärste Zugriffsverbot auf Daten
Lese-Sperre
Exklusiv-Sperre
1 more item...
Schreib-Sperre
Physische Sperr-Ebene
Page-Level-Lock
Durch Schreib/Lesesystem des DBMS Sperre ereilen
Row-Level-Lock
Zeile gesperrt
Table-Level-Lock
Tabelle gesperrt
Bei sehr langlaufenden logical units of work
Dienstleistungen eines DBMS definiert nach Codd
Speichern, Abfrage, Manipulation von Daten
Zugängliche Übersicht über gespeicherte Daten (Katalog)
Unterstützung mehrerer Nutzer
Anforderungen
Sichtbarkeit von Daten: verschiedene Berechtigungen
Änderbarkeit von Daten: verschiedene Berechtigungen
Einführen von Rollen mit privilegien
Zugang über Netzwerke
Maßnahmen zum Wahren der Datenintegrität
Datenschutz: Nur berechtigte Nutzer haben zugriff auf Daten
Unberechtigter Zugriff: geregelt durch
Objektprivilegien
Unberechtigte Nutzung: geregelt durch
Systemeprivilegien
Verstöße/ Angriffe: absichtlicher/ unabsichtlicher Zugriff auf nicht freigegeben Dienste/Daten
SQL Statements: Kommunikation zwischen Anwendung DBMS
DBMS-Instanz
SGA: Cache/Pufferspeicher der Datenbank
Hintergundprozesse:
DBWR: Schreib/Lesezugriff
LGWR: Loggin aller Veränderungen
PMON: Garbage Collector , räumt den Nutzern hinterher, macht Ressourcen frei
SMON: Überwacht Beständigkeit der Daten und Logs
ARCH: Archivierung der Logs in Sekundär Speicher
Logging ist Voraussetzung für Wiederherstellbarkeit und Konsistenz
Round Robin Prinzip: Feste Speichereinheiten werden mit Logs gefüllt und ausgetauscht sobald voll
Daten
Metadaten
Beschreiben den Zustand der DB oder des DBMS
Sind in Tabellen abgelegt
System Katalog: Status & Konfiguration des DBMS
System Catalog
Daten Katalog: Defintion & Darstleungsregeln von Daten
Data Dictonary
"Daten über Daten"
Ändern von Constraints
ALTER TABLE table MODIFY CONSTRAINT constraint
Deklaration von Variablen,Speicherzuweisung an
Cursor
Funktionsbereich
Fehlerbehandlung