Versicherung Datenmodell

Qlutcha

Benutzer
Beiträge
7
Hallo liebe Datenbank Community!
Ich benötige unbedingt Hilfe mit einen Thema. Gefragt ist ein Datenmodell für eine Versicherung:
Ihre Aufgabe ist es ein Datenmodell zu entwickeln. Dazu werden Ihnen folgende Design-Vorgaben zur Verfügung gestellt:
gefragt.png
Ich brauche insbesondere Hilfe mit dem Punkt:
Jeder Anlassfall (z.B. Wasserrohrbruch bei einer Hausratversicherung, Autounfall, usw.) zu einem Versicherungsvertrag muss gespeichert werden.
Mein derzeitiges Modell:
DerzeitigesModell.png
Es wurde bereits bewertet und Anlässe ist falsch. (Es sind mehr Fehler enthalten, aber unbedingt ist Anlässe zu verbessern)
Zudem wurde mir gesagt, dass ich folgendes beachten muss:
Schadensfälle
Zuweisung zu der Person, die das Geld kriegt
Ich wäre sehr sehr dankbar für jede Art von Hilfe! :)
 
Werbung:
Ich kann mit solchen Bilder nix anfangen, sorry. Zumindest nicht viel.

  • Dein "Modell" zeigt eh nur einen Ausschnitt...
  • VertragBegin, VertragEnde, VertragDatum: varchar(x). Damit wirst Du nicht in der Lage sein, damit Laufzeiten zu berechnen, zu berechnen, oder ein Schadensfall abgedeckt ist etc.
  • KundePLZ varchar(45). Wirklich?
  • Verträge können bei Dir durch Vertreter, Hauptverwaltung oder beides erfolgen. Hint: dafür wurden Check-Constraints erfunden
  • Geldbeträge als INT?

Tiefer will ich in den Kram nicht reinschauen...
 
Ich kann mit solchen Bilder nix anfangen, sorry. Zumindest nicht viel.

  • Dein "Modell" zeigt eh nur einen Ausschnitt...
  • VertragBegin, VertragEnde, VertragDatum: varchar(x). Damit wirst Du nicht in der Lage sein, damit Laufzeiten zu berechnen, zu berechnen, oder ein Schadensfall abgedeckt ist etc.
  • KundePLZ varchar(45). Wirklich?
  • Verträge können bei Dir durch Vertreter, Hauptverwaltung oder beides erfolgen. Hint: dafür wurden Check-Constraints erfunden
  • Geldbeträge als INT?

Tiefer will ich in den Kram nicht reinschauen...
Leider kann ich die .mwb Datei nicht hochladen. Gefragt ist nur das Datenmodell und die Datentypen spielen keine Rolle, hätte ich reinschreiben sollen, entschuldigung. Entscheidend ist nur "Anlässe", denn nur das muss ich mir ausbessern. Ich wäre sehr dankbar wenn Sie mir helfen.
Link zum Modell: Gofile
 
Geldbeträge als INT?
Das ist durchaus üblich um Rundungsfehler zu vermeiden. Man speichert z.B. den Betrag als Cent (oder 1/10 Cent - was auch immer für eine Genauigkeit gefordert ist).

Ansonsten stimme ich akretschmer aber zu. Ein Datum in einer varchar Spalte zu speichern ist ein Riesenfehler. Dafür wurde DATE erfunden (oder, wenn die Uhrzeit auch wichtig ist TIMESTAMP).

Ich bin kein Freund davon den Tabellennamen nochmal in jeder Spalte zu wiederholen, aber das ist durchaus auch persönlicher Geschmack.

Auch die Namensgebung ist nicht ganz konsistent. Mal wird "id" als Präfix verwendet, mal als Suffix. Mal verwendest Du pascal_case, mal CamelCase und manchmal beides. Das macht technisch keinen Unterschied, aber auf lange Sicht macht es das Modell leichter verständlich und auch das Schreiben von SQL Abfragen wird letztendlich leichter. Spaltennamen wie VersicherungsprämieBezahlung_idVersicherungsprämieBezahlung oder Hauptverwaltung_idHauptverwaltung verwirren mehr als dass sie helfen.

