AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Datenbankmodellierung

Ein Thema von Asura · begonnen am 12. Apr 2018 · letzter Beitrag vom 16. Apr 2018
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.881 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 13:40
Kann aber wieder zu Inkonsistenzen führen.
Markus Kinzler
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 14:15
Das ist halt das ewige Dilemma (nicht nur in der IT). Komfort, Bequemlichkeit auf der einen Seite führt zu Risiken, Gefahren auf der anderen Seite. Wenn man so will die Unschärfe-Relation des normalen Lebens gewürzt mit einer Prise Murphy .
Ralph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.881 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 14:16
Deshalb gibt es in diesem Punkt kein richtig oder falsch.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 14:26
Kann aber wieder zu Inkonsistenzen führen.
Das ist halt das ewige Dilemma
Deshalb gibt es in diesem Punkt kein richtig oder falsch.
Ich würde da sanft widersprechen. Es ist ein Dilemma, ja, besonders für Entwickler, die haarklein die Detailprobleme in den Griff kriegen müssen. Aber es ist auch eine Frage der Prios und letztlich der Entwicklungskosten/Budget.
Inkonsistenzen sind aber kein Schicksal. Man muss darauf achten, dass keine entstehen (haha). Ja klingt banal doof, aber mit Hilfe moderner Datenbanktechnik, Constraints, Triggern, .. kann man das machen. Bei der (bewussten) Entscheidung, etwas denormalisiert zu speichern, muss man die entstehenden Redundanzen eben auch bewusst absichern mit den geeigneten DB Hilfsmitteln. Soviel Zeit (und Geld) muss sein, ist sicher gut investiert.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#5

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 17:16
Ich glaube wir haben den/die Threadersteller/in irgendwie erschlagen. Hat sich nicht einmal mehr zu Wort gemeldet
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
699 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 18:01
Ich kenne mich mit deutschem accounting nicht aus, aber hier in Kolumbien ist das mit dem Bank-Accounts nur ein Teil der accounts, die man hat. Hier gibt es den PUC (Plan Unico de Cuentas), wo man zu 8-stelligen Account-Nummern Sachen zuordnet, zum Bsp. MwSt noch zu zahlen. Oder offene Rechnungen. Das sind nicht direkt Bank-Accounts, sondern nur identifikatoren um es in Deinem System auseinander zu halten.

Das sieht eher so aus.
Da gibt es dann diverse Vorgaben wie 1 im Title ist immer Activos wie Waren im Lager. 13 in Grupo (Gruppe) sind Schulden, 11 sind Bankkonten. 14 ist das Inventar. Etc.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datenbankmodellierung

  Alt 13. Apr 2018, 19:19
Das würde hier jetzt jeden Rahmen sprengen, die deutsche Buchhaltung zu erklären ^^ Sagen wir mal so: Wo bei euch eine Schraube eingedreht wird, da wird bei uns erstmal eine Maschinenkonstruktionszeichnung für die Maschine zur Schraubenherstellung angefertigt
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Asura

Registriert seit: 10. Jun 2013
87 Beiträge
 
#8

AW: Datenbankmodellierung

  Alt 14. Apr 2018, 13:39
Ich glaube wir haben den/die Threadersteller/in irgendwie erschlagen. Hat sich nicht einmal mehr zu Wort gemeldet
So ungefähr !
Ich wollte mir Zeit nehmen, um alles mir durchzulesen und zu kommentieren! Aber mit der Diskussion bin ich eindeutig überfordert

Ich mach mich mal an die Arbeit und versuche mal die Hilfen zu Kommentieren bzw. mit weiteren Fragen zu füttern!

Das Password würde ich nicht in der DB speichern, sondern nur den Hash dazu.
Das hatte ich tatsächlich vor, ich wollte über MD5 oder SHA1 nach der Erstellung des Benutzerkontos den Hash im Programm selber erstellen und diesen dann auf der Datenbank abspeichern lassen. Beim Login würde ich dann wieder das Passwort als Hash erstellen und diesen mit dem hinterlegten Hash vergleichen.


Vielleicht wäre es eine Idee, nicht den IBAN abzulegen, sondern noch eine Tabelle Banken zu machen + zu verlinken. Dann kannst du auch den BIC + den Namen der Bank ablegen.
Was wäre anhand dessen der Vorteil? Gut ich sehe sowieso ein für mein Vorhaben ist die IBAN nicht notwendig. Meine Intention war dahinter, dass ich eine Art Adressbuch erstelle anhand dessen man später die Buchungen an Personen zuweisen kann. Also die IBAN wäre für die Funktion nicht notwendig.

