Datenbanken - Zusammenfassung aller SQL Begriffe & Datenbank-Theoriefragen, entnommen bzw. PDF

Title Datenbanken - Zusammenfassung aller SQL Begriffe & Datenbank-Theoriefragen, entnommen bzw.
Course Datenbankensysteme
Institution Hochschule Niederrhein
Pages 16
File Size 1.1 MB
File Type PDF
Total Downloads 67
Total Views 185

Summary

Zusammenfassung aller SQL Begriffe & Datenbank-Theoriefragen, entnommen bzw. basierend auf dem Kurs von prof. Dr. Abts....


Description

Datenbanken & SQL: - http://datenbanken-verstehen.de/ - http://sql-und-xml.de/sql-tutorial/ - Bonuspunkte: 5 —> Projektarbeit - http://t1p.de/abts - Passwort: ss2018 Standard die die meisten Datenbanken unterstützen: SQL2 / SQL92 Datenbanktypen: NOSQL, RDBMS, ODBMS, In-memory-Database, Mobile&Embedded Databases  Softwareschicht zwischen Betriebssystem & Anwendungsprogramm -

Methodische Modellierung der für das Unternehmen relevanten Daten

— Datenredundanz: Daten werden mehrfach gespeichert Inkosistenz: für dasselbe Objekt liegen unterschiedliche (sich widersprechende) Daten in der Datenbank vor Insert-Anomalie: ein hinzufügen eines Datensatzes ist abhängig von einem anderen (z.B. Anlegen eines Kundens nur mit Auftrag) Delete-Anomalie: Löschen eines Datensatzes sorgt für Fehler, in anderen, bzw. Ist abhängig Update-Anomalie: ändern eines Datensatzes erfolgt nur in einer Tabelle, andere Datensätze werden Fehlerhaft & inkonsistent  Lösung ist Primär- & Sekundärschlüssel — Logische Datenabhängigkeit: Daten müssen selben Dateitypen besitzen Physische Abhängigkeit: Datensätze werden anhand ihrer Position/Zeichenanzahl seperiert — Kapitel 2: Datenmodellierung Phasen der Datenbankentwicklung: 1. Informationsanalyse (Entwurfsphase) 2. Entity-Relationship-Modell (Entwurfsphase) 3. Relationenmodell (Entwurfsphase) 4. Implementierung der Datenbank (Implementierungsphase) Semantische Datenmodelle: Beschränkung auf die Beschreibung der fachlichen Anforderungen an die Daten  unabhängig von der späteren Wahl eines Datenbanksystems Andere Datenmodelle: auf bestimmte Datenbanksystemtypen zugeschnitten, beschreiben erlaubte Datentypen & Operationen Hierarchisches Datenbankmodell: hierarchische Baumstruktur, jeder Record hat genau einen Vorgänger —> nur 1:1 & 1:n Beziehungen  Baum Netzwerkdatenbankmodell: keine strenge Hierachie, Record kann mehrere Vorgänger haben & m:nBeziehungen abbilden  Graph

Entity-Relationship-Modell: Entitätstypen, Beziehungstypen (Kardinalitäten: m:n, 1:n, 1:1), Attribute, optional: Markierung des Primär- & Fremdschlüssels  Ergänzend (Min,Max)-Notation (Tipp: verkehrt lesen, siehe Folie 21) - Notationsformen beachten: o Konditionale Notation o UML-Notation o Krähenfuß-Notation

Viele-zuviele-Beziehung: sollten kritisch betrachtet werden, sorgt für mangelnde Exaktheit

Robustheit: Struktur sollte robust sein, also so gestalten, dass die zu erwartenden Modifikationen die Anpassung einer möglichst geringen Zahl von Typen erfordert Kapitel 3: Das Relationenmodell

Relation: zweidimensionale Tabelle mit einer festen Anzahl von Spalten & einer beliebigen Anzahl von Zeilen Eigenschaften einer Tabelle: - Name - Feste Anzahl von Spalten, beliebige Anzahl von Zeilen - Im Kopf jeder Spalte, steht der Spaltenname - Jede Zeile der Tabelle entspricht einem Datensatz - Reihenfolge von Zeilen & Spalten spielt keine Rolle

abteilung(abtnr, abtname, kostenstelle)

