Dbs1 - HSR Teil 2

Dbs1 - HSR Teil2

Dbs1 - HSR Teil2


Fichier Détails

Cartes-fiches 75
Utilisateurs 11
Langue Deutsch
Catégorie Informatique
Niveau Université
Crée / Actualisé 03.01.2018 / 13.01.2020
Lien de web
https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6
Intégrer
<iframe src="https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

anti join

Mengenoperationen

Was ist die Transitive Hülle von:

  • C ist direkter Vorgesetzter von D und E
  • B is tdirekter Vorgesetzter von C
  • A ist direkter Vorgesetzter von B

Transitive Hülle ist:

  • A ist Vorgesetzer von B, C, D, E
  • B ist Vorgesetzter von C, D, E
  • C ist Vorgesetzter von D, E

Normalisierung

Mit Hilfe von Normalisierung kann redundanzfreiheit eines Datenmodells überprüft werden Ansammlung von Unstrukturierten Attributen in Tabellen zu strukturieren

Welche Anomalien können auftreten?

Wann liegt eine funktionale Abhängigkeit vor?

Eine Funktionale Abhängigkeit zwischen Attribut Y und Attribut X liegt dann vor, wenn es zu jedem X genau ein Y gibt

Wann liegt eine vollständig funktionale Abhängigkeit vor?

Eine vollständig funktionale Abhängigkeit liegt dann vor, wenn das Nicht-Schlüsselattribut nicht nur
von einem Teil der Attribute eines zusammengesetzten Schlüsselkandidaten funktional abhängig ist,
sondern von allen Teilen eines Relationstyps. Die vollständig funktionale Abhängigkeit wird mit
der 2. Normalform (2NF) erreicht.
 

Wann liegt eine transitive Abhängigkeit vor?

Eine transitive Abhängigkeit liegt dann vor, wenn Y von X funktional abhängig und Z von Y, so ist Z
von X funktional abhängig. Diese Abhängigkeit ist transitiv. Die transitive Abhängigkeit wird mit 3.
Normalform (3NF)
erreicht.
 

Normalformen:

0. Normalform

Jede Tabelle hat einen Primärschlüssel

Normalformen:

1. Normalform

Atomare Werte in den Tupeln.

Von der 0. NF auf die 1. NF, Tupeln aus z.b Kommagetrennten Werten aufteilen

( | Peter, Meier | -> | Peter | Meier | )

Normalformen:

2. Normalform

Jede Tabelle welche keine zusammengesetzten Schlüssel hat, ist automatisch in der 2. Normalform.

Von der 1. NF auf die 2. NF kommt man indem man einen eindeutigen Schlüssel setzt pro Tabelle. Zusammengesetzte Schlüssel aufteilen in separate Tabellen und Attribute die von einem Teilschlüssel abhängig sind in andere Tabelle verschieben.

Normalform:

Boyce-Codd Normalform (BCNF)

Verhindert, dass Teile zweier aus mehrerer Feldern zusammengesetzten Schlüsselkandidaten voneinander abhängig sind.

Denormalisierung

Probleme: Performanzprobleme bei Anfragen über mehrere Tabellen, komplizierter Zugriff
Beispiele: Webdatenbanken, Data Warehouses
Lösung: Denormalisierung in 2. NF
• Vertretbar wenn sich abhängige Eigenschaften selten ändert
• Aspekt des physischen Modells
• Modellierung eines kaum gebrauchten Objekttyps entfällt
 

Datenbankbenutzer erstellen (Query)

DROP USER if exists fussballclub;

CREATE USER fussballclub WITH PASSWORD 'fussballclub';

SQL Schemas

Schemas unterteilen eine Datenbank in Namensräume.

Fasst CREATE und GRANT Anweisungen zusammen.

  • DB-weit eindeutiger Identifier "Schemald"
  • Tabellen, Views, Indices, Stored Procedures, Triggers, Synonyms, Sequences
  • Jedes DB-Objekt hat einen DB-weit eindeutigen Identifier "Schemald.ObjectID"

