Einsendeaufgaben EA-Besprechung SS 2017 EA1 00817 (01.06.2017)

Hallo Mitstreiter/innen, wie sehen bei euch die Kardinalitäten aus?

Bei mir so:
Mitarbeiter m --------- m Piloten
Mitarbeiter
m --------- m Kabinenpersonal
Fluglizenz
m --------- m Piloten
Piloten
m --------- m Flug
Kabinenpersonal
mc --------- m Flug
Flug
m --------- m Passagiere
Flug
mc --------- 1 Flugzeug
Flugzeug
m --------- 1 Flugzeugtyp
 
Ich habe
Mitarbeiter 1 ----------- c Piloten
Mitarbeiter 1 ----------- c Kabinenpersonal

Ich habe bei Mitarbeiter jeweils eine eins weil jeder Piloten/Kabinenpersonal genau ein Mitarbeiter ist und das c bei Piloten/Kabinenpersonal weil ein Mitarbeiter entweder ein Pilot oder ein Kabinenpersonal ist. (Ich hatte bei Piloten/Kabinenpersonal zuerst mc stehen, aber nach meiner Begründung für die 1 bei Mitarbeiter wurde ich mir unsicher, glaube aber jetzt, dass c richtig ist)

Außerdem
Flug m ----------- 1 Flugzeug
Dein Flug mc ---- 1 Flugzeug hat auch die Möglichkeit neuer Flugzeuge, die noch nicht geflogen sind, deshalb denke ich, dass deins da "richtiger" ist.

Den Rest hab ich genauso
 
Bei der Abfrage habe ich:
SELECT Mitarbeiter.Nachname, Mitarbeiter.Vorname, Fluglizenz.maxStrecke
FROM Mitarbeiter, Pilot, Fluglizenz
WHERE Mitarbeiter.Geburtsdatum < 1962-01-01
AND Fluglizenz.maxStrecke > 3500
AND Mitarbeiter.MitarbeiterNummer = Pilot.MitarbeiterNummer
AND Pilot.FluglizenzNummer = Fluglizenz.FluglizenzNummer
ORDER BY Mitarbeiter.Nachname DESC;
 
Danke für deine Antwort.

Mitarbeiter 1 ----------- c Piloten
Mitarbeiter 1 ----------- c Kabinenpersonal

werde ich so übernehmen.

Bei der Abfrage bin ich nicht sicher, ob in FROM auch Pilot angegeben werden muss, da in SELECT ja nur Spalten aus den Tabellen Mitarbeiter und Fluglizenz ausgewählt werden sollen. Bin der Meinung, dass der Vergleich Pilot.FluglizenzNummer = Fluglizenz.FluglizenzNummer in WHERE auch so funktionieren würde.

OK, dann können wir diese Einsendearbeit ja abschicken :-)
 
Ich habe die Aufgabe 1 mit folgenden Beziehungen gelöst:

Mitarbeiter generalisiert-----------spezialisiert Piloten
Mitarbeiter generalisiert-----------spezialisiert Kabienenpersonal
Mitarbeiter mc --------- 1 Gehaltsstufe
Piloten mc -----------1 Rang
Piloten 1 ------------ m Fluglizenz
Piloten m ------------ m Flüge
Kabienenpersonal m -------------mc Flüge
Kabienenpersonal m ------------- 1 Herkunftsland
Kabienenpersonal m ------------- 1 Sprache
Flüge m ------------ m Passagiere
Flüge m ------------ 1 Flugzeuge
Flugzeugtypen 1 ------------ m Flugzeuge
 
Ich verstehe das noch nicht so ganz.. wie sieht das dann als Zeichnung bei euch aus? Habe gerade erst damit angefangen die Hefter durchzuarbeiten :D
Könnte jemand ein Bild hochladen? (Ich habe es jetzt einfach mal versucht --> Bild anbei)

Danke schonmal im Voraus!
 

Anhänge

  • 51655537955__7030C863-A125-4512-A278-5D73408C92DE.JPG
    51655537955__7030C863-A125-4512-A278-5D73408C92DE.JPG
    115,6 KB · Aufrufe: 71
Zuletzt bearbeitet:
Die Zeichnung sieht bei mir recht ähnlich aus (existiert aber im Moment nur auf einem unleserlichen Schmierblatt, dass dir wahrscheinlich nicht weiter helfen würde). Ich habe genau die Entitäten wie Nico oben, alles was keine Entität ist habe ich entweder als Merkmal angehängt oder ganz weggelassen, so wie es auch in der Musterlösung zum SoSe 2015 gemacht wurde.
Ich kann gerne meine Zeichnung hochladen wenn ich sie sauber gemacht habe, komme aber vermutlich erst Mittwoch Abend oder Donnerstag dazu.
 