Die Kategorien würde ich eher als Mainkategorien --> Subkategorien --> Kategorien ablegen, aber vielleicht gibt es für deinen Ansatz einen besonderen Grund. Jetzt spießt sich das etwas.
In den Kategorien sehe ich selber auch noch das größte Problem in der Modellierung.
Ich versuche mal meine Intention hinter dem aktuellen Aufbau zu erläutern:
  • Attribut Costtype ist für mich die Unterscheidung von Fixen und variablen Kosten.
    Diese werden dann in der Tabelle Bookings zugewiesen. Die Tabelle fixed (Fixe Kosten) sollte für das Programm eine Hilfestellung sein, um die Fixe Kosten immer wieder neu in der Tabelle Bookings zu verbuchen und gleichzeitig dem Benutzer eine Möglichkeit zu bieten hier einen Überblick über die Fixe Kosten zu haben und diese leicht abändern zu können.
  • Attribut Booktype ist dafür da einfach über ein Boolean Wert festzustellen: Ist dies eine Minusbuchung oder Plusbuchung. Gut ich könnte das auch einfach anhand der Zahl (Amount aus Tabelle Booking) ermitteln, die ja entweder ein Minus oder kein Minus hat. Wäre eventuell auch eine bessere Lösung.

Ich benenne den PK einer Tabelle immer als <Tabellenname>ID, denn heißen die FKs und die PKs gleich. Jedenfalls aber sollten die FKs die referenzierte Tabelle wiedergeben (BankAccountsID vs BankID als FK zu bankaccounts.ID).
Nur damit ich das verstanden habe als Beispiel:
In der Tabelle bankaccounts wäre dann mit deinem Verfahren es nicht UserID sondern Users.ID bzw. UsersID?
Sprich der FK hat immer den Namen der referenzierten Tabelle als (ich nenne es mal) Pre Klausel?


Reservierte Bezeichner sind immer problematisch, darum würde ich "Type" nicht nehmen, sondern "TypeFixed", ebenso "Date". Generell bevorzuge ich Bezeichner, die mir sagen, was das Attribut beinhaltet + Type ist sehr nichtssagend. Ich würde auch abgekürzte Bezeichner (Evalu) vermeiden.
Gut, das werde ich ändern, damit kommen wir wohl auch zu einem Großen Thema: Mehrzahl oder Nicht:

Es wird vllt hier ein paar schmerzen, aber ich finde zum Teil ist der Plural für mich Sinnhaft. Ich kann die Argumentation absolut nachvollziehen. Ich kann aber anhand des Plurals für mich schon direkt festlegen: Das ist eine Tabelle und kein Attribut und es liest und schreibt sich für mich später bei der Erstellung einfach besser, wenn ich den Plural benutze. Kann dies schwer erklären wieso das der Fall ist.


Möge man mich korrigieren, aber mMn müsste die "categorie"-Geschichte folgender Maßen sein:

Tabelle "maincategories" = ID, UserID, Name
Tabelle "categories" = ID, BookType, Costtype, MainCatID
Tabelle "subcategories" = ID, UserID, Name, CatgID, MainCatID

Du hast es ja hierarchisch aufgebaut.
Ja da hast du Recht. Meine Intention war dahinter als Beispiel:
Maincategorie: Verpflegung das umschließt die Subcategorien: Nahrung, Getränke, Tabak etc.
Sprich ich kann später bei der statistischen Auswertung meiner Kontodaten mir anhand von Masken/Filter Eingaben die Ergebnisse anzeigen, die mich wirklich interessieren. Beispiel: Wie viel gebe ich im Monat nur für Nahrung aus, wie viel für Getränke etc.

Braucht "bookings" keine User-Referenz? Es wäre zudem auch mal hilfreich, wenn man die Beziehungen abgebildet werden, daraus lässt sich auch immmer auf die Sinnhaftigkeit eines DB-Modells schließen.
Habe ich deswegen nicht gemacht, da ein User mehrere Bankaccounts haben kann und ein Bankaccount mehrere Buchungen. Sprich in der Buchung an sich ist ja schon die UserID anhand der BankAccountID hinterlegt. So dachte ich mir das.

Des Weiteren wundere ich mich, dass du nach den Beziehungen fragst, da die doch in der Grafik abgebildet sind anhand den Verbindungen. Der Senkrechte Strich bedeutet eine 1 und der umgedrehte Pfeil das n. Sprich: 1:n Beziehungen habe ich dort gekennzeichnet.


