Probeklausur

studi

Benutzer
Beiträge
11
Ich bräuchte hierbei Hilfe. Ich habe keine Lösungen und weiß auch nicht wie ich es lösen muss.
Könnte mir jmd. die Lösungen mailen? Zahle auch gerne einen Zwani dafür :).

Vielen Dank im Voraus
 

Anhänge

  • Probeklausur.pdf
    140,4 KB · Aufrufe: 16
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.846
Ich bräuchte hierbei Hilfe. Ich habe keine Lösungen und weiß auch nicht wie ich es lösen muss.
Könnte mir jmd. die Lösungen mailen? Zahle auch gerne einen Zwani dafür :).

Vielen Dank im Voraus
Wie ist Dein bisheriger Ansatz?

In der Klausur wirst den Prüfer wohl nicht mit einem Zwani kaufen können...
 

ukulele

Datenbank-Guru
Beiträge
4.702
Bei solchen Sachen kostet das durchsehen und prüfen viel Zeit, am besten du postest nur die Fragen und Antworten bei denen du dir unsicher bist.
 

studi

Benutzer
Beiträge
11
Bei allen Fragen, das ist ja mein Problem...
Hier mein Lösungsversuch
 

Anhänge

  • Lösungsversuch Probeklasuur.pdf
    157 KB · Aufrufe: 10

akretschmer

Datenbank-Guru
Beiträge
9.846
Bei allen Fragen, das ist ja mein Problem...
Hier mein Lösungsversuch

Nicht wirklich viel geschafft an einem Tag, gell?

Warum tust Dir nicht mal eben schnell ein PostgreSQL (oder zur Not MySQL) auf Deinem Rechner installieren und probierst einfach mal mit SQL rum?

Du würdest dann vielleicht schnell merken, daß z.B. die Eingabe einer Adresse in varchar(20) nicht so einfach ist, weil der Platz nicht reicht und eine Adresse sich aus Teilen wie PLZ, Straße, Ort zusammensetzt und es einfach besser ist, dies auch so abzubilden. Oder Du würdest auch merken, daß bei Abfragen via SQL man bei Datumsangaben mit dem amerikanischen Format yyyy-mm-dd man oft besser ans Ziel kommt, oder daß "where not in bestellung k_nr" syntaktisch einfach nur falsch ist.
 

studi

Benutzer
Beiträge
11
Ich hatte heute noch ne andere Klausur...
Wie schaut es denn mit Aufgabe 1 und 3 aus?
Das 2 sehr schlecht ist, weiß ich leider :-(
 

ukulele

Datenbank-Guru
Beiträge
4.702
Also die Tabellen in 1 sehe ich kritisch. Sollen Bühnenkleidung und Wanddekoration spalten sein? Das gehört da nicht hin, nur ein PK, eine Bezeichnung und vieleicht eine Beschreibung und eine Kategorie für jedes Exponat aber keine Spalten für jede Art von Exponat.

Die Reservierungen Tabelle sollte lieber mit einem Datum von und einem Datum bis abreiten anstelle von Dauer aber das ist Geschmackssache würde ich sagen. Im Moment unterscheidest du nicht zwischen Reservierung und Ausleihe, ich glaube aber das möchte der Aufgabensteller, es fehlt auch der verantwortliche Mitarbeiter und das Exponat als Fremdschlüssel, die würde ich immer mit nennen.

In der Filialen Tabelle steht dann was von Exponat, soll das ein Fremdschlüssel auf Exponat sein? - falsch. Standort sollte aus Adressfeldern bestehen, wie schon erwähnt. Genauso Mitarbeiter gehört nicht als Schlüssel in die Filial Tabelle sondern ein Filialschlüssel in die Mitabrietertabelle.

Mitarbeiter Alter? Ernsthaft? Denk mal drüber nach :)

Bei Aufgabe 2 werden einfach nur Bruchstücke geliefert. Wie soll ein CREATE TABLE ohne CREATE TABLE Anweisung funktionieren? Das ist ein bischen zuviel Geiz. VARCHAR als Primary Key der dann auch noch Kundennummer heißt, ich würde sagen das widerspricht sich und technisch sind Zahlen oder GUIDs besser. Du solltest diese Befehle wirklich an einem SQL Server testen.
 

akretschmer

Datenbank-Guru
Beiträge
9.846
Die Reservierungen Tabelle sollte lieber mit einem Datum von und einem Datum bis abreiten anstelle von Dauer aber das ist Geschmackssache würde ich sagen.

Also ich würde da sogar eher DATERANGE nehmen und einen EXCLUDE-Constraint definieren:

Code:
test=*# create table xxx(exponat int, belegt daterange, exclude using gist(exponat with =, belegt with &&));
NOTICE:  CREATE TABLE / EXCLUDE will create implicit index "xxx_exponat_belegt_excl" for table "xxx"
CREATE TABLE
Time: 40,616 ms
test=*# insert into xxx values (1, '[2013-06-01,2013-08-31)');
INSERT 0 1
Time: 14,247 ms
test=*# insert into xxx values (1, '[2013-06-07,2013-09-30)');
ERROR:  conflicting key value violates exclusion constraint "xxx_exponat_belegt_excl"
DETAIL:  Key (exponat, belegt)=(1, [2013-06-07,2013-09-30)) conflicts with existing key (exponat, belegt)=(1, [2013-06-01,2013-08-31)).

Aber ansonsten gebe ich Dir natürlich vollumfänglich Recht ;-)
 

studi

Benutzer
Beiträge
11
Hier mein zweiter Versuch für die Aufgabe 1.
Bei Aufgabe 3 war nur das mit der PLZ falsch?
Für Aufgabe 2 installiere ich mir jetzt den SQL Server und werde eure Ratschläge befolgen.
Ich danke euch schon mal vor ab für die Hilfe :)
 

Anhänge

  • versuch aufgabe v.2.jpg
    versuch aufgabe v.2.jpg
    31,5 KB · Aufrufe: 4

akretschmer

Datenbank-Guru
Beiträge
9.846
Hier mein zweiter Versuch für die Aufgabe 1.
Bei Aufgabe 3 war nur das mit der PLZ falsch?
Nein. Was passiert bei mehr als 1 Ausleihe pro Tag? Was bei mehr als 1 Reservierung pro Tag? Deine Exponat-tabelle, was passiert, wenn neben Instrumenten, Kleidung und Deko vielleicht mal Waschmaschinen oder Bierkästen dazukommen?

Für Aufgabe 2 installiere ich mir jetzt den SQL Server und werde eure Ratschläge befolgen.

Den von M$?

Ich danke euch schon mal vor ab für die Hilfe :)
 

studi

Benutzer
Beiträge
11
Ja, hab mir MySQL installiert und übe fleissig.
Habe auch schon Lösungen, die funktionieren...Könntet ihr einen Blick drauf werfen?
Wie kann ich 2f schöner gestalten?
 

Anhänge

  • Aufgaben 2.txt
    1,1 KB · Aufrufe: 4

akretschmer

Datenbank-Guru
Beiträge
9.846
Ja, hab mir MySQL installiert und übe fleissig.
Habe auch schon Lösungen, die funktionieren...Könntet ihr einen Blick drauf werfen?
Wie kann ich 2f schöner gestalten?

2f ist da nicht genannt.

  • warum verwendest Du varchar(3) für Nummern?
  • Wohnort in einem Feld? Was ist mit PLZ, Straße, ...
  • ich sehe keinerlei primary keys
  • ich sehe keinerlei foreign keys
  • deine Artikelnummer ist mal varchar(3) und dann varchar(50)
  • um auf NULL zu prüfen gibt es isnull oder is null, ein Vergleich mit 'NULL' liefert Dir nur Orte mit diesem Namen
 
Werbung:

studi

Benutzer
Beiträge
11
sorry, ich meinte 2j
ich verwende varchar(3) weil es doch z.B. bei Kunde K1 heißt und nicht nur 1
Da Straße usw. nicht genannt ist, habe ich es einfach ignoriert :)
 
Oben