Datenbankmodellierung - SOS

  • Hallo liebe Forenmitglieder,

    ich sitze gerade mit hochrotem Kopf vor meinem PC und mir graut der Dinge, die vor mir liegen - denn mein Problem ist zu 100% meine eigene Schuld...
    Ich muss am 31.07.2014 eine Hausarbeit zu einem Relationalen Datenbankmodell abgeben und dachte die ganze Zeit, dass der Abgabetermin erst Ende August ist. Dumm nur, dass ich wirklich GAR NICHT mit diesem Thema klar komme...

    Im Anhang findet ihr meine Aufgabenstellung und meine bisherige Lösung.
    Ich weiß, dass meine Kardinalitäten falsch sind und (wenn ich ehrlich bin) höchstwahrscheinlich auch der ganze Rest :(

    Könnt ihr mir bitte helfen?
    Ich erwarte nicht von euch, dass ihr mir die Lösung gebt, aber vielleicht könnt ihr mir sagen, wo meine Fehler liegen (und bestenfalls was ich falsch mache)? Und was zur Hölle ist ein RDM?

    Ich muss dazu sagen (und das ist keine billige Ausrede), dass ich dieses Semester länger krank war. Mein Prüfungsamt meint zwar, dass ich das Semester auch als Krankensemester hätte nehmen können, aber das kann ich mir schlicht nicht leisten. Würde ich das Semester als Krankensemester anerkennen lassen, müsste ich das Bafög zurückzahlen und dafür müsste ich mich dann wahrscheinlich prostituieren...

  • RDM = relationales datenbank modell da hilft google mit RDM und Datenbank als suchbegriffe bestimmt weiter ;)

    tabelle buch
    buch_id, primary
    name,
    isbn (laut aufgabe nicht nötig, aber das gehört nunmal zu einem buch!!)
    notation (hab ich eben erst gefunden in den objekttypen und beziehungen^^)


    tabelle bestand
    bestand_id, primary
    buch_id (fremdschlüssel verweis auf tabelle 1 buch_id)
    buchnummer (also ob exemplar 1 oder 2 oder 3.. etc)
    status (in den beziehungen unten als signatur bezeichnet) (verliehen etc)


    tabelle benutzer
    nutzer_id primary
    Name,
    Email,
    Adresse

    tabelle ausleihe
    Nutzer-ID, foreign
    Bestands-ID, foreign
    Datum

    Beziehung {Ausleihe:Nutzer}
    eigentlich liegt dem ne n:m beziheung zu grunde, weil n nutzer m bücher ausleihen können
    deswegen is die ausleihe-tabelle eine sogenannte erweiterte mergetabelle, weil du die fremdschlüssel zweier anderer tabellen hast, die zum primärschlüssel gemacht werden können.
    aber da du es ja in dieser tabelle aufgelöst hast, ist die ausleihe: nutzer hier schon richtig mit n:1

    alternativ könntest du in die ausleihe den primary einer separaten mergetabelle setzen und das mergen auslagern, was aber nicht nötig ist beim rdm ;)


    auf den ersten blick scheint alles schon soweit richtig zu sein :)
    berichte bitte mal über dein ergebnis, schule is bei mir ne weile her und im programmier-alltag macht man einfach und schiebt nicht ständig relationen hin und her, wie du es grad tust^^

  • Hallo Synaptic,

    erst mal vielen Dank für deine Antwort!

    Ich hab gestern mit einer Kommilitonin über meiner Arbeit gesessen und daher hat sie sich bereits etwas verändert - siehe Anhang: Datenbank(1).pdf

    Was mein Dozent mit RDM meinte weiß ich jetzt auch (siehe: )


    Zu deiner Antwort (und bitte verzeih, wenn meine Fragen dämlich sind, ich würd nicht fragen, wenn ich es besser wüsste)
    - Status und Signatur sind nicht dasselbe - was du da geschrieben hast ("in den beziehungen unten als signatur bezeichnet") versteh ich nicht.
    - Gleich daneben: Verliehen? Huh?
    - Was sind mergetabellen? Oder mergen? O.O

    Zu meiner Arbeit bis jetzt:
    - Kannst du dir bitte die Kardinalitäten noch mal ansehen? Da hat sich was geändert.
    - In der Aufgabenstellung steht: "Benutzen Sie folgende grafische Repräsentation für alle paarweisen Objektbeziehungen. Definieren Sie den Beziehungstyp und erläutern Sie, unter welchen Bedingungen der Beziehungstyp Gültigkeit hat."
    Ich habe die grafische Repräsentation, die Definition des Beziehungstyp (meint er damit funktional abhängig und so was?) habe ich nicht, ebenso bin ich mir nicht sicher, dass ich die Erläuterung so gemacht habe, wie er sie haben will. Das liegt wohl daran, dass ich nicht weiß, was er will :(

    Ich werde mich jetzt mal mit der Transformation von ERM zu RDM befassen. Sicher werde ich dazu auch noch tausend Fragen haben -- Gott bin ich froh, dass es schlaue Menschen gibt, die ihr Wissen im Internet teilen... ^^

    Dir einen schönen Sonntag (falls du das überhaupt heute liest)
    c

  • also in der neuen pdf..
    ok dass du den status nochmal auslagerst ist verständlich wegen der dritten normalform, aber in der praxis nicht relevant, weil der status eigentlich ja nur der textuelle vermerk ist, der wird später in der abfrage alles etwas verkomplizieren, weil du nur für den wert "verliehen" nen join machen musst, denn in der einen tabelle haste ja nur die id, die für "verliehen" steht.

    zu deinen fragen:
    du hast in der einen pdf unten bemerkungen zu den beziehungen stehen und daher ging ich dafon aus, dass status und signatur desselbe wären.
    mit "verliehen" wollte ich hinweisen auf die zustände, die so ein buch haben kann.
    merge ist englisch und heisst verschmelzen/zusammenführen
    folgerichtig ist die mergetabelle jene form von tabelle mit der man n:m-beziehungen aufschlüsselt um wieder eine 1:n beziehung zu erhalten.

    du brauchst kein 1,1 zu schreiben, wenn etwas 1 ist dann brauchts nichts weiteres
    0,1
    1
    n
    sind meines wissens die kardinalitäten
    n kann 0 bis unendlich sein
    1 nur 1
    0,1 ist 0 oder 1

    und mit der beschreibung is prosa, so will ich es grad mal nennen, gibt es immer verschiedene ansichten, die das gleiche meinen.
    zB bestand verwaltet in ausleihe (1:n) man kann auch sagen: die ausleihe verwaltet den bestand oder 1 ausleihe hat 0 bis unendlich bestände
    oder 0 bis unendlich bestände sind teil von einer ausleihe

    aber die kardinalität bleibt dennoch gleich^^ denn der bestand repräsentiert ja immer nur 1 buch und seinen status, aber die verwirrung is perfekt ;)

    ich dneke weiterhin, dass du auf dem richtigen weg bist, hab aber grad nicht die zeit beide files zu vergleichen.

    und zum teilen von wissen: das kostet ja nix..^^ und schlau .. naja ich bins nich ;)

  • Danke - schon wieder :)
    Dass die Kardinalitäten richtig sind, freut mich ungemein, ich hab da echt viel drüber nachgedacht.
    Mit der Schreibweise glaube ich dir gerne, dass es auch einfacher geht, aber ich halte mich da mal an die Vorgabe meines Dozenten.

    Ich hab gerade die RDM-Aufgabe fertig (denke ich) kopier die einfach mal so hier rein -- das ewige Umwandeln von odt in pdf nervt etwas...

    [FONT=Calibri,Bold]Transformation ERM in RDM[/FONT]

    [FONT=Calibri,Bold]S{Buch, Bestand}[/FONT]

    [FONT=Calibri,Bold]1,1[/FONT]
    [FONT=Calibri,Bold]RBuch (Buch-ID, Name, ISBN, Notation)
    RBestand (Bestands-ID, Buch-ID, Signatur)[/FONT]
    [FONT=Calibri,Bold]Da beide Relationen mehrere Attribute enthalten, werden Fremdschlüssel eingefügt. Fremdschlüssel: Bestands-ID.[/FONT]

    [FONT=Calibri,Bold]S{Bestand, Status}[/FONT]
    [FONT=Calibri,Bold]1,1[/FONT]
    [FONT=Calibri,Bold]R[/FONT][FONT=Calibri,Bold]Bestand[/FONT][FONT=Calibri,Bold] ([/FONT][FONT=Calibri,Bold]Bestands-ID[/FONT][FONT=Calibri,Bold], [/FONT][FONT=Calibri,Bold]Buch-ID[/FONT][FONT=Calibri,Bold], Signatur)
    R[/FONT][FONT=Calibri,Bold]status [/FONT] ([FONT=Calibri,Bold]Bestands-ID[/FONT], Vermerk, Standort)
    [FONT=Calibri,Bold]Da beide Relationen mehrere Attribute enthalten, werden Fremdschlüssel eingefügt. Fremdschlüssel: Bestands-ID.[/FONT]

    [FONT=Calibri,Bold]S {Bestand, Ausleihe}[/FONT]
    [FONT=Calibri,Bold]1,n[/FONT]
    [FONT=Calibri,Bold]RBestand (Bestands-ID, Buch-ID, Signatur)
    RAusleihe (Nutzer-ID, Bestands-ID, Datum) [/FONT]
    [FONT=Calibri,Bold]Da beide Relationen mehrere Attribute enthalten, werden Fremdschlüssel eingefügt. Da es sich um eine 1,n Beziehung handelt, erhält die Relation den Fremdschlüssel, von der die einmalige Beziehung ausgeht: Bestand. Fremdschlüssel: Bestands-ID.[/FONT]

    [FONT=Calibri,Bold]S {Ausleihe, Nutzer}[/FONT]
    [FONT=Calibri,Bold]1,n[/FONT]
    [FONT=Calibri,Bold]RAusleihe (Nutzer-ID, Bestands-ID, Datum)
    RNutzer (Nutzer-ID, Name, Adresse, Email)[/FONT]

    [FONT=Calibri,Bold]Da beide Relationen mehrere Attribute enthalten, werden Fremdschlüssel eingefügt. Da es sich um eine 1,n Beziehung handelt, erhält die Relation den Fremdschlüssel, von der die einmalige Beziehung ausgeht: Ausleihe. Fremdschlüssel: Bestands-ID.[/FONT]

    Ich seh gerade, dass jetzt alles normal unterstrichen ist. Bei mir ist die Bestands-ID immer nur gestrichelt unterstrichen, weil Fremdschlüssel.

  • Hallo synaptic,

    sorry, dass ich ne Weile nicht geschrieben habe - ich musste noch mal ins Krankenhaus... Dafür hab ich aber ne Verlängerung bis kommenden Freitag. Yay.

    Mir wurde jetzt gesagt, dass ich bei der Tabelle Nutzer die Adresse aufspalten muss, denn die einzelnen Felder müssen atomar sein. Also Adresse darf nicht Straße UND Hausnummer UND PLZ UND Stadt enthalten sondern muss für jedes Feld eine einzelne Spalte bekommen.

    Das ändere ich als nächstes.

    Danach steht dann die Änderung in den Bildern an - lästig aber nicht schwer.

    Der Teil mit der dritten NOrmalform wird noch mal spannend, aber eigentlich habe ich das verstanden, denke ich..

    Und dann die Workbench :/

    Wenn ich das habe, würde ich alles noch mal hochladen. Schaust du noch mal drüber, wenn's soweit ist?

  • Okaaaay....
    Dieses ganze Themengebiet landet definitiv auf meiner Hass-Liste.

    Ich hab die neueste Version hier:Datenbank310714.pdf
    Keine Ahnung, wieso er immer ein zusätzliches Bild oben einfügt - der Rest ist aber so, wie er sein soll.

    Was die Workbench angeht:

    ICH HASSE DIESEN MISTIGEN MIST!!! SO EIN VERFLUCHTER DRECK!!!
    uff...
    Das tat gut.

    Ich soll eigentlich die Version 5.2.47 verwenden, aber die kann ich irgendwie nicht downloaden. Also hab ich mir 6.1.7 (angeblich auf deutsch, ha. ha. ha.) geladen und versuche mich nun an dem Erstellen des EER Modells.
    Ich komm aber mal so gar nicht klar.
    Ich kann keine Verbindungen einfügen, keine Fremdschlüssel und generell einfach nur... HÄ?

    Kannst du mir da bitte helfen? Oder irgendwer anders?

  • die gibt des direkt bei mysql:
    http://dev.mysql.com/downloads/workbench/5.2.html
    erster treffer bei google mit suchwörtern:
    "mysql workbench 5.2.47 download"
    und verabschiede dich von dem vorhaben in der programmierung alles auf deutsch zu suchen/finden.
    da ist englisch nunmal an platz 1 und deswegen solltest du englisch und fachenglisch in wort und schrift beherrschen :)

    nen tutorial für die bench kann ich dir leider nicht geben, ich hab die vor 4 oder 5 jahren das letzte mal benutzt.
    aber ich fand das programm damals nicht so kompliziert.
    ich glaube (und jetzt spricht konfuzius) du musst das problem viel früher suchen. Du hast den ganzen scheiss grundlegend drauf aber hast eine innere sperre dagegen, wenn du die weg bekommst wird der rest für dich ein kinderspiel :)

    wenn du jetzt schon kotzt, was machste denn, wenn auf einmal subselects auf den plan kommen oder gar no-sql?
    viel erfolg

  • Hallo Synaptic :)

    Eben gerade habe ich die Hausarbeit abgegeben - ich bin soooo froh, das hinter mir zu haben.

    Grundsätzlich hast du mit dem was du geschrieben hast schon Recht (außer mit dem Download, auf die Idee bin ich selber gekommen - am Ende hab ich mir das auf Arbeit runtergeladen, da ging's auf einmal), aber ich muss nach dieser Hausarbeit nie wieder was mit Datenbanken machen - ich studiere um Bibliothekarin zu werden. Wozu ich dabei allerdings mit diesem ganzen Zeug konfrontiert werde, ist mir schleierhaft.

    Aber egal, die nächste Hausarbeit steht schon an - und ich hab wieder keinen Plan (mit google cse eine Suchmaschine erstellen - falls du Bock hast... ;) )

    Ich wollt nur noch mal Danke sagen - wenn ich ein Ergebnis habe, poste ich es hier. Na ja... zumindest, wenn ich bestanden habe ^^

    Liebe Grüße
    c