Erklärungen zu den Lösungen der Repetitionsaufgaben


(Daten verwalten mit einer relationalen Datenbank – E.Tutorial 2)

Frage 1: 

Tabellen besitzen Spalten (-> senkrecht) mit Spaltenüberschriften (auch Attribute genannt) und eine beliebige Anzahl an Zeilen mit den Daten (-> waagrecht).

Ein Primärschlüssel ist nötig, um eine einzelne Zeile in einer Tabelle (hier eine Bestellung) eindeutig zu bezeichnen. 

Frage 2: 

Redundant bedeutet, dass einzelne Einträge mehrfach vorhanden sind. Im Beispiel stehen z.B. bei jeder Bestellung alle Angaben zum Kunden (machte der Kunde mehrere Bestellungen, stehen auch seine Angaben mehrere Male in der Liste) -> simples Löschen einer Zeile führt zu Informationsverlust. Würde man die Informationen auf mehrere Tabellen aufteilen (z.B. «Kunde» und «Bestellung») müsste man die Kundeninformationen nur noch einmal in der Kundentabelle stehen haben. 

Frage 3A: 

Ein Kunde soll mehrere Bestellungen machen können, eine Bestellung hat aber nur einen Kunden. Daher ist in diesem Schema die Beziehung falsch herum eingezeichnet.

Frage 3B: 

Die Primärschlüssel verschiedener Tabellen haben nichts miteinander zu tun.

Frage 3C: 

«Artikel» könnte eine weitere Tabelle sein, dann wäre «Bestellung» die Zwischentabelle. Von Kunde zu Artikel wäre es eine n:m Verknüpfung, welche nur mittels Zwischentabelle abgebildet werden kann (siehe spätere Fragen).

Frage 3D: 

Richtig, da ein Kunde mehrere Bestellungen haben kann, eine Bestellung aber nur einen Kunden. Auch zeigt der Fremdschlüssel Kunde_Id korrekt an, welcher Kunde zu der entsprechenden Bestellung gehört.

Frage 3E: 

Die Primärschlüssel verschiedener Tabellen haben nichts miteinander zu tun. 

Frage 4A: 

Der Familienname alleine ist kein guter Primärschlüssel, da mehrere Kunden den gleichen Familiennamen haben können und dennoch unterscheidbar sein müssen. (-> PRIMARY KEY (Name))

Frage 4B: 

Id alleine recht als Primärschlüssel, den Namen braucht es nicht auch noch. Hier fehlt aber vor allem, dass die Id nicht null sein darf (vergl. NOT NULL CHECK(typeof ( Id ) = 'integer')), da sie als Primärschlüssel dienen soll.

Frage 4C: 

Primärschlüssel-Definition fehlt

Frage 4D: 

Richtig, da die Id richtig erstellt wird (darf nicht null sein) und danach als Primärschlüssel bestimmt wird. 

Frage 5A: 

Fast. Die Bestellung macht aber so noch nicht ganz Sinn, da wir nicht wissen, wie viele Stück der Kunde bestellen möchte.

Frage 5B:  

Frage: ist der Primärschlüssel so eindeutig??

Richtig. Die Tabelle «Bestellung» wirkt hier als Zwischentabelle, damit ein Kunde mehrere Artikel bestellen kann, ein Artikel gleichzeitig aber auch von mehreren Kunden bestellt werden kann (n : m Verknüpfung)..

Frage 5C: 

Fast. Ein Kunde kann mehrere Bestellungen machen und ein Artikel kann auf mehreren Bestellungen erscheinen.

Frage 5D: 

Wäre doch schade, wenn man jeden Artikel nur einmal bestellen könnte…

Frage 5E: 

Ein Kunde kann mehrere Bestellungen machen, ein Artikel kann aber auch auf mehreren Bestellungen gleichzeitig aufgeführt sein (-> n:m Verknüpfung – kann nur über eine Zwischentabelle dargestellt werden).

Frage 6: 

Zu Deutsch: Strukturierte Abfrage-Sprache

Frage 7: 

Alle richtigen Antworten habt ihr früher oder später im Modul selber gemacht. Eine n:m Verknüpfung kann nicht direkt erstellt werden. Um den Überblick zu behalten hilft SQL direkt auch nicht.

Frage 8: 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage, hier also nur eine Spalte mit den Namen aller Kunden (entsprechend auch doppelt vorkommende Namen).

Frage 9: 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage, hier also nur zwei Spalten mit der Id und dem Namen der Artikel, welche teurer als 50.- sind.

Frage 10A: 

Korrekt.

Frage 10B: 

Die beiden Tabellen müssen mit einem INNER JOIN erst richtig verbunden werden (siehe richtige Lösung).

Frage 10C: 

Die beiden Tabellen müssen mit einem INNER JOIN erst richtig verbunden werden (siehe richtige Lösung). Von einer Suche nach dem Artikel ‘Stativ’ wird in der Aufgabenstellung nichts erwähnt.

Frage 10D: 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage. Hier möchtest du nur die Namen der Artikel, daher nur Artikel.Name.

Frage 10E 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage. Hier möchtest du nur die Namen der Artikel, daher nur Artikel.Name.

Frage 11A: 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage, also Name des Kunden und des Artikels.

Frage 11B: 

Korrekt.

Frage 11C: 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage, also Name des Kunden und des Artikels.

Frage 11D: 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage, also Name des Kunden und des Artikels.

Frage 11E 

Der Text nach ‘SELECT’ gibt dir genau die Spaltenüberschriften deiner Abfrage, also Name des Kunden und des Artikels.