DBM Flashcards
Entwicklung relationale Datenmodell:
- Edgar F. Codd 1970,
- Datensicht als zweidimensionale Tabelle
- Basierend auf der mathematischen Theorie der Relationen und Prädikatenlogik 1. Ordnung
- Anwendung von systematischen Methoden
Mathematische Grundlage relationale Datenmodell (1):
Gegeben sind nicht notwendigerweise disjunkte Mengen (Domänen)
Mathematische Grundlage relationale Datenmodell (2):
R wird als Relation auf diesen Mengen bezeichnet, wenn R eine Menge von geordneten n-Tupeln ist
Mathematische Grundlage relationale Datenmodell (3):
Di wird als Wertebereich von R bezeichnet
Mathematische Grundlage relationale Datenmodell (4):
n wird als Grad von R bezeichnet (Grad: Anzahl der Attribute (n))
Mathematische Grundlage relationale Datenmodell (5):
- Darstellung der Relation erfolgt in Form von Spalten und Zeilen (Tabelle)
- Spalten werden als Attribute bezeichnet
- Zeilen bilden die n-Tupel
relationale Datenmodell (1):
- Relationenschema R(A1, A2, …, An):
- Relationenname R und Attributliste
relationale Datenmodell (2):
relationales Schema beschreibt Relation
relationale Datenmodell (3):
Relation r(R) eines Relationenschemas R(A1, A2, …, An)
relationale Datenmodell (4):
Menge von n-Tupeln: r = {t1, t2, …, tm}
relationale Datenmodell (5):
Kardinalität: Anzahl der Tupel (m)
relationale Datenmodell (6):
n-Tupel t = (v1, v2, …, vn): geordnete Liste von n Werten
Definition - relationale Datenmodell (1):
Jedes Attribut besitzt einen eindeutigen Namen
Definition - relationale Datenmodell (2):
Jedes Attribut wird durch seinen Namen referenziert
Definition - relationale Datenmodell (3):
Attribute unterliegen keiner Ordnung
Definition - relationale Datenmodell (4):
Attribute in einer Tabelle müssen atomar sein
Definition - relationale Datenmodell (5):
Jede Zeile in einer Tabelle ist eindeutig
Definition - relationale Datenmodell (6):
Die Kardinalität ist die Anzahl der Zeilen zu einem Zeitpunkt
Eindeutigkeit ?
je Zeile ein Schlüssel
Schlüsselarten ?
- Primärschlüssel
- Fremdschlüssel
- Zusammengesetzter Primärschlüssel
- Zusammengesetzter Fremdschlüssel
- Schlüsselkandidat
IBM - SEQUEL ?
Structured English Query Language
1971 (Prototyp System R)
SQL - Sprachtyp?
deklarative Sprache
SQL implementierungsmethoden
- Direktes SQL - SQL-Anweisungen interaktiv
- Modulsprache - SQL-Anweisungen in Programmen in getrennter Form
- Call Level Interface (CLI) SQL-Anweisungen eingebettet durch SQL-Implementierung mittels einer Bibliothek für Programmiersprachen
- Embedded SQL - SQL-Anweisungen innerhalb der Programmiersprache
Sprachbestandteile ?
- Data Definition Language (DDL): Befehle zur Definition des Datenbankschemata -
- Data Manipulation Language (DML): Befehle zur Datenmanipulation = Projektion und Abfrage sowie Ändern, Einfügen, Löschen -
- Data Control Language (DCL): Befehle für die Rechteverwaltung
SQL92 (Bestandteile)
- Erweiterte Datentypen
- Auf-/Abbau von Client-/Server-Verbindung
- Dynamisches SQL
- Cursor (scrollable)
- Outer-Joins
- Intersection-, Minus-Operator
Datentypen von SQL92 (numerisch)
- integer (integer4)
- integer (integer2)
- numeric (p, q) Dezimalzahl mit genau p Stellen, davon q hinter dem Dezimalzeichen
- decimal (p, q) Dezimalzahl mit mindestens p Stellen, davon q hinter dem Dezimalzeichen
- real
- float (p)
- double
Datentypen von SQL92 (Zeichen)
- char{acter} (n): Zeichenkette mit genau n Zeichen - Speicherbedarf: n Byte
- char{acter} varying (n)/varchar (n) : Zeichenkette mit höchstens n Zeichen Speicherbedarf: Länge der Zeichenkette
Datentypen von SQL92 (Erweitert)
- bit (n)
- bit varying (n)
- date
- time
- timestamp
- datetime
- blob
- clob
- stream
Operatoren (Zahlen)
+, -, *, /, %
Operatoren (Datum-/Zeitangaben)
+, -
Operatoren (Boolesche Verknüpfung)
and, or, not
Operatoren (Vergleiche)
=, >, <, >=, <=, <>
SQL92 Abfrage?
SELECT < expression >
FROM < table-name >
[WHERE < search-condition >]
[GROUP BY … [HAVING …]
[ORDER BY …]
SQL 92 Bestandteile einer Abfrage
- Projektion
- Source/Quelle
- Restriktion
- Groupierung / Having-Restriktion
- Sortierung
Mit welcher Erweiterung wird in der Projektion eine Mehrfachnennung unterbunden?
DISTINCT
Mit welcher Erweiterung wird in der Projektion ein Attribut-Name geändert?
AS ‘neuerAttributname’
Wie wird die Ergebnismenge Aufsteigend sortiert
ORDER BY <attributname> ASC</attributname>
Wie wird die Ergebnismenge Absteigend sortiert
ORDER BY <attributname> DESC</attributname>
Wie wird ein Intervall abgefragt? (Welche Teile wiegen zwischen 13 und 20 kg)
… WHERE BETWEEN 13 AND 20
SQL92 – Patternmatching
Beispiel für Mindestens zwei Zeichen … <attributname> LIKE 'C_%'</attributname>
- _ als Platzhalter für genau ein Zeichen
- % als Platzhalter für beliebige Anzahl Zeichen
Verarbeitungsregel für SQL:
- Kreuzprodukt über alle Tabellen, die FROM benennt
- Restriktion: Zeilen bestimmen, welche die WHERE-Bedingung erfüllen
- Gruppenbildung
- Gruppen-Restriktion
- Mengenbildung
- Projektion: Spalten gemäß SELECT-Klausel auswählen
- Sortieren
Unterabfragen liefern …
- genau eine Ergebniszeile: Ergebnis der Unterabfrage wird mit Attributen der Hauptabfrage verglichen
- mehrere Ergebniszeilen: WHERE-Bedingung arbeitet mit Mengenoperationen
- IN: prüft ob ein Wert in der Unterabfrage enthalten ist
- EXISTS: prüft ob wenigstens eine Zeile eine Bedingung erfüllt
- < Θ > ANY, < Θ > SOME: prüfen, ob irgendeine Zeile den Operator erfüllt
- < Θ > ALL: prüft, ob alle Zeilen den Operator erfüllen
- Θ-Operator: =, <, <=, >, >=, <>”
SQL92: Skalare Funktion - Mathematische Funktionen?
- ABS, ACOS, ASIN, ATAN, ATN2, CEILING, COS, COT, EXP, FLOOR, LOG,
- LOG10, PI, POWER, RADIANS, ROUND, SIGN, SIN, SQRT, SQUARE, TAN
SQL92: Skalare Funktion - Zeichenketten Funktionen?
CHARINDEX/INSTR, LEFT, LEN, LOWER, LTRIM, RIGHT, RTRIM, SUBSTRING,
UPPER
SQL92: Skalare Funktion - Zeit- und Datumsfunktionen?
CURRENT DATE, CURRENT TIME, CURRENT_TIMESTAMP, DAY, MONTH,
SYSDATE, TRUNC, TO_DATE, YEAR
SQL92: Skalare Funktion - Aggregatfunktion?
AVG, MAX, MIN, SUM, STDEV, COUNT
Wie werden Ergebnis zusammen gefasst (Gruppierungen)?
Mit GROUP BY , dabei drauf Achten das nur Attribute in der Projektion enthalten sind, welche auch groupiert wurden
Restriktion einer Groupierung ?
HAVING - Klausel (...GROUP BY sno HAVING count(qty) \> 1;)
Was macht JOIN?
JOIN verbindet zwei Tabellen unter Angabe der Schlüsselbeziehung (PK-FK) (SELECT s.sname, sp.pno
FROM supp_parts sp
JOIN suppliers s
ON s.sno = sp.sno
WHERE sp.pno = ‘P1’;)
Alternative zu JOIN
In der Quelle, alle benötigen Tabellen angeben und das Kreuzprodukt durch die Restriktion einschränken
Verarbeitungsregel für SQL-JOIN:
- Schritt Kreuzprodukt aller Tabellen
- Schritt Zusammengehörige Zeilen gemäß ON-Bedingung bestimmen
- Schritt Restriktion gemäß WHERE
- Schritt Projektion, um die gewünschten Spalten zu bestimmen
Regeln für JOIN
- Spaltentypen müssen kompatibel sein,
- Empfehlung: Geschwindigkeitsvorteil bei Identität der Spaltentypen
- Spaltennamen müssen nicht identisch sein
- JOIN-Operator: =, >, <, >=, <=
- Restriktionsbedingungen zulässig
- Tabellenanzahl für Join vom DBMS abhängig
- JOIN-Operator = wird als Equi-Join bezeichnet
NULL - Werte bei JOIN
- JOIN-Bedingung ON kann eine Eingabe von NULL haben
- INNER JOIN verwirft Zeilen mit Join-Attributen, die NULL sind
- OUTER JOIN erlaubt dies
- LEFT OUTER JOIN: linke Tabelle NULL
- RIGHT OUTER JOIN: rechte Tabelle NULL
- FULL OUTER JOIN: linke oder rechte Tabelle NULL”
Welche Mengenoperatoren gibt es und was machen Sie?
- UNION: Vereinigung der Ergebniszeilen
- UNION ALL: Vereinigung der Ergebniszeilen inkl. Dupletten
- INTERSECT: Schnittmenge der Ergebniszeilen
- MINUS: Restmenge der Ergebniszeilen; erstes SELECT \ zweiter SELECT
Nenne die UNION-Regeln ?
- Beliebig viele Zeilenmengen können vereinigt werden
- Spaltennamen der Zeilenmengen können verschieden sein
- Spaltentypen müssen kompatibel sein
- Spaltentyp der Ergebnismenge wird von erster Zeilenmenge bestimmt
DML - Syntax zum Einfügen von Zeilen:
INSERT INTO <table_name><br></br> [(col1, col2, …, colN)]<br></br> VALUES (val1, val2, …, valN)</table_name>
Was muss bei einem INSERT beachtet werden?
- Anzahl an col und der angegebenen Werte val muss übereinstimmen
- Reihenfolge bestimmt die Zuordnung
- nicht angegebene Attribute (erste Klammer) werden
- mit DEFAULT-Wert belegt,
- mit NULL belegt.
- in der ersten Klammer fehlende Attribute müssen mit DEFAULT-Wert oder NULL-Wert definiert sein
DML -Syntax – INSERT mittels Abfrage
INSERT INTO parts
(pno, pname, color, weight, city)
SELECT ‘TRN_’ + pno, pname, color, weight, city
FROM parts;
DML - Syntax - Löschen von Zeilen
DELETE FROM <table_name><br></br> [WHERE <search_condition>]</search_condition></table_name>
DML - Lösch Effekte?
- DELETE löscht Daten unter Beachtung der Foreign-Key-Constraints
- Datenbankschema sollte bekannt sein, um ““Effekte”” durch das Löschen beurteilen zu können
- zum Löschen Transaktionen nutzen
DML - Syntax - Löschen von Tabellen
DROP TABLE [CASCADE]
löschen der Tabelle inkl. aller Daten
DML- DROP TABLE - Was bewirkt CASCADE?
CASCADE entfernt abhängige Datensätze in anderen Tabellen
DML - Syntax - Update von Zeilen?
UPDATE
SET col = val [,col2=val2, col3=val3, …]
[WHERE]
Was sind Views?
- virtuelle Tabellen, Attribute und deren Datentypen stammen von den Basistabellen
- Berechnung der “Tupel” zur Laufzeit (Abfrage)
- Anpassung an spezielle Benutzerbedürfnisse, Datenschutz usw.
- zum Verbergen von “komplexen” Strukturen (Bsp.: Primär-Fremdschlüssel-Beziehungen (Joins))
Vorteile von Views?
- Adaption an verschiedene Benutzerklassen
- nur relevante Daten werden angezeigt
- Spalten können benutzungsfreundlich präsentiert werden
- Schemaänderungen sind möglich
Syntax von Views?
CREATE VIEW <view_name><br></br> [(<column_name> [, <column_name> …] ) ]<br></br> AS <query_expression><br></br> [WITH CHECK OPTION] </query_expression></column_name></column_name></view_name>
Beispiel:
CREATE VIEW red_parts AS
SELECT \* FROM parts WHERE color = 'red' "
Unter welchen Vorrausetzungen sind Updates auf Views möglich?
- nur eine Basisrelation
- Schlüssel muss (komplett) sichtbar bleiben
- keine Verwendung von Aggregaten, Gruppierungen, Duplikateliminierung (DISTINCT)
Was ist DDL?
- DDL = SQL-Data Definition Language
- Anweisungen, um Datenstrukturen zu definieren
- Definition der
- Datenbankstruktur (Tabellenerstellung, usw.)
- Speicherungsstrukturen (Heap, usw.)
- Zugriffshilfsstrukturen(Indizes, usw.)
Wie erstellt man eine Tabelle?
CREATE TABLE <table-name><br></br> (Spaltendefinition1, …, SpaltendefinitionN<br></br> [, Integritätsregel1, …, IntegritätsregelM] )</table-name>
SpaltendefinitionI ::= Spaltenname Typeangabe [DEFAULT Klausel] [Spaltenintegritätsregel]
Beispiel:
CREATE TABLE example
(
id INT NOT NULL,
value FLOAT NOT NULL
);
Regeln zum Erstellen einer Tabelle?
- Beliebig viele Zeilenmengen können vereinigt werden
- Tabellenname muss innerhalb eines Schemas eindeutig sein
- Spaltenname muss innerhalb einer Tabelle eindeutig sein
- Spaltenintegritätsregel, z.B.: NOT NULL
Integritätsbedingungen ?
Operationale Integrität
- Gewährleisten der Funktion nach Hardwarefehlern, Vandalismus
- Sicherung gegen Probleme, die durch Mehrbenutzerbetrieb entstehen
Semantische Integrität
- Konsistenz zur Laufzeit gemäß den definierten Bedingungen:
- Entitäts-Integrität
- Eine Zeile ist in der Tabelle eindeutig (Bsp.: CREATE UNIQUE INDEX, UNIQUE,PRIMARY KEY)
- Wertebereichs-Integrität
- Ein Wert wird auf eine gültige Domäne beschränkt (Bsp.: CHECK, DEFAULT, NOT NULL)
- Referentielle-Integrität
- Fremdschlüsselbeziehungen werden überwacht (Bsp.: FOREIGN KEY)
- Benutzerdefinierte-Integrität
- Modellierte Bedingungen (Bsp.: Trigger)”
Was ist ein Primärschlüssel?
Attribut einer Tabelle, welches einen Satz eindeutig charakterisiert (Entitäts-Integrität)
Was ist ein zusammengesetzter Primärschlüssel?
Ein Attribut ist nicht eindeutig Primärschlüssel - mittels mehrerer Attribute bildbar
Beispiel:
ALTER TABLE Supp_Parts
ADD CONSTRAINT PK_Supp_Parts
PRIMARY KEY (sno,pno);
Wie können Nicht - PrimärschlüsselAttribute als Eindeutige Attribute erstellt werden?
- Nicht-Primärschlüssel-Attribute können mit UNIQUE auf Eindeutigkeit geprüft werden
- UNIQUE-Attribute bezeichnen wir als Schlüsselkandidaten
Bsp.: Studierendentabelle mit id, name. (name soll eindeutig sein)
CREATE TABLE p ( id INT NOT NULL, name VARCHAR(32), PRIMARY KEY (id), UNIQUE (name));
INSERT INTO p VALUES (1, ‘Ulf’);
INSERT INTO p VALUES (2, ‘Ute’);
INSERT INTO p VALUES (3, ‘Ulf’);”
Wie können “erlaubte” Attribute-Werte erstellt werden?
- Bedingung für erlaubte Attributwerte CHECK <bedingung></bedingung>
- <bedingung> wird formuliert analog zur WHERE-Klausel</bedingung>
Bsp.:
Studierenden-Tabelle mit Name, Anrede; Anrede nur ““Frau”” oder ““Herr””
CREATE TABLE p ( id INT NOT NULL,name VARCHAR(32), anr char(4), PRIMARY KEY (id), CHECK (anr IN (‘Frau’, ‘Herr’)));
Warum und Wie kann ein Standard - Attribut-Wert erstellt werden?
- Standardwert für ein Attribut, wenn beim INSERT nicht spezifiziert
Bsp.:
Studierenden-Tabelle mit Name; wenn Name nicht spezifiziert, dann den angemeldeten Datenbankbenutzer:
CREATE TABLE p (
id INT NOT NULL, name VARCHAR(32) DEFAULT current_user, PRIMARY KEY (id),
);
INSERT INTO p (id) VALUES (1234);”
Referentielle Integrität ?
Referentielle Integrität basiert auf sog. Fremdschlüsselbeziehungen
Referentielle Integrität: Bedeutung der Schlüsselwörter ON DELETE, ON UPDATE?
- NO ACTION
- DELETE oder UPDATE der Herkunftstabelle wird verweigert, wenn es einen abhängigen
Satz gibt
- DELETE oder UPDATE der Herkunftstabelle wird verweigert, wenn es einen abhängigen
- CASCADE
- DELETE oder UPDATE der Herkunftstabelle wird an die abhängige Tabelle
durchgereicht
- DELETE oder UPDATE der Herkunftstabelle wird an die abhängige Tabelle
- SET NULL
- Betroffene Zeilen der abhängigen Tabelle werden auf NULL gesetzt
- SET DEFAULT
- Betroffene Zeilen der abhängigen Tabelle werden auf den DEFAULT-Wert der
betroffenen Attribute gesetzt”
- Betroffene Zeilen der abhängigen Tabelle werden auf den DEFAULT-Wert der
Was bedeutet ACID?
- Steht für Datenintegretät bei DBS
- Atomarität (Atomicity)
- Konsistenz (Consistency)
- Isolation
- Dauerhaftigkeit (Durability)
SQL-Injektion
Angreifer schleusst Schadhaften SQL-Code in eine Abfrage ein.
Kann verhindert werden indem SQL-Code nicht einfach zusammen gebaut wird, sondern Variablen, Funktionen / Methoden verwendet werden.
Grundbegriffe – Datenmanagement
Konkrete Aufgabenbereiche
- Spezifikation und Realisierung des Datenmodells (Datenanalyse)
- Inproduktionsnahme des Datenmodells
- Organisation der Datenbeschaffung
- Wartung und Pflege des DBMS-System
Grundbegriffe – Informationssystem
Werkzeug zur Erfassung und Kommunikation von Informationen zum
Zwecke der Erfüllung der Anforderungen seines Benutzers, der
(Geschäfts-) Aktivitäten ihres Unternehmens und zur Erreichung der
Unternehmensziele.
Ein Informationssystems umfasst Daten,
Datenbanksoftware, Rechner-Hardware, Personen, welche die Daten
benutzen und verwalten, relevante Anwendungssoftware sowie
Programmierer, die diese entwickeln.
Grundbegriffe – Bedeutung von Informationen
Für die Wirtschaft
Informationen sind die Basis für einen effektiven und effizienten Einsatz von
Produktionsfaktoren.
- Kontrolle
- Durchführung
- Planung
- Entscheidung
- Steuerung
Grundbegriffe – Bedeutung von Informationen
Information
Informationen bestimmen das Überleben der Weltwirtschaft
- strategische Bedeutung
- zur richtigen Zeit, die richtige Informationen, am richtigen Ort
- Entscheidungsunterstützung
- Datenbanken,
- Data Warehouse,
- Online Analytical Processing (OLAP),
- Data Mining,
- Management Information System (MIS),
- Knowledge Management,
- Customer Relationship Management (CRM)
Grundbegriffe – Wissensmanagement
Bereiche
- Allgemeinwissen
- Fach Know-How (Was benötige ich und Wie wende ich es an)
- Soft-Skills (Wann wende ich es an)
Grundbegriffe – Wissensmanagement
Inhalt
- Aufbau und Sicherung von Wissen
- Fakten (Wissen) zur Verfügung stellen
- Optimierung der Wissensverteilung
Customer Relationship Management
- Warum
- Globalisierung der Märkte
- Steigende Transparenz und Zunahme von Informationsquellen
- Kundenanforderung bzgl. der Produkte nehmen zu
- Inhalt
- Ausrichtung der Geschäftsprozesse und Dienstleistungen auf die Bedürfnisse der Kunden
- Identifikation der profitablen Kunden
- segmentspezifische Marketingstrategien zur Akquisition von neuen Kunden
Grundbegriffe – Prinzipien/Sichten
-
Zerlegung:
- Top-Down,
- Bottom-up
-
Sichten:
- funktionsorientiert - Funktionen und Unterfunktionen / keine explizite Programm übergreifende Datenmodellierung
- datenorientiert - ERM, Data Dictionary
- objektorientiert - Klassen, Objekte, Attribute, Methoden, Kapselung, Vererbung/gleichzeitige Modellierung von Daten und Funktionen
- prozessorientiert - Ereignis und Prozess
Grundbegriffe – Requirement Engineering
Anforderungstechnik. Das systematische, disziplinierte und quantitativ
erfassbare Vorgehen beim Spezifizieren, d. h. Erfassen, Beschreiben und
Prüfen von Anforderungen an Software. Verstehen und Beschreiben, was
der Kunde wünscht oder braucht.
Grundbegriffe – Ebenen der Modellierung
Systemanalyse
Systematische Vorgehensweise zur Anforderungsermittlung
(Requirement Engineering). Festlegen der quantitativen und qualitativen Eigenschaften des
zu entwickelnden Softwareproduktes (Sollkonzept)
Ebenen:
- Design
- Realisierung
- Inbetriebnahme/Wartung
Meilensteincheck:
- Projektvorbereitung
- Konzeption
- Spezifikation
- Realisierung
Grundbegriffe – (un-) strukturiert
struckturiert
sequenzielle Abarbeitung der Dateien (z.B. Magnetbänder, -kassetten)
- Sprachen zur Verwaltung großer Datenbestände: COBOL, FORTRAN, PASCAL
- Applikationen speichern “eigene Daten” isoliert in “eigenen Files”
- Datenspeicherung und Zugriff auf Daten nur durch spezielle Anwendungen
Datenmodellierung
Gegenstand der Datenmodellierung ist es, alle relevanten Informationen
eines Systems, z. B. eines betrieblichen Funktionsbereiches (Vertrieb), zu
beschreiben. Man benötigt dazu eine Syntax, die den Sachverhalt
möglichst einfach, mit wenigen Syntaxelementen aber genügend formal, um
exakt sein zu können, zu beschreiben.
Datenmodellierung
Einsatzgebiete
Entwicklung von Anwendungssystemen
- Individualsoftware im technische oder kommerziellen Bereich
Einführung von Informationssystemen
- Standardsoftware (SAP, ALCIB, ALCIM)
Organisationsprojekte
- z.B. Business Process Redesign
Datenmodellierung: Datenorientiertes Vorgehen
“Daten leben ewig!”
Hardware besteht einige Jahre
Software übersteht die Hardware
Daten überleben mehrere Softwarezyklen
Datenmodelle sind schnell umsetzbar, Vermeidung von Redundanz
Betriebswirtschaftliche Basis für Integration und Standardisierung
Die Datenorganisation bestimmt wesentlich
die Systemleistung und
die Datensicher und den Datenschutz.