stimmen die Relationen

GlassOne

Benutzer
Beiträge
20
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

GOBildschirmfoto 2013-07-15 um 11.49.01.png
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.731
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!


GOAnhang anzeigen 210

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

GlassOne

Benutzer
Beiträge
20
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
 

akretschmer

Datenbank-Guru
Beiträge
9.731
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?!?

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?



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


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

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

Andreas
 

ukulele

Datenbank-Guru
Beiträge
4.702
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...
 

GlassOne

Benutzer
Beiträge
20
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
 
Werbung:

GlassOne

Benutzer
Beiträge
20
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

  • Bildschirmfoto 2013-07-16 um 11.14.57.png
    Bildschirmfoto 2013-07-16 um 11.14.57.png
    97,4 KB · Aufrufe: 8
Oben