Ich würde auch Sonderzeichen in den Namen vermeiden, es gibt immer wieder Software (Tools, Programmiersprachen bzw. Bibliotheken) die damit Probleme haben.
 
Das ist durchaus üblich um Rundungsfehler zu vermeiden. Man speichert z.B. den Betrag als Cent (oder 1/10 Cent - was auch immer für eine Genauigkeit gefordert ist).

Ansonsten stimme ich akretschmer aber zu. Ein Datum in einer varchar Spalte zu speichern ist ein Riesenfehler. Dafür wurde DATE erfunden (oder, wenn die Uhrzeit auch wichtig ist TIMESTAMP).

Ich bin kein Freund davon den Tabellennamen nochmal in jeder Spalte zu wiederholen, aber das ist durchaus auch persönlicher Geschmack.

Auch die Namensgebung ist nicht ganz konsistent. Mal wird "id" als Präfix verwendet, mal als Suffix. Mal verwendest Du pascal_case, mal CamelCase und manchmal beides. Das macht technisch keinen Unterschied, aber auf lange Sicht macht es das Modell leichter verständlich und auch das Schreiben von SQL Abfragen wird letztendlich leichter. Spaltennamen wie VersicherungsprämieBezahlung_idVersicherungsprämieBezahlung oder Hauptverwaltung_idHauptverwaltung verwirren mehr als dass sie helfen.

Ich würde auch Sonderzeichen in den Namen vermeiden, es gibt immer wieder Software (Tools, Programmiersprachen bzw. Bibliotheken) die damit Probleme haben.
Vielen Dank für Ihr Feedback! Allerdings spielt das in dieser Übung keine Rolle und lediglich das Erfassen von "Schadensfällen/Anlässen" muss ich ausbessern, da es falsch ist und ich muss es unbedingt richtig haben bis morgen :(.
 
wenn das die Tabelle "Anlass" sein soll: die hat keine Verbindung zum Vertrag.

Gut, man kann Beträge als INT speicherm das Argument von @castorp kenne ich - ich wollt es nur hinterfragen.
Im Bild unten ist "Hausratsversicherung", und das ist ein Punkt in der Auflistung der Versicherungsarten. Vermutlich stehen weiter unten nun noch Auto, Rechtschutz, Leben, ... Damit ist aber die Forderung im ersten Punkt, daß diese Liste erweiterbar sein soll, nicht gegeben. Ich ziehe daher auch meine Aussage bzgl. Normalisierung zurück.

Wenn Datentypen keine Rolle spielen, dann kann man über den, der die Aufgabe gestellt hat, auch nur noch lachen.
 
wenn ich mir so Deine Fragen und das Bild so ansehe: Du hast bis jetzt genau WAS gemacht?

Laß mich raten: Dir hat das jemand gemacht, er hat sich auch halbwegs Mühe gegeben (Datentypen sagten wir ja schon), und nun sollst DU ein Detail verbessern, hast aber KOMPLETT keinen Plan. Kann das hinkommen?
 
wenn das die Tabelle "Anlass" sein soll: die hat keine Verbindung zum Vertrag.

Gut, man kann Beträge als INT speicherm das Argument von @castorp kenne ich - ich wollt es nur hinterfragen.
Im Bild unten ist "Hausratsversicherung", und das ist ein Punkt in der Auflistung der Versicherungsarten. Vermutlich stehen weiter unten nun noch Auto, Rechtschutz, Leben, ... Damit ist aber die Forderung im ersten Punkt, daß diese Liste erweiterbar sein soll, nicht gegeben. Ich ziehe daher auch meine Aussage bzgl. Normalisierung zurück.

Wenn Datentypen keine Rolle spielen, dann kann man über den, der die Aufgabe gestellt hat, auch nur noch lachen.
Wenn ich Anlass mit Vertrag in Beziehung setze, würde ich dann das Problem lösen, dass der Anlass keiner Person zugeordnet wird? ("Zuweisung zu der Person, die das Geld kriegt") und wie würde ich das Problem lösen können, dass bestimmte Schadensfälle (z.b Auto kaputt) nur mit Beispielsweise einer Autoversicherung und nicht mit irgendeiner anderen Versicherung erfasst werden? Entschuldigen Sie die "dummen" Fragen, ich bin nicht besonders gut in Datenbankmodellierung :)
 