Hier ist meine Zeichnung zur Aufgabe 1.

Die Abfrage hab ich jetzt übrigens genau wie Faustino. Die könnt ihr direkt kopieren - richtiger geht nicht :applause:
 

Anhänge

  • 00817 SS 2017 Aufg 1.JPG
    00817 SS 2017 Aufg 1.JPG
    70,2 KB · Aufrufe: 77
Hmmm...müsste es nicht wie folgt sein?

Mitarbeiter 1 ----------1 Pilot
Mitarbeiter 1 ----------1 Kabinenpersonal
 
@Patrick80

Du hast recht (siehe Logische Datenorganisation - KE 2 - S. 56). Hab mein Bild korrigiert.
 

Anhänge

  • 00817 SS 2017 Aufg 1.JPG
    00817 SS 2017 Aufg 1.JPG
    70,6 KB · Aufrufe: 82
Das erste Modell, was sich mit meinem fast deckt ;-) - bis auf einen Punkt: : ich denke Pilot -Fluglizenz ist 1-m, da eine Fluglizenz nur genau für 1 Piloten ausgestellt wird. Ansonsten habe ich alles genauso...
Grüße
 
Hier ist meine Zeichnung zur Aufgabe 1.

Die Abfrage hab ich jetzt übrigens genau wie Faustino. Die könnt ihr direkt kopieren - richtiger geht nicht :applause:

Doch "richtiger" geht: es soll die maximale Strecke (das ist genau eine) je Pilot gelistet werden, also muss auch die Aggregatsfunktion MAX benutzt werden....
sonst listet man alle Strecken größer 3500 km... somit könnten Piloten mehrfach auftauchen, falls sie mehrere Lizenzen größer 3500km besitzen. Es muss also Gruppiert werden und die Bedingung wandert in die Having-Klausel ... ich poste das Statement die Tage mal - heute keine Zeit mehr...
 
Zuletzt bearbeitet:
OK, Pilot-Fluglizenz 1-m müsste stimmen.

Bei der Abfrage können wir leider fast keine Hintergrundinfos aus der Aufgabenstellung ziehen. Kann ein Pilot mehrere Lizenzen mit z.B. 3.550 km, 3.780 km, 10.563,25 km besitzen? Ich dachte, dass jede Lizenz > 3.500 km ausreicht, um alle Langstrecken fliegen zu können. Dadurch bräuchte jeder Pilot ja auch nur eine einzige Lizenz > 3.500 km. In Wikipedia hab ich gerade auch nichts dazu gefunden - Fluglizenzen beschränken sich heutzutage wohl nicht auf bestimmte Distanzen. War das vielleicht früher so?

Falls das so zutrifft, müsste man die Abfrage natürlich verfeinern. Eine exaktere, ausführlichere Aufgabenstellung wäre hier hilfreich gewesen.
 
Hi,
ich kenne mich mit Fluglizenzen auch nicht aus, aber unabhängig davon wird in Aufgabe 1 explizit gesagt ein Pilot hat mindestens 1 Fluglizenz, also 1 oder mehrere. Da nichts weiter bekannt ist, gehe ich erst einmal davon aus, dass er beliebig viele haben kann, die jeweils für eine beliebige Reichweite gelten. So ist es zumindest modelliert/beschrieben. Ob es nur genau 1 Lizenz für Langstrecke gibt wird nicht gesagt, weshalb man davon auch nicht einfach ausgehen sollte - in der Realen Welt würde man den Sachverhalt einfach im Gespräch aufklären ;-). Das Datenmodell erlaubt also erst einmal beliebig viele Lizenzen. Die Entfernung dient als Kriterium zur Unterscheidung in kurz/mittel/lang mehr nicht. Ein Pilot könnte also den Angaben zufolge auch mehrere Langstreckenlizenzen besitzen - für 3500, 8000 und 10000 km.. - was auch immer.