Wichtigste Datentypen

  • BOOLEAN
  • Ganzzahlen
  • Gleit-Fliesskommazahlen
  • Zeichenketten
  • Datum/Zeit
  • Verschiedenes
    • Binäre Datentypen
    • Bitmaps etc.

Create/ Delete Table

create table liga (id serial primary key, name varchar(150) not null, land varchar(150) not null);

drop table liga;

drop table liga cascade;

truncate table liga;

ON DELETE CASCADE

löscht auch alle referenzierten Tupels

ON DELETE RESTRICT

verhindert das Löschen wenn referenziert wird

ON DELETE SET NULL

setzt das referenzierte Tupel auf "NULL"

ON DELETE SET DEFAULT

setzt das referenzierte Tupel auf den Default Wert

ON UPDATE CASCADE

Ändert auch den wert der referenzierten tupel

ON UPDATE RESTRICT

falls es referenzierte Tupel gibt wird die Änderung des Wertes nicht ausgeführt

ON UPDATE SET NULL

Die referenzierten tupel werden auf NULL gesetzt bei Änderung des referenzierten Primärschlüssels

ON UPDATE SET DEFAULT

die referenzierten tupel werden auf den DEFAULT Wert gesetzt bei Änderung des referenzierten Primärschlüssels

Insert

insert into flugzeugtyp (flugzeug, sitzplaetze) values ('Airbus A300', 160);

Update

update flugzeugtyp set sitzplaetze=180 where sitzplaetze=160;

Delete

delete from flugzeugtyp where sitzplaetze=160;

Select Where

select name, wohnort from angestellter order by name;

select bezeichnung, aufwand, dauer, aufwand/dauer as "aufwand pro tag" from projekt;

select name, wohnort from angestellter where wohnort = 'Luzern' order by name;

select name, wohnort from angestellter where abtnr = 1 and (salaer > 100 or wohnort ='Luzern') order by name, wohnort;

distinct

Duplikate verhinder bei Abfrage

select distinct wohnort from angestellter where abtnr = 1 order by wohnort;

like

Nach String Mustern suchen

select distinct wohnort from angestellter where wohnort like 'Zu%' order by wohnort;

aggregatfunktionen

Aggregatfunktionen liefern als Resultat nur eine Zeile

Aggregatfunktionen: MAX, MIN, AVG, SUM, COUNT

select abtnr, sum(salaer) as sum_salaer from angestellter group by abtnr order by abtnr;

group by ... having

select abtnr, count(*) as "angestellter" from angestellter group by abtnr having count(") >= 5;

Inner Join

  1. Selektion
    1. select persnr, projnr, zeitanteil from projektzuteilung where (projnr=25) or (projnr=30);
  2. Join mit Angestellter
    1. select persnr, projnr, zeitanteil from projektzuteilung inner join angestellter on angestellter.persnr = projektzuteilung.persnr where (projnr=25) or (projnr=30)

Equi join

Inner join mit Vergliechsoperator =. Hier wird Tabelle Angestellter mit sich selber verknüpft

select ang1.name as "vorgesetzter", ang2.name as
"mitarbeiter" from angestellter ang1 inner join angestellter ang2 on
ang1.persnr=ang2.chef where ang1.chef is null;
 

left outer join

Mit dem Left outer Join erscheinen auch Tupel aus der linken Tabelle, welche einen NullWert aufweisen.

select a.name, p.bezeichnung from projekt p left outer join
angestellter a on p.projleiter = a.persnr order by p.projnr;
 

right outer join

Mit dem Right outer join erscheinen auch Tupels aus der rechten Tabelle welche bei den Join Attributen einen Null Wert aufweisen.

select a1.name as chef, a2.name as untergebener from
angestellter a1 right outer join angstellter a2 on
a1.persnr=a2.chef;
 

lateral join

Tabellen im From Teil haben keinen Zugriff auf Attribute der anderen _Tabellen. Deshhalb Lateral Join

select foo.*, bar2.* from foo, left outer join LATERAL bar
(…) bar2 on true;
 

Kann eine korrelierte Unterabfrage alleine stehen?

kann eine unkorrelierte Unterabfrage auch alleine stehen?