Zu der fortgefolgten Diskussion kann ich mich nicht zu äußern, da ich wirklich nur ein Anfänger in Sachen Datenbanken bin. Also wenn hier, vor dem Hintergrund meiner Erklärung zu den Kategorien (siehe erste Kommentierung zu der Antwort von StepByStep), mir ein passendere Modelllösung vorgeschlagen wird mit einer kleinen Erklärung weshalb, dann würde mir das sehr viel mehr helfen.
Ich denke weitere Kategorisierungsmaßnahmen würden auch nicht hinzukommen da zwei Kategorien zur Gliederung eines Buchungseintrages ausreichen, um seine Funktion wiederzuspiegeln.

Ich bitte vllt auch noch mal die Lösung mit Evalution näher zu begutachten.
Mein Vorhaben ist hier, dass pro Bankaccount ein Bewertungssystem vergeben wird (Sprich ein Benutzer kann mehrere besitzen). Bewertungssystem sehe ich mit einer persönlichen Einschätzung über die Notwendigkeit der Buchung. Das lässt später wieder in statistischen Auswertungen heran ziehen, indem mir das Programm sagt: 25% deiner Kosten sind nach deinem Bewertungsschema wirklich notwendig (zum Beispiel 1 = sehr notwendig, 6 = unnötig / Luxus).

So lässt sich leicht herausstellen: Wo habe hohe Ausgaben und wie werden diese bewertet. Im vorangegangen Beispiel: Wie notwendig sind diese Ausgaben.

//Edit

Ergänzend zu dem Kategorien will ich diese natürlich dem Nutzer überlassen, diese frei einzustellen und zu bearbeiten.
In Verbindung mit dem Bewertungssystem kann man darüber auch nachdenken statt die Buchung als einzelnes zu bewerten mit dem Benotungssystem, eher vllt die Kategorien zu bewerten.
Ein Problem sehe ich auch noch, was passiert wenn Kategorien gelöscht oder ersetzt werden. Da die Buchung ja Kategorien zugeordnet ist.

Geändert von Asura (14. Apr 2018 um 14:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#9

AW: Datenbankmodellierung

  Alt 14. Apr 2018, 17:20
Ein Problem sehe ich auch noch, was passiert wenn Kategorien gelöscht oder ersetzt werden. Da die Buchung ja Kategorien zugeordnet ist.
Die löscht du nicht im Sinne von DELETE FROM ... sondern indem du ein Markerfeld setzt das eine Kategorie als gelöscht markiert. Auswählbar/sichtbar ist sie dann nicht mehr für neue Datensätze, wird aber noch (üblicherweise ausgegraut) in bestehenden Datensätzen angezeigt.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Datenbankmodellierung

  Alt 14. Apr 2018, 23:05
Ich bitte vllt auch noch mal die Lösung mit Evalution näher zu begutachten.
Mein Vorhaben ist hier, dass pro Bankaccount ein Bewertungssystem vergeben wird (Sprich ein Benutzer kann mehrere besitzen). Bewertungssystem sehe ich mit einer persönlichen Einschätzung über die Notwendigkeit der Buchung. Das lässt später wieder in statistischen Auswertungen heran ziehen, indem mir das Programm sagt: 25% deiner Kosten sind nach deinem Bewertungsschema wirklich notwendig (zum Beispiel 1 = sehr notwendig, 6 = unnötig / Luxus).

So lässt sich leicht herausstellen: Wo habe hohe Ausgaben und wie werden diese bewertet. Im vorangegangen Beispiel: Wie notwendig sind diese Ausgaben.
Ein System in dem Buchungen gespeichert werden ist das Eine, etwas ganz anderes ist es gleichzeitig eine "Bewertung" einzutragen. Wer soll denn dazu Berechtigt sein?

Im Allgemeinen hat ein Angestellter eines Unternehmens die Berechtigung bis zu einer bestimmten Summe einen Auftrag zu zeichnen. Dieser Auftrag wird im Allg. auch nicht aus einer Laune heraus erteilt sondern steht im Normalfall im Kontext der Unternehmenspolitik. Wenn die Unternehmensführung der Meinung ist, daß Aufträge die ein Angestellter nicht unbedingt notwendig für das Unternehmen sind, wird sie dies vllt. mit Hilfe der vorhandenen Buchungsdaten belegen, aber eine Bewertung wohl nicht unbedingt in der Buchungsdatenbank ablegen.

http://www.spiegel.de/forum/karriere...-208608-7.html

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz