DB
Datenbanken
Datenbanken
-
- 1 / 152
-
Lernkarten
Was besagt die semantische Integrität ?
Eine Menge von Relationen besitzt semantische Integrität ,wenn die Korrektheit von Nutzereingaben gewährleistet ist.
Ein Attributwert eines PK-Attributes enthält einen NULL-Wert , welche Integritätsbedingung ist verletzt?
Der FK einer Relation enthält den Wert "7" , dieser Wert kommt nicht im zugehörigen PK der Master-Entity vor ,
welche Integritätsbedingung ist verletzt?
Ein Nutzer kann in einem Attribut "Geschlecht" den Attributwert "Hallo" hinzufügen ,
welche Integritätsbedingung ist verletzt?
Wann ist eine Relation in erster NF ?
Wenn keine Mengenwertigen Attributwerte mehr vorhanden sind.
Beispiel : Eine Relation "Buch" enthält das Attribut "Autor" , dort sind bei einem Buch 2 Autoren eingetragen.
=> in 1.NF müsste hier ein neues Tupel eingeführt werden , dass nur jeweils einen Autor enthält .
Wann ist eine Relation in 2. NF ?
Wenn Sie in 1.NF ist und alle Nichtschlüsselattribute voll funktional abhängig vom PK sind.
=> die 2. NF beseitigt partielle funktionale Abhängigkeiten durch Auflösen einer Relation in mehrere , in denen
dann jedes Nichtschlüsselatrribut voll funktional abhängig vom PK ist.
!! Eine Relation mit nur einem PK Attribut ist automatisch auch in 2.NF , wenn sie in 1.NF ist ,
da es keine partiellen Abhängigkeiten geben kann !!
Eine Relation sei in 1.NF und habe folgende funktionale Abhängigkeiten :
Ang_NR --> Name , Ort , AbtNR , AbtName
Teile_NR --> Bezeichnung
PK : Ang_NR , Teile_NR
Welche Relationen entstehen bei der Überführung in 2. NF ?
Die aufgezeigten funktionalen Abhängigkeiten sind beide partiell (teilweise vom PK abhängig ) , daher
sind dies auch die entstehenden Tabellen .
Jedoch muss bei der Überführung in 2.NF die Verlustfreiheit gewährleistet sein , daher darf man auch die Tabelle mit der Zentralen Information ( Welcher Angestellte stellt welches Teil her ) nicht vergessen .
Daher entstehen folgende Tabellen :
1)Ang_NR(PK) , Name , Ort , AbtNR , AbtName
2)Teile_NR(PK) , Bezeichnung
3)Ang_NR(PK), Teile_NR(PK)
Wann ist die Zerlegung einer Relation ( bei NF-Bildung ) verlustfrei ? Wann abhägngkeitstreu ?
Verlustfrei : Wenn sich alle Tupel der Ursprünglichen Tabelle durch einen Join der abgeleiteten Tabellen wiederherstellen lassen .
Abhängigkeitstreu : Wenn jede funktionale Abhängigkeit in einer der resultierenden Tabellen enthalten bleibt.
Welche Aussagen sind wahr zur Überführung eines ER-modells in ein relationales Datenbankschema?
Thema : Übersetzen eines EERM in ein Relationales Datenbankschema ,
Was passiert bei sog. "virtueller Fragmentierung " ?
Das EERM umfasst Systeme von Super;- und Subtypen.
Bei der Übersetzung in ein relationales Datenbankschema werden zunächst alle Subtypen im Supertyp zusammengefasst. Tut man dies mithilfe von virtueller Fragmentierung ,
so wird der neuen Tabelle eine sog. "diskrimminierende Spalte" hinzugefügt, also ein Attribut, dass die Namen der Subtypen als Werte haben kann .
Beispiel :
EERM :
Supertyp :Person , Subtypen : Kunde , Angestellter
=> Neue Relation mit virtueller Fragmentierung :
Person + Spalte "Typ" , Typ kann dann "kunde" oder "Angestellter" als Attributwert haben .
Thema : Übersetzung eines EERM in ein relationales Datenbankschema ,
Was passiert bei "vertikaler Fragmentierung" ?
Vertikale Fragmentierung ist eine Technik zur Übersetzung eines Super;- Subtyp-Systems in ein relationales Datenbankschema.
Dabei wird das System möglichst wie im ERM auf neue Relationen aufgeteilt , die mittels FK's mit dem Supertyp verknüpft werden .
Beispiel :
Supertyp : Personen
Substypen : Angestellte , Kunden , Lieferanten
==> Übersetzte Relationen :
Personen (so wie im EERM )
Angestellte (mit FK aus Personen )
Kunden (mit FK aus Personen )
Lieferanten (mit FK aus Personen )
Thema : Übersetzung eines EERM in ein relationales Datenbankschema ,
Was passiert bei "horizontaler Fragmentierung" ?
Bei horizontaler Fragmentierung werden sie Subtypen wie bei vertikaler Fragmentierung als Relationen ins relationale Datenbankschema übernommen , allerdings wird der Supertyp komplett ausgelassen , daher auch keine FK Beziehung aufgebaut . Diese Technik hat den Nachteil , das man nicht mehr unmittelbar ablesen kann , ob es Tupel gibt, die in mehreren Subtypen auftauchen .
Wozu nutzt man "Views" in der Datenbankwelt?
Views stellen meist einen auf den Anwender zugeschnittenen Ausschnitt der Daten zur Verfügung .
So kann z.B aus einer Datenbank mit Kunden , Lieferanten , Lagern usw... eine View
"Rechnung" erzeugt werden ,die nur ausgewählte Informationen enthält .
z.B
Ware wurde geliefert an : Kunden.Kundenname
Lieferung stammt aus : Lager.Name , Lager.Ort , Lager.PLZ
Welche Aussagen zu SQL- Anweisungen und ihren entsprechungen in der relationalen Algebra sind wahr ?
Was versteht man unter logischer Optimierung ?
Bei der logischen Optimierung wird ein Ausdruck in der RA zu einem äquivalenten Ausdruck umgeformt ,der weniger Laufzeit benötigt . Dies ist nur möglich , weil die RA in der Regel mehrere Wege zum erhalten einer Ergebnismenge kennt .
Was versteht man unter physischer Optimierung ?
Bei der physischen Optimierung wird auf unterschiedliche Implementierungen der Relationalen Algebra zurückgegriffen. D.h aus mehreren Möglichkeiten , eine Anfrage in die RA zu übersetzen wird die performanteste herausgesucht . Diese Auswahl berücksichtigt Paramter wie :
-Größe und Auslastung des Hauptspeichers
-Statistiken über erfolgte Zugriffe
-Informationen über die Verteilung der Daten in den betroffenen Tabellen
Wofür stehen folgende Abkürzungen der Bestandteile von SQL :
DDL
DML
DQL
DAL
DDL = Data-Definition- Language (CREATE , ALTER , DROP )
DML = Data-Manipulation-Language (INSERT , UPDATE ,DELETE )
DQL = Data-Query- Language ( SELECT )
DAL = Data-Administration-Language (GRANT , REVOKE )
Welche Typkonstruktoren kennt SQL ?
MULTISET(ROW(BASISDATENTYP))
Das heißt im Gegensatz zur RA sind in SQL Duplikate grundsätzlich erlaubt
Welche dieser Datentypen kennt SQL ?
Worin besteht der Unterschied zwischen dem Datentyp varchar und char ?
Ein char der Länge 5 reserviert auch immer alle 5 zeichen indem Sie mit leerzeichen gefüllt werden.
Beim varchar wird nur der tatsächlich benötigte Speicherplatz reserviert .
Beispiel :
char (5) , Inhalt HEXE => " H E X E _"
varchar (5) , Inhalt HEXE => "H E X E"
Um beide Datentypen vergleichbar zu machen gibt es die Funktion RTRIM() , die die Leerzeichen entfernt
Nach ANSI Standard existieren 3 Integer Datentypen ,
Smallint
Integer
Bigint
Wie lautet deren Entsprechung in der Implementierung von Oracle?
Number
Wieviele Werte kann ein Boolean Datentyp unter Oracle SQL annehmen ?
3 , true , false , unknown/null
Stichwort : Dreiwertige Logik
Wann liefert der Between Operator TRUE ?
Wie kann man ihn negieren ?
Wenn ein Wert zwischen den beiden angegeben Grenzen liegt .
SELECT *
FROM tabelle1
WHERE gehalt
BETWEEN 3000 AND 5000 ;
Negation : mit NOT BETWEEN
Wann liefert der IN- Operator TRUE?
Wenn es eine Übereinstimmung mt einem der Werte aus der Argumentliste gibt .
SELECT *
FROM tabelle 1
WHERE gehalt
IN (3000, 5000, 6000)
Negation : NOT IN
Wann liefert der LIKE-Operator TRUE ?
Wenn es eine Übereinstimmung mit einem Zeichenmuster gibt. Wildcard Zeichen sind % und _ .
SELECT *
FROM tabelle1
WHERE name
LIKE Gandal_ ;
% steht für einen oder mehrere beliebige Zeichen ,
_ steht für genau ein beliebiges Zeichen
Nenne 3 Singlerow Funktionen .
Strings :
UPPER(String) => kann genutzt werden um groß und kleinschreibungsunterschiede bei vergleichen abzufangen
LOWER(String)
CONCAT(String1 , String2 , ...) => Hängt zwei Zeichenketten aneinander
SUBSTRING(String , Pos1, Pos2 )=> liefert einen Substring von Position 1 bis Position 2
Numbers :
NVL (Spalte, Wert) => ersetzt NULL-Werte einer Spalte durch den "Wert" Parameter
ROUND(Ausdruck , Genauigkeit) => Rundet einen Audruck auf die angegebene Genauigkeit
Wie kann man Typecasts unter SQL durchführen ?
Dafür existieren Typumwandlungsfunktionen wie :
TO_CHAR
TO_NUMERIC
TO_DATE
TO_VARCHAR
Beispiel :
SELECT TO_CHAR(gehalt)
FROM angestellte;
=> Liefert die Werte der Gehaltssspalte als Char-Datentyp
Was sind aggregate functions unter SQL ?
Welche Datenbankobjekte kann man mit dem CREATE Befehl anlegen ?
Welche Befehle kennt die DDL ?
Welche Arten von Integritätsbedingungen gibt es ?
Mit welchen Befehlen werden Integritätsbedingungen in SQL realisiert ?
NOT NULL => Spaltenwerte dürfen keine Nullwerte enthalten
CHECK => Legt eine selbstdefinierte Bedingung fest
PRIMARY KEY => im Sinne des ERM , obligatorisch und not null , keine Duplikate , für Schlüsselspalten wird automatisch ein INDEX agelegt
FOREIGN KEY => Fremdschlüssel , benötigen REFERENCES-Klausel
UNIQUE => Legt eine oder mehrere Schlüsselspalten neben dem PK fest, erlaubt keine Duplikate, aber NULL-Werte
für Schlüsselspalten wird automatisch ein INDEX agelegt
Ordne den 3 Integritätsarten ihre entsprechung in SQL zu .
Welche Aussagen bezüglich der Auswertung von Integritätsbedingungen sind wahr?
Für welche Schlüsselarten wird automatisch ein INDEX erzeugt, der den lesenden Zugriff beschleunigt?
Nenne ein Beispiel einer CREATE INDEX Anweisung
CREATE UNIQUE INDEX teile_index1 ON Teile (Teile_ID)
Unique unterdrückt doppelte Werte
Was ist der unterschied zwischen virtuellen und materialisierten Sichten (Views) ?
Man verwendet Sichten um Anwendern nur Ausschnitte der Daten zu zeigen (z.B bei einem Formular ) ,
ANSI-3-Ebenen Modell : Externe Ebene
Bei einer virtuellen Sicht wird im Data Dictionary nur die Anfrage zum erhalt der Daten gespeichert
Vorteil : Keine Datenredundanz
Nachteil : Bei jedem Zugriff neue Abfrage
Bei einer materialisierten Sicht wird das Ergebnis der Anfrage ebenfalls im DD gespeichert
Vorteil : Anfrage muss nicht bei jedem Zugriff neu gestellt werden
Nachteil : Bei Änderungen muss die View ebenfalls geändert werden , Datenredundanz
Wie sind virtuelle und materialisierte Views in SQL implementiert ?
virutelle View : CREATE VIEW sichtname AS SELECT....
materialisierte View : CREATE MATERIALIZED VIEW sichtname AS SELECT...
materialisierte Views bieten unter Oracle noch die möglichkeit anzugeben ,wann die Tabelleninformation aktualisiert werden soll.
Welche Aktualisierungszeitpunkte (für materialized views) bitet Oracle an ?
Wie sieht eine CREATE SEQUENCE Anweisung aus ?
Wann wird eine solche Anweisung in der Regel verwendet ?
Sequences erlauben das Erstellen fortlaufender Nummern ,
dies ist vorallem beim Erstellen künstlicher Primärschlüssel (surrogate Keys) sinnvoll.
Beispiel :
CREATE SEQUENCE name
INCREMENT BY 1
START WITH 0
MAXVALUE 100
MINVALUE 0
NOCYCLE
CACHE 5
ORDER ;
Erläuterung :
NOCYCLE entscheidet ob nach Verwendung von MIN / MAXvalue von vorn gzählt wird
CACHE bestimmt wieviele Schlüssel für schnelleren Zugriff im Hauptspeicher liegen können