Die Aufgabenstellung ist gelinde gesagt bescheiden konkret - Erstens Fehlerhafter Text (sehe keine Adresse als relation), zweitens unsinnig modelliert, da ein Pilot mit mehreren Lizenzen auch mehrere Pilotennummern erhielte. Das würde man so wohl eher nicht modellieren siehe Normalisierung. Für einen Kurs über Datenbankmodellierung aus meiner Sicht ein eher schwaches Beispiel.
Was auch unsinnig scheint:auf die hier modellierte Art wäre es auch möglich, dass ein Mitarbeiter, der Pilot ist, auch mehrere Rangbezeichnungen erhielte- erscheint mir auch nicht sinnvoll - werde das evtl. auch nochmal im offiziellen Forum anmeckern, da mir die Aufgabenstellung mit den ganzen Unklarheiten ein bisschen auf den Keks geht. Das sich die Betreuung dann in der "heißen Phase" auch noch ohne Vertretung abmeldet finde ich traurig - so lassen sich die Fragen nicht wirklich klären.
naja... genug aufgeregt...


Im SQL-Server sieht das etwa so aus - man ersetze ggf. die Aliases durch die vollen Relationenbezeichner, dann müsste es passen:


SELECT m.Nachname
, m.Vorname
, MAX(fl.maxStrecke) as 'MaxReichweite'

FROM Mitarbeiter as m
, Pilot as p
, Fluglizenz as fl

WHERE p.MitarbeiterNummer = m.MitarbeiterNummer
AND fl.FluglizenzNummer = p.FluglizenzNummer
AND m.Geburtsdatum < '1962-01-01' (<-- Anführungszeichen benötigt der SQL-Server)

GROUP BY m.Nachname
, m.Vorname
, m.MitarbeiterNummer (<-- falls 2 Piloten gleichen Vor UND Nachnamen haben erhielte man ein falsches Ergebnis, da nur einer der beiden - der mit der "höherwertigen" Fluglizenz - im Ergebnis auftauchen würde, deshalb auch nach Mitarbeiternummer gruppieren. Die Gruppiereung nach Nach- und Vorname erfordert der SQL-Server wegen der Aggregatsfunktion (muss darin ausgeschrieben werden. Möglicherweise kann man die in der FU-Schreibweise auch weglassen - (meine das im Script so gesehen zu haben) und nur nach Mitarbeiternummer als Uniqe Key gruppieren, das sollte dann eindeutig sein.)

HAVING MAX(fl.maxStrecke) > 3500
ORDER BY m.Nachname DESC, m.Vorname DESC (<-- Sortierung nach Vorname nicht gefordert aber wohl sinnvoll bei Namensgleichheit)

Um bei Namnsgleichheit von Vor UND Nachname im Ergebnis auch die beiden Mitarbeiter direkt unterscheiden zu können sollte man eigentlich auch noch die Mitarbeiternummer mit ausgeben.



Habe das Ganze gegen eine kleine Dummy-DB (SQL-Server 2014) getestet - liefert das korrekte Ergebnis.

Schade die hübsche Formatierung geht leider verloren - die Kommentare gehören natürlich nicht ins Statement ;-) )

Grüße,
Christoph
 
Zuletzt bearbeitet:
Hoffentlich bekommen wir in der Klausur ne eindeutige Aufgabe. Diese hier war ja auch Teil einer Klausur, 2015 glaub ich.

Welche Lösung jetzt die richtige ist, sehen wir dann bald in der Musterlösung. Bin schon richtig gespannt drauf. Derweil hab ich schon mal mit der zweiten EA angefangen...
 
Ich befürchte, dass die simple > 3500-Abfrage als die richtige gewertet wird, weil man die Unklarheiten der Aufgabenstellung nicht sieht.
Aber genau das macht mir in einer Klausur sorgen. Wahrscheinlich betreibe ich hier Haarspalterei und mein Statement ist overkill, aber es geht mir ums prinzip ;-)
 
Mal eine ganz andere Frage zu der EA:
Auf der ersten Seite steht, dass die vorhandenen Aufgabenblätter genutzt werden sollen, falls welche vorhanden sind. In dem Fall sind zwei Blätter für Aufgabe 1 dabei. Verwendet ihr jetzt die vorhandenen Blätter, lasst jeweils das linke drittel frei und versucht alles irgendwie auf dem Platz abzubilden oder erstellt ihr das Ganze z. B. mit Visio und schickt einen Druck mit?
 
Da ich leider über eine nicht sehr schöne Schrift verfüge, habe ich die Einsendeaufgabe mittels Visio / PPT bearbeitet.
Ich denke nicht, dass dies von Nachteil ist.
 
Zurück
Oben