wenn ich mir so Deine Fragen und das Bild so ansehe: Du hast bis jetzt genau WAS gemacht?

Laß mich raten: Dir hat das jemand gemacht, er hat sich auch halbwegs Mühe gegeben (Datentypen sagten wir ja schon), und nun sollst DU ein Detail verbessern, hast aber KOMPLETT keinen Plan. Kann das hinkommen?
Ich habe das Modell selbstständig erstellt, deshalb ist es auch nicht perfekt. Ich würde ja Freunde fragen, wenn ich ein Problem hätte, leider kenne ich keine, die sich gut auskennen. Deshalb bin ich auch hier, es ist meine letzte Option, ich komme einfach nicht weiter.
 
wenn Anlass und Vertrag in Beziehung ist und Vertrag einer Person (Versicherungsnehmer) zugeordnet ist und dier Versicherungsnehmer auch der Geldempfänger ist, dann?

Bei der Erfassung eines Schadenfalles wird man diesen immer einem Versicherungsvertrag zuordnen, und dieser ist einer Versicherungsart zugeordnet. Also Auto, Hausrat, Haustier, whatever.

Du hast eine Tabelle "Versicherungsart". Laß mich raten: da kommt als VersicherungsartBezeichnung z.B. 'Hausratsversicherung' rein, oder? Zu was dient dann die Tabelle "Hausratsversicherung"?
 
wenn Anlass und Vertrag in Beziehung ist und Vertrag einer Person (Versicherungsnehmer) zugeordnet ist und dier Versicherungsnehmer auch der Geldempfänger ist, dann?

Bei der Erfassung eines Schadenfalles wird man diesen immer einem Versicherungsvertrag zuordnen, und dieser ist einer Versicherungsart zugeordnet. Also Auto, Hausrat, Haustier, whatever.

Du hast eine Tabelle "Versicherungsart". Laß mich raten: da kommt als VersicherungsartBezeichnung z.B. 'Hausratsversicherung' rein, oder? Zu was dient dann die Tabelle "Hausratsversicherung"?
Leider stehe ich komplett auf der Leitung :( Hätten Sie Lösungsvorschlage, wie ich das Problem dann beheben könnte? Ich habe das Modell ja selber erstellt und die Dinge die ich nicht wusste, wie sie zu modellieren sind, sollte ich bis morgen ausbessern.
 
Werbung:
warum so empfindlich?

Hier mal grob ein mögliches Modell. Ganz grob.

Code:
test=# create table versicherungsnehmer (id int primary key, name text, konto text);
CREATE TABLE
test=*# create table versicherungsart (id int primary key, name text);
CREATE TABLE
test=*# create table vertrag(id int primary key, versicherungsart int references versicherungsart, versicherungsnehmer int references versicherungsnehmer, laufzeit daterange);
CREATE TABLE
test=*# create table anlass (id int primary key, vertrag int references vertrag, beschreibung text);
CREATE TABLE
test=*#

Damit kannst Du:
  • einen Anlaß einem vertrag zuordnen
  • über den Vertrag dem Versicherungsnehmer
  • über den Vertrag hat der Anlaß eine Zuordnung zu einer Versicherungsart
  • passende Datentypen für die Laufzeit der Versicherung

Kaffee.
 
Zurück
Oben