Lösungsskizze_WS1516.pdf

Exams
Uploaded by Carle B. Navy 12689 at 2019-02-07
Description:

Lösungsskizze der Altklausur aus dem WS15/16. Bei Fehlern oder Verbesserungsvorschlägen gerne Bescheid sagen :)

 +3
113
15
Download
Soll COUNT(Spieler.id) oder sonst wenn keine Spieler in einem Team wird trotzdem 1 ausgeben
Create view Heimsieg AS select M1.name,M2.name, (tore_heim -tore_gast ) AS Differenz From Spiel Join ( Select * From Mannschaft As M1,Manschaft As M2 ) ON spiel.heim=M1.id AND spiel.gast = M2.id WHERE tore_heim > tore_gast Order By Differenz ASC
Ist das wirklich ein Zyklus, wenn die Abhängigkeit von verschiedenen Variablen ist?
ja
So ist A neuer Schlüssel und somit ist F in 2 NF, oder?
View 2 more comments
Ich hatte B -> D. A -> C geht auch.
D-->C geht glaub auch.
Also ich hätte das so gemacht
Bin mir nicht sicher ob das stimmt, da ja eine Straßenbahn ja mehrmals in einer Linie fahren kann. In deinem Schema ist das nicht berücksichtigt.
wieso sollte das erlaubt sein im er modell ? eine Straßenbahn fähr auf einer linie zu einer bestimmten zeitspanne und bei meinem modell ist dies genau so gegeben
Ich glaube, das sollte eher eine Partitionierung sein. Bei einer Generalisierung müsste Verkehrsmittel auf jeden Fall aus der Menge {Bus, Taxi, Straßenbahn} kommen. Bei einer Partitionierung hingegen können Verkehrsmittel auch Entitäten sein, die nicht in der Menge vorkommen (bspw Flugzeuge)
View 9 more comments
Leute, ich glaube, ihr habt den Unterschied zwischen Partitionierung und Generalisierung nicht so gut verstanden :) (nicht totale) Partitionierung bedeutet hier: ein Verkehrsmittel KANN Bus, Taxi, Straßenbahn sein. Möglicherweise gibt es auch Verkehrsmittel, die nicht Bus, Taxi, oder Straßenbahn sind. Generalisierung bedeutet hier: Ein Verkehrsmittel MUSS Bus, Taxi, oder Straßenbahn sein. Es gibt aber Bus, Taxi, oder Straßenbahn die keine Verkehrsmittel sind. Generalisierung ergibt also keinen Sinn und die Lösung ist Partitionierung.
Doch, ich glaube schon, dass wir es verstanden haben :) Du übersiehst, dass Partitionierung auch bedeutet, dass Straßenbahn/Bus/Taxi _immer_ Verkehrsmittel sein müssen. Natürlich (!) macht das in der realen Welt Sinn, aber es geht eben nicht darum, was in der realen Welt Sinn macht, sondern was in der Aufgabenstellung gefragt ist. Siehe z.B. auch Übung 3, wo ebenfalls Generalisierung genommen wurde, obwohl Partitonierung in der Realität mehr Sinn machen würde. Über die Bedeutung von ,,kann" haben wir denke ich schon genug philosophiert ;)
Hier ist die transitive Abhängigkeit (AD->b und B->C)doch immer noch gegeben?müsste nicht eine FD der Form B->AD hinzugefügt werden?
View 1 more comment
Letter, Guneshka, ihr seid nicht ganz richtig. R ist in 2NF. R ist nicht in 3NF weil nicht-Primattribut C transitiv von AD abhängig ist. Falls wir AD -> C hinzufügen, hängt C nicht mehr transitiv von AD ab sondern voll funktional. Somit gibt es keine Verletzung mehr an der 3NF. B -> AD geht nicht, denn Schlüsselkandidaten wären {B, AD}. Im Fall von AD hängt immer noch C transitiv von B ab.
Ja du hast recht. Vor ne Woche hatte ich es nicht sehr gut verstanden 😄 Danke
Korrektur: Bsp. 5 ist keine Transaktion, da die Reihenfolge von w[y] und c nicht festgelegt ist.
ich kann das bestätigen, der Grund ist, dass w{y] nicht committed wird
Wie ist Attribut B überflüssig ?
aus D->A, A->C = D->C
Das hat Frau Mülle genauso erklärt. Kann ich bestätigen!
Nach meinem Verständnis sollte das genau anders herum sein, equi width heißt dass die größe der buckets immer gleich ist,also jedes bucket 6 groß ist
ja, Width bezieht sich auf ei Länge des Intervalls der Attributwerte, das muss bei Equi-Width immer bleich sein, also B1: [1,2]; B2:[3,4]; B3:[5,6] und Equi-Depth sagt, die gesamtanzahl der Frequency muss in jedem Bucket gleich sein
stimmt schon wie es da steht
Geht's nicht einfacher? :D Ich hätte es so gemacht: SELECT a.name AS heim, b.name AS gast, (CASE WHEN a.id < b.id THEN "hinrunde" ELSE "rückrunde") AS saison FROM mannschaften a, mannschaften b WHERE a.id != b.id
jo so ist es auch richtig und ich denke dass das eigentlich auch für 3pkt so verlangt war. Würde natürlich auch gehen wenn man a und b joint mit on a.id != b.id.
Fehlt hier nicht der typ (int) oder wird int implizit gesetzt?
Denke auch das da int noch hinkommt.
Warum soll das nicht serialisierbar sein? Es gibt nur eine readsfrom beziehung, da T1 erst ganz am Ende schreibt. T2 reads A from T1 Also serialisierbar
Es geht hierbei nicht nur um die reads-from, sondern generell um da s überschreiben. In Zeile 1 liest T1 und in Zeile 5+i schreibt T2 also gibt es die Kante T1->T2. Da zusätzlich in Zeile 7 T1 liest, gibt es die Kante T2->T1 und damit ist H1 nicht serialisierbar
Reicht hier nicht ein normaler JOIN aus?
Eine Mannschaft die keinen Spieler hat, wird bei normalem JOIN nicht ausgegeben. Sie sollte jedoch trotzdem erfasst werden, da ja quasi in diesem Fall COUNT(*)=0<13
hier fehlt glaub noch der Pfad von T3 zu T2 mit x? w3x ... r1x ... r2x - oder irre ich mich?
Stimmt.