Klausurfragen zu SQL (Anwendung)
Miri
- datenbank
0 Cheatah0 Miri
0 Ilja0 flowh
Hallo,
ich würde mich sehr über Eure Hilfe freuen! Ich schreibe am Montag eine Klausur, u.a. zum Thema SQL und ich habe noch nicht den Durchblick. Man muss dazu sagen, dass das eine Online-Vorlesung ist - vielleicht könnt Ihr mir ja helfen. Es geht um Folgendes:
Gegeben sind folgende Informationen über eine Datenbank zur
Verwaltung von Klausurergebnissen:
Tabelle Student:
MatrNr (Integer, Not Null, die Matrikelnummer)
Name (Char (20))
Vorname (Char (20))
FB (Char (2), die Nummer des Fachbereichs von 01 bis 19)
Beginn (Integer, vierstelliges Jahr des Studienbeginns)
Tabelle Fachbereiche:
Nummer (Char (2))
Name (Char (25), Name des Fachbereichs)
Tabelle Ergebnisse:
MatrNr (Integer, Not Null)
Punkte (Real, erreichte Punktzahl in der Klausur)
Note (Real, erreichte Note)
Wir haben u.a. die normale SELECT-Abfrage behandelt sowie Subqueries. Hier ist z.B. eine Aufgabe:
b) Es sollen in einer Liste die Durchschnittsnoten für jeden Fachbereich (Angabe der Nummer genügt) getrennt ausgegeben werden.
c) Gefragt sind (alphabetisch sortiert) die Namen aller Fachbereiche, aus denen keine (!) Studenten an der Klausur teilgenommen haben.
Könntet Ihr mir vielleicht helfen? Es geht mir nicht nur um die Lösung, natürlich will ich auch die Denkweise dahinter verstehen.
Vielen lieben Dank!
Gruß
Hi,
Könntet Ihr mir vielleicht helfen? Es geht mir nicht nur um die Lösung, natürlich will ich auch die Denkweise dahinter verstehen.
das freut mich sehr. Vielleicht hilfst Du uns erst einmal mit Deiner Denkweise: Wie würdest Du an die Probleme rangehen? An welcher Stelle versagt Dein aktuelles Wissen?
Cheatah
das freut mich sehr. Vielleicht hilfst Du uns erst einmal mit Deiner Denkweise: Wie würdest Du an die Probleme rangehen? An welcher Stelle versagt Dein aktuelles Wissen?
Das ist ein guter Ansatz, denn ich habe schon Probleme mit der Herangehensweise. Ich habe die Tabellen aufgezeichnet und mich dann gefragt, welche ich benötige. Dann komme ich aber schon durcheinander. Ich bin mir auch bei den Befehlen noch nicht sicher - welcher kann was und was können die Befehle überhaupt. Ich mache SQL das erste Mal, mir kommt das sehr plastisch vor.
Mahlzeit Miri,
Das ist ein guter Ansatz, denn ich habe schon Probleme mit der Herangehensweise. Ich habe die Tabellen aufgezeichnet und mich dann gefragt, welche ich benötige.
IMHO falsch. Überlege lieber, welche Ergebnisse Du benötigst. Dann weißt Du, aus welchen Daten Du diese erzeugen bzw. errechnen kannst. Und dann weißt Du, aus welchen Tabellen Du diese Daten holen musst.
"Übersetze" die beiden Aufgaben doch einfach mal in einen einfachen, in Umgangssprache formulierten Algorithmus.
Dann komme ich aber schon durcheinander.
Kein Wunder - Du zäumst das Pferd von hinten auf ...
Ich bin mir auch bei den Befehlen noch nicht sicher - welcher kann was und was können die Befehle überhaupt.
... und das ist NOCH viel weiter hinten. Namen und Sprachen sind Schall und Rauch - es geht in erster Linie *IMMER* darum, dass Problem zu analysieren und einen geeigneten Algorithmus zu entwickeln (ob nun sprachlich, per Ablaufdiagramm, Struktogramm o.ä.), um das Problem lösen zu können.
Dabei spielt die Programmiersprache erstmal überhaupt keine Rolle. Erst wenn ein Lösungsweg vorliegt, kann dieser in die Sprache der Wahl (oder der Vorgabe) übersetzt werden.
Ich mache SQL das erste Mal, mir kommt das sehr plastisch vor.
"Plastisch"?
MfG,
EKKi
... also erst einmal die Befehle lernen?!
Hallo,
... also erst einmal die Befehle lernen?!
naja, wenigstens mal anschauen, oder?
"select spalte1 from tabelle2 where 1" sollte ja nicht so schwer sein.
Gruß
jobo
Mahlzeit Miri,
... also erst einmal die Befehle lernen?!
Nein, genau das meinte ich nicht. Erst einmal solltest Du grundsätzlich verstehen, was die Aufgabenstellung ist, das Problem beschrieben können und einen Lösungsvorschlag (unabhängig von der verwendeten Technologie) erarbeiten.
Erst DANN kommt die "Übersetzung" in SQL. Da Du aber offenbar sowohl Schwierigkeiten beim strukturiert-logischen Herangehen an programmtechnische Aufgabenstellungen als auch mit der Syntax der verwendeten Sprache hast, sei die Frage gestattet, was für eine "Online-Vorlesung" das denn ist, in der offenbar nicht einmal die Grundlagen vermittelt werden, bevor eine Klausur gestellt wird ... oder liegt das Problem in diesem Fall nicht beim Dozenten, sondern eher beim Teilnehmer?
MfG,
EKKi
Guten Morgen,
ich habe mir die Befehle nochmals eindringlich zu Gemüte geführt, muss aber sagen, dass ich noch Probleme mit ANY, ALL und IN habe. Meine Materialien sind in meinem Ermessen diesbezüglich nicht sonderlich aussagekräftig und im Internet habe ich auch noch nichts gefunden, was mich 100%ig aufklärt.
Könnte mir jemand bei der 1. Aufgabe ...
Es sollen in einer Liste die Durchschnittsnoten für jeden Fachbereich (Angabe der Nummer genügt) getrennt ausgegeben werden.
helfen? Ich habe den Eindruck, dass ich grundsätzlich viel zu kompliziert denke. Ich weiß, dass der Durchschnitt mit AVG ausgegeben wird, mir ist aber nicbt klar, wie ich die Tabellen Fachbereiche und Ergebnisse miteinander verknüpfe, ich meine die Zuordnung von den Fachbereichen zu den Ergebnissen.
Vielen Dank!
Moin!
ich habe mir die Befehle nochmals eindringlich zu Gemüte geführt, muss aber sagen, dass ich noch Probleme mit ANY, ALL und IN habe. Meine Materialien sind in meinem Ermessen diesbezüglich nicht sonderlich aussagekräftig und im Internet habe ich auch noch nichts gefunden, was mich 100%ig aufklärt.
Die Befehle nochmal zu erkunden war laut EKKi erst der zweite Schritt. Schritt 1 war:
Könnte mir jemand bei der 1. Aufgabe ...
Es sollen in einer Liste die Durchschnittsnoten für jeden Fachbereich (Angabe der Nummer genügt) getrennt ausgegeben werden.
helfen?
"Formuliere das Ergebnis, das hier rauskommen soll, als Tabelle." Wie dir nicht entgangen sein dürfte, ist das Ergebnis einer SQL-Abfrage immer eine Tabelle mit Spalten und Ergebniszeilen je nach Abfragebedingungen. Formuliere, welche Spalten hier auszugeben sind, und welche Art von Daten für jedes Ergebnis dort drinstehen sollen.
Wenn du weißt, was du von der Datenbank wissen willst, kannst du in der nächsten Stufe ergründen, in welcher existierenden Tabelle die von dir angeforderte Information drinsteckt, bzw. welche Berechnung erforderlich ist, um die Information aus anderen Informationen zu berechnen. AVG() als Aggregatfunktion für "Durchschnitt" hast du schon erwähnt, da klingt es logisch, auch den anderen Part von Aggregatfunktionen zu nutzen, nämlich GROUP BY.
Wenn Informationen in mehr als einer Tabelle stehen, kommt die Verknüpfung von Tabellen mit JOIN noch dazu. Was in deinenm Beispiel nicht sehr kompliziert werden kann, denn du hast nur drei Tabellen - die kann man nicht unendlich kompliziert verknüpfen.
- Sven Rautenberg
Hallo, ... SQL ist eine Sprache mit der man das "Ergebnis" beschreibt. Die Formulierung des Ergebnisses dann in eine funktionierende SQL Syntax zu transformieren ist der nächste Schritt.
Dann komme ich aber schon durcheinander.
Womit? Wodurch? Weshalb?
Ich bin mir auch bei den Befehlen noch nicht sicher - welcher kann was und was können die Befehle überhaupt.
Haben wir da vielleicht irgendwas vergessen im Lernprozess? Das Lernen und Durcharbeiten vom Unterrichtsstoff? Ich glaube kaum, dass verlangt wird eine Klausur zu schreiben ohne das Thema behandelt zu haben. (autonome Behandlung zählt da natürlich auch drunter).
Die Frage nach dem "plastisch" wurde ja auch schon gestellt?
Ich möchte jetzt ungern Cheatah wiederholen.
Frank
moin,
SQL kann man sich auch immer plastisch vorstellen, das hilft sehr gut beim lernen. allerdings sind von meiner seite dazu ein paar fragen aufgetaucht, was deine drei tabellen angeht. in aller regel gibt es in jeder tabelle einen sogenannten primärschlüssel, also eine spalte (manchmal auch mehrere spalten), die jeden datensatz eindeutig identifiziert. um dies zu gewährleisten hat dieser primärschlüssel zwei eigenschaften, die spalten dürfen nicht leer sein und sie müssen eindeutig sein, sprich ein bestimmter wert darf auch nur einmal vorkommen. damit man nicht immer beides angeben muss, gibt es dafür eni schlüsselwort "PrimaryKey", den man bei der erstellung der tabelle mit angeben kann. aber genau so ein schlüssel fehlt bei deinen tabellen. man könnte sich denken, welche spalten für diesen schlüssel geeignet sind, das wären:
daraus ergibt sich aber ein problem, bzw. eine fragestellung. zum einen sollte man die bezeichner der tabellen entweder alle im singular oder im plural halten, aber nicht gemixt. ich bevorzuge immer den singular. das nur am rande.
das andere problem ist, dass die tabellen Studenten und Ergebnisse die gleiche spalte als primärschlüssel haben, wenn ich es den richtig interpretiere. das würde aber bedeuten, dass pro student nur eine prüfung abgelegt werden könnte. wäre dies der fall, könnte man eigentlich auch die tabellen Studenten und Ergebnisse in eine tabelle zusammenfassen.
es wäre nützlich zu wissen, wie das den fachlich gemeint ist, ob ein student nur eine prüfung ablegen kann oder auch mehrere....
Ilja
Hallo Miri.
Du scheinst mit deinen Unterlagen nicht ganz zufrieden zu sein.
Ich hätte hier die Website der "Datenbanken"-Vorlesungen meiner Uni vom letzten Jahr im Angebot, da findest du sämtliche Folien aus der Vorlesung. (Ich habs sie mir nicht angeschaut, kann also also ihre Qualität nicht beurteilen.)
Vielleicht hilft dir das ja weiter.
Servus,
Flo