Dbs1 - HSR Teil 2
Dbs1 - HSR Teil2
Dbs1 - HSR Teil2
Set of flashcards Details
Flashcards | 75 |
---|---|
Students | 11 |
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 03.01.2018 / 13.01.2020 |
Weblink |
https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6
|
Embed |
<iframe src="https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
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.
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"
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
- Selektion
- select persnr, projnr, zeitanteil from projektzuteilung where (projnr=25) or (projnr=30);
- Join mit Angestellter
- 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?