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

stimmen die Relationen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von GlassOne, 15 Juli 2013.

  1. GlassOne

    GlassOne Benutzer

    Hallo,

    seit 4 Wochen lese ich Bücher über Datenbankgrundlagen und MySQL.
    An einem eigenen kleinen Testprojekt versuche ich die Dinge aus den
    Büchern um zu setzen und wollte mal nach fragen, ob das so stimmt,
    was ich bisher gemacht habe!

    In der Tabelle EBuecher sind die Bücher mit den informationen zum buch und jede ISBN gibt es nur einmal.
    In der Tabelle Autoren werden mehrere Kontakte hinzugefügt, die zu der ISBN des Buches passen.
    Also es kann nur ein Autor sein oder mehrere.
    Weiter habe ich die Tabellen dann Atomisiert.

    Vielen Dank

    GO Bildschirmfoto 2013-07-15 um 11.49.01.png
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Du hast zwar schön versucht zu normalisieren, aber Vorname und Nachname halte ich an der Stelle für übertrieben. Was macht Du mit "Hans Peter Müller"? Dafür hast bei den Sachen wie Telefon/Mail/soziale Netze ein Problem: was machst Du, wenn jemand 2 Handys privat hat oder 3 Mailadressen? Geburtstag als varchar(45) zu speichert ist ein ganz grober Fehler.

    Ach ja: wie prüfst Du, ob die ISBN gültig ist? Es gibt Datenbanken, die haben da einen passenden Typen, der die Prüfung Dir abnimmt:

    Code:
    test=*# select '3-8266-1337-6'::isbn;
         isbn
    ---------------
     3-8266-1337-6
    (1 row)
    
    test=*# select '3-8266-1337-7'::isbn;
    ERROR:  invalid check digit for ISBN number: "3-8266-1337-7", should be 6
    LINE 1: select '3-8266-1337-7'::isbn;
    
    Das mal so als Hinweis auf PostgreSQL ;-)
     
  3. GlassOne

    GlassOne Benutzer

    Vielen Dank,
    ja das Geburtsdatum hatte ich übersehen und in DATE geändert.
    Wenn man mit Datenbanken anfängt und sich da durcharbeitet ist dann immer die Frage, wie weit man geht?
    Es gibt ja noch keine erfahrungswerte für mich.
    Es heisst ja man sollte keine doppelten Einträge haben, da es dann halt nicht mehr relational ist?!?
    Wenn jemand zwei Vornamen hat, ist das in der Tat ein Problem, sowie mehrere Telefonnummern, emails usw.
    Das ist ja heutzutage gang und gebe.

    Die Zwischentabelle Autoren habe ich gemacht, damit zu einem Buch mehrere Autoren gespeichert werden können.
    Ich wollte halt nicht in einem Feld ein Array Datentyp abelegen, da es unübersichtlich ist und schwer zu handhaben.

    Zwischentabellen könnte man auch bei Telefonnummer und email machen um das Problem zu lösen.

    Die ISBN werden aus dem eBook extrahiert und durch eine Java Methode noch mal auf Plausibilität geprüft.

    Stimmen denn die Kardinalitäten und die Foreingkeys den so einigermassen?

    Danke

    GO
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Nun ja, gleiche Namen für 2 unterschiedliche Personen lassen sich nicht immer verhindern. Natürlich könnte der Personalleiter einem 'Max Mustermann' als Neubewerber für einen Job sagen: 'sorry, geht nicht, wir haben schon einen Mitarbeiter mit dem Namen', aber was macht man bei Hochzeit? 'Ey, du darfst nicht heiraten, sonnst fliegste', oder wie?



    ACK.


    Verhindert nicht, daß jemand mit einem DB-Client seiner Wahl einen ungültigen eingibt.

    Andreas
     
  5. GlassOne

    GlassOne Benutzer

    ??

    In meiner Spezifikation wurde berücksichtigt, das keine ISBN per hand eingegeben werden darf.
    Da es sich um eBooks handelt, werden die Schlüssel-Informationen ausschliesslich aus den Dateien ermittelt.

    GO
     
  6. ukulele

    ukulele Datenbank-Guru

    In Autoren verweist du auf Kontakte. Beides beinhaltet Vor- und Nachname IDs, das ist doppelt gemoppelt. Doppelnamen können auch in einem Feld stehen, so atomar muss es dann doch nicht sein...
     
  7. GlassOne

    GlassOne Benutzer

    Ja das hat mich auch etwas verwundert.
    In MySQL Workbench erstelle ich das EER und als ich die 1:1 Identifying Relationship Verbindung gemacht habe, hat das MySQL Workbench automatisch gemacht?
    Ich verstehe nicht warum, aber ich hatte damit gerechnet, das dann in der Tabelle Autoren "Kontakte_id" als Fremdschlüssel generiert würde.

    Weiss vielleicht jemand warum das so ist, oder ob ich da etwas falsch gemacht habe?
    Ich habe die Vornamen und NAchnamen ID aus der Tabelle Autoren von Hand gelöscht, hoffe nur, das es keine fehlerhaften NAchwirkungen hat?
    GO
     
  8. ukulele

    ukulele Datenbank-Guru

    Du hast MySQL angewiesen irgendetwas automatisch zu erstellen, das klappt nie so richtig optimal :) Du solltest alle Tabellen und Constraints selbst anlegen, das ist meist besser.
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Nein, er hat diese Workbench-GUI das für sich machen lassen. MySQL, bei allem Spott darüber, macht das nicht.
     
  10. GlassOne

    GlassOne Benutzer

    Also ich habe das jetzt mal mit Visual Paradigm gemacht und dort wurden 'nachname' und 'vorname' nicht generiert.
    Allerdings ist das ERR bei VP anders zu lesen. N steht nicht für Not Null, sondern stell Nullable dar.

    Zur Zeit sieht das EER so aus.
     

    Anhänge:

Die Seite wird geladen...

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