Primärschlüssel: jede Zeile wird durch den Spaltenwert eindeutig identifiziert, es ist nur ein Primärschlüssel möglich  Anzahl der Spalten des Primärschlüssels ist minimal Fremdschlüssel: Beziehungen zwischen Tabellen werden durch übereinstimmende Spaltenwerte hergestellt  bei einer 1:n Beziehung zwischen Tabelle A & B wird der Primärschlüssel von A als Spalte in Tabelle B mitaufgenommen abteilung(abtnr, abtname, kostenstelle) mitarbeiter(persnr, abtnr, nachname, vorname, …)

1:1 Beziehung:

1:n Beziehung:

n:m Beziehung:

Kapitel 4: Normalisierung Funktionale Abhängigkeit: B ist funktional abhängig, wenn zu jeder konkreten Belegung der Attribute aus A nur maximal eine konkrete Belegung der Attribute aus B geben kann (Schreibweise: A B)

Volle funktionale Abhängigkeit: B ist voll funktional abhängig von A, wenn AB gilt & für jede echte Teilmenge A‘ von A nicht A‘B gilt

Gilt AB & hat A nur ein Element, so ist B voll funktional abhängig von A Schlüsselkandidat: Sei X die Menge aller Attribute einer Relation R. Eine Teilmenge A von X ist ein Schlüsselkandidat für R, wenn X voll funktional abhängig von A ist. Änderungsanomalie: Wird ein Spaltenwert geändert, z.B. die Artikelbezeichnung, so müssen in der Regel mehrere Zeilen geändert werden. Löschanomalie: Wird eine Zeile gelöscht, z.B. die erste Zeile in der letzten Tabelle, so geht die Information über einen Kunden (hier "Meier") verloren. Einfügeanomalie: Eine neue Zeile kann nur eingefügt werden, wenn der Wert des kompletten Schlüssels bekannt ist. Um einen neuen Kunden aufzunehmen, muss also mindestens eine Bestellung von ihm vorliegen, d.h. knr, bdat und anr müssen entsprechende Werte enthalten

Normalisierung: 1. Normalform: Atomarität (nur eine Information pro Zelle), keine Wiederholungsgruppen bestellung (knr, kname, bdat, anr, abez, wnr, wbez, bmenge) 2. Normalform: Ein Relationstyp (Tabelle) befindet sich genau dann in der zweiten Normalform (2NF), wenn er sich in der ersten Normalform (1NF) befindet und jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist kunde (knr, kname) artikel(anr, abez, wnr, wbez) bestellung (knr, bdat, anr, bmenge)

3. Normalform: Ein Relationstyp befindet sich genau dann in der dritten Normalform (3NF), wenn er sich in der zweiten Normalform (2NF) befindet und kein Nichtschlüsselattribut transitiv von einem Kandidatenschlüssel abhängt artikel(anr, abez, wnr) warengruppe(wnr, wbez) kunde(knr, kname) artikel(anr, abez, wnr) warengruppe(wnr, wbez) bestellung(knr, bdat, anr, bmenge)

Kapitel 5: Datenbanksysteme

Datenbanksystem: besteht aus mehreren Datenbanken & einem Datenbankmanagementsystem Datenbank: Sammlung von strukturierten, inhaltlich zusammengehörigen Daten Datenbankmanagementsystem: besteht aus Programmen zum Aufbau, Kontrolle, Änderung & Abfrage der Daten aus einer Datenbank

Konzeptionelle (logische) Ebene: Sie umfasst die Beschreibung sämtlicher Daten, die in der Datenbank gespeichert sind, unabhängig von der physischen Speicherung und unabhängig von einzelnen Anwendungen (Datenmodell). Hierzu gehören neben den eigentlichen Nutzdaten auch Integritätsregeln und Zugriffsberechtigungen. Interne (physische) Ebene: Diese Ebene enthält alle Informationen über die physische Organisation der Daten. Hier wird festgelegt, wo und wie die Daten gespeichert werden und wie auf sie zugegriffen werden kann. Externe Ebene: Diese Ebene enthält die speziellen Sichten (Views) eines Benutzers oder Anwendungsprogramms auf die in der Datenbank gespeicherten Daten. Diese Sichten umfassen jeweils nur einen Ausschnitt des Gesamtdatenmodells. Beispiel: Alle Kunden einer bestimmten Region, die in einem bestimmten Monat eine Bestellung aufgegeben haben

Allgemeine Anforderungen an ein Datenbankmanagementsystem: - Datenunabhängigkeit o anwendungsneutral gespeicherte Daten o Einrichtung neuer Zugriffsmöglichkeiten auf die Daten muss möglich sein (physische Datenunabhängigkeit) o Änderung der Datenstruktur dürfen nicht dazu führen, dass Programme geändert werden müssen (logische Datenunabhängigkeit) - Mehrbenutzerbetrieb - Datenintegrität - Datensicherheit - Datenschutz - Effizienz - Verfügbarkeit für verschiedene Betriebssysteme - Skalierbarkeit bei zunehmender Benutzeranzahl - Unterstützung diverser Zeichensätze & Sortierordnungen - Verfügbarkeit von Tools zur Unterstützung der Softwareentwicklung (Laufzeit  Monitoring & Administration) Codds Anforderungen an ein RDBMS: siehe Internet

Kapitel 6: SQL Standarddatentypen: - Int/integer - Numeric (n, m), decimal (n, m)  Festkommazahl positiv oder negativ, maximal n Stellen (inklusive Nachkomma!!!), davon m Nachkommastellen - Real  Gleitkommazahl (Genauigkeit im System definiert) - Float, double oder double precision  Gleitkommazahl positiv oder negativ - Character (n)/char(n)  Zeichenkette mit n Zeichen - Varchar(n)  variable Länge, maximal n druckbar - Date  Datum ohne Zeitangabe - Time  Zeitangabe hh:mm:ss - Timpestamp  Zeitstempel, Datum & Uhrzeit yyyy-MM-dd hh:mm:ss - Boolean - Blob(n)  Binärdaten, Länge n (binary large object) - Clob(n)  Zeichenkette, Länge n (character large object)

Domäne: Menge zulässiger Werte, die ein Attribut in einer Relation annehmen kann

Kommentare

Create table

Identity: vergibt numerische Schlüsselwerte automatisch

create domain sex as char(1) check(value in(‚m‘, ‚w‘) ); Bei Tabellendefinition: create table person( …, geschlecht sex, … ); -- Kommentar // Kommentar /* erste Zeile Kommentarende*/ create table abteilung( abtnr varchar(4), abtname varchar(30), kostenstelle varchar(5), primary key(abtnr) ); create table mitarbeiter( persnr varchar(8), abtnr varchar(4), nachname varchar(30), vorname varchar(30), ausbildung varchar(30), geburtsdatum date, stundensatz double, primary key (persnr), foreign key (abtnr) references abteilung (abtnr) ); create table projektstunden ( id integer not null auto_increment, … ); create table projektstunden ( id integer not null identity, … );

Alter table / drop table: nachträgliches Einfügen & Löschen von Spalten, oder das Löschen von Tabellen add = hinzufügen Drop = löschen Eindeutigkeit (constraint =

create table projektstunden ( id integer not null identity (100, 5), … ); alter table mitarbeiter add eintritt date; alter table mitarbeiter drop eintritt; drop table mitarbeiter;

alter table projekt add constraint i_projname unique

Regel): jeder Wert von projname in der Tabelle projekt darf nur einmal vorkommen

(projname);

Insert into: fügt Zeilen in die Tabelle ein, Reihenfolge der Daten muss angegeben werden, es können auch ganze Tabellen angehängt werden

insert into mitarbeiter(persnr, abtnr, nachname, vorname, stundensatz) values(‚1234‘, ‚V001‘, ‚Meyer‘, ‚Egon‘, 55);

Select: Einzigen von Daten einer Tabelle, ist der Spaltenname eindeutig identifizierbar reicht FROM Snapshots: (ohne Schlüssel) Where: Bedingungen, welch emit “and, or, not“ verknüpft werden können, Operatoren siehe nach Tabelle Like: ermöglicht den Mustervergleich bei Zeichenketten % = beliebige Zeichenkette _ = beliebiges Zeichen / = hebt diese auf um die Zeichen abzufrage In: Anzeige aller Objekte die das folgende beinhalten Arithmetische Operatoren & as für neue Spaltennamen: Verkettung: || Trennung Datumsoperationen (Addition, Subtrktion etc): Order By: sortiert die Ausgabe nach einem Attribut asc = aufsteigend desc = absteigend Beschränkung: Limit: wie viele Zeilen? Offset: ab welcher? Distinct: gleiche Ergebniszeilen werden nur einmal ausgegeben Group by: gruppiert nach

insert into mitarbeiter (persnr, abtnr, nachname, vorname, stundensatz) select pid, abt, nachname, vorname, satz from person; select * from abteilung; select abteilung.abtnr, abteilung.abtname from abteilung; select abtnr, abtname from abteilung; create table mitarbeiter_20140715 as select * from mitarbeiter; select vorname, nachname from mitarbeiter where ausbildung = ‚Informatiker‘; select vorname, nachname from mitarbeiter where ausbildung = ‚Informatiker‘ and stundensatz = 50; select vorname || ‚ ‚ || nachname from mitarbeiter; update bestellung set lieferdatum = dateadd(‚day‘, 10, bestelldatum) where …; select ausbildung, nachname, from mitarbeiter order by ausbildung, nachname; select nachname, vorname, geburtsdatum from mitarbeiter order by geburtsdatum desc; select * from mitarbeiter order by persnr limit 5 offset 0;

select distinct ausbildung from mitarbeiter order by ausbildung; select ausbildung, count(persnr) as anzahl from mitarbeiter group by ausbildung

Kriterien um eine Auswertung einer Gruppe darzustellen Having: ermöglicht die Auswahl von Gruppen, ähnelt where, in der selectKlausel dürfen bis auf Aggregatfunktionen nur Spaltennamen vorkommen, nach denen gruppiert wird Join: Daten von Tabellen können verknüpft werden in SQL92 wird dies speziell angegeben Join von mehreren Tabellen:

OUTER Join: Join enthält auch Zeilen, die die Verknüpfungsbedingungen nicht erfüllen, left join erzeugt alle Zeilen aus mitarbeiter & nur die Zilen aus projektstunden, bei denen die Inhalte beider Tabellen gleich sind Unterabfragen: ermöglicht verschachtelte selections vorname & nachname für Mitarbeiter ohne projektstunden (not exists) Union: Vereinigung zweier Relationen, doppelte werden automatisch zusammengefasst (UNION ALL umgeht dieses) Update: ersetzt Spaltenwerte durch die Werte der set-Klausen (können mehrere durch Komma getrennt sein) Delete: löscht alle Zeilen die die Bedingung erfüllen Cast: konvertiert skalare Datentypen Case: Fallunterscheidung

order by ausbildung

select ausbildung, min(stundensatz), as minsatz, max(stundensatz) as maxsatz, avg(stundensatz) as avgsatz from mitarbeiter group by ausbildung having avg(stundensatz) > 40 order by ausbildung;

select p.projname, m.nachname from mitarbeiter m, project p where m.persnr = p.persnr order by p.projname; select p.projname, m.nachname from mitarbeiter m join projekt p on m.persnr = p.persnr order by p.projname; select a.abtname, m.nachname, m.vorname, p.projname from abteilung a join mitarbeiter m on m.abtnr = a.abtnr join projekt p on p.persnr = m.persnr order by a.abtname; select m.persnr, m.nachname, m.vorname, sum(ps.stunden) as summe from mitarbeiter m left join projektstunden ps on m.persnr = ps.persnr group by m.persnr, m.nachname, m.vorname order by m.persnr;

select vorname, nachname, stundensatz from mitarbeiter where stundensatz < (select avg(stundensatz) from mitarbeiter); select vorname, nachname from mitarbeiter m where not exists (select projnr from projektstunden where m.persnr = persnr); select m.persnr, m.nachname, p.projnr from mitarbeiter m join projektstunden p on p.persnr = m.persnr union select persnr, nachname, '---' from mitarbeiter where persnr not in (select persnr from projektstunden) order by 1; update mitarbeiter set stundensatz = stundensatz * (1 + 0.1) where ausbildung = 'Informatiker';

delete from mitarbeiter where ausbildung is null; select cast(persnr as int) from mitarbeiter; select persnr, case when studentensatz = 0 then ‘gar nichts’ when studentensatz...


Similar Free PDFs