Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Probeklausur

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von studi, 19 Juni 2013.

  1. studi

    studi Benutzer

    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:

  2. akretschmer

    akretschmer Datenbank-Guru

    Wie ist Dein bisheriger Ansatz?

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

    studi Benutzer

    Ich versuche gerade die Aufgaben zu lösen...soll ich die dann später hochladen?
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     
  5. studi

    studi Benutzer

    Bei allen Fragen, das ist ja mein Problem...
    Hier mein Lösungsversuch
     

    Anhänge:

  6. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  7. studi

    studi Benutzer

    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 :-(
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Diesen Theoriekram mag ich nicht, sorry. Ich seh nur in Antwort 3 ein PLZ int(5), das ist fail.
     
  9. ukulele

    ukulele Datenbank-Guru

    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.
     
  10. akretschmer

    akretschmer Datenbank-Guru

    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 ;-)
     
  11. studi

    studi Benutzer

    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:

  12. akretschmer

    akretschmer Datenbank-Guru

    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?

    Den von M$?

     
  13. studi

    studi Benutzer

    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:

  14. akretschmer

    akretschmer Datenbank-Guru

    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
     
  15. studi

    studi Benutzer

    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 :)
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden