Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Review meines EER-Diagramms
echdeneth
myCSharp.de - Member



Dabei seit:
Beiträge: 148
Herkunft: Sachsen, Herrnhut/Zittau

Themenstarter:

Review meines EER-Diagramms

beantworten | zitieren | melden

verwendetes Datenbanksystem: <MySQL>

Moin, wie im Titel angemerkt habe ich ein EER Diagramm der von mir erstellten Datenbank,
mit dessen Hilfe ich eure Meinung zu Datenbankstruktur und Bezeichnung der Spalten erbete.
Attachments
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Was ist die Frage? Wirkt bisschen wie "reingeworfen und macht ihr mal bitte".
Möchtest Du ein Review, weil im passenden Forenbereich dazu ist es nicht...?
[Hinweis] Wie poste ich richtig?

Im Endeffekt kann man an allem Kritik üben
- Naming, vor allem: warum Deutsch? Deutsch hat in der Datenbank genausowenig verloren wie im Code; kA wiesod as im DB Bereich immer noch so weit verbreitet ist. Wenigstens sieht man hier keine Umlaute.
- Warum überall Präfixe?
- Warum Prozess-Status Informationen über Boolsche Werte?
- Struktur...

Ein Datenbank-Aufbau macht man ja mit konkreten Anforderungen - und die kennen wir hier nicht.
Daher kann ein Beitrag entsprechend auch nicht sinnvoll erfolgen.
private Nachricht | Beiträge des Benutzers
echdeneth
myCSharp.de - Member



Dabei seit:
Beiträge: 148
Herkunft: Sachsen, Herrnhut/Zittau

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Was ist die Frage? Wirkt bisschen wie "reingeworfen und macht ihr mal bitte"....

Nein, im Grunde wollte ich Meinungen und Kritik dazu, eben was du unter Kritik geschrieben hast.
Deutsch, weil ich das im Code leichter zuordnen kann
Bools, ich verwende diese Einträge als Flags um die im code behind auszuwerten
Präfixe, wegen der Zuordnung

(Diese Tabellen werden teilweise über mehrere JOINs zusammemgefasst - es gibt eine Klasse in die diese Einträge gelesen werden)

Aber ich lasse mich auch gerne belehren wie man es richtig macht.

In einer zukünfigen Version des Programmes wird auch die DB erneuert, dort Plane ich dann auch die Kritik hier einfließen zu lassen.
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Wenn Du ein Review willst dann verwendet bitte wie deutlich gekennzeichnet den Review-Bereich und beachte die entsprechenden Regeln dort.
Danke.


Ehrliche Frage: hast Du einfach mal drauf losgelegt, oder auch technisch evaluiert?

Du hast hier offenbar ein Buttom Up Vorgehen; meiner Meinung nach entwickelt man halt so kein modernes Datenbank Schema.
Ich finde das macht nur noch in wenigen Szenarien wirklich sinn.

Ein Datenbank-Schema hat Anforderungen, die erfüllt werden müssen - die kennen wir immer noch nicht.
Anforderungen kommen vor allem aus den Business Prozessen - und die kommen aus der Anwendung. Aber da wir diese wie gesagt nicht kennen: so kann man dazu also 0 Feedback geben.

Aber...

- Ich sehe keine Notwendigkeit auf spezifische Dinge wie "PDF" zu referenzien. Aber mir ist auch null klar was "PDF_FTP_Exists" für ne Bedeutung haben soll.
Nicht erkennbar und entspricht auch keinerlei mit bekannter Naming Empfehlungen.
- Präfixe sind für mich Overhead und bringen keinen Mehrwert; ich seh ja Anhand der Tabelle wo ich bin (und gelten auch als Schema Smell)
- Die Information "Geliefert" als Bool bringt mir in der realen Welt nichts; ich will ja meist mehr wissen - mindestens das Datum.
Ergo würde ich das eher als Nullable Date hinterlegen.

Von MySQL würde ich generell - wie eigentlich fast die gesamte Community - mittlerweile großen Abstand nehmen.
MariaDB ist ja zB aufgrund der politischen Problematik mit MySQL entstanden. Selbst in der PHP Welt gibts mittlerweile große Abstandsversuche von MySQL.

Daher kann ich mich persönlich gar nicht mit dem Schema anfreunden und empfehle Dir ein kompletten Umschwung auf Code First und dem Top Down Vorgehen.

---

Das Problem mit dem Naming in der Form ist auch, dass es enormen Aufwand (und Fehleranfälligkeit) im Code bedeutet.
Bin ich keinerlei Fan von - genausowenig von Deutsch in Code oder DB.
private Nachricht | Beiträge des Benutzers
KroaX
myCSharp.de - Member

Avatar #avatar-4080.jpg


Dabei seit:
Beiträge: 315
Herkunft: Köln

beantworten | zitieren | melden

Zitat von Abt
Von MySQL würde ich generell - wie eigentlich fast die gesamte Community - mittlerweile großen Abstand nehmen.
MariaDB ist ja zB aufgrund der politischen Problematik mit MySQL entstanden. Selbst in der PHP Welt gibts mittlerweile große Abstandsversuche von MySQL.

Hast du dazu etwas mehr Background? Vielleicht nen Artikel oder zwei die du gelesen hast? Hab davon gar nichts mitbekommen aber es würde mich interessieren wo die Probleme bestehen und wie sie entstanden sind.
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3429
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo KroaX,

schau mal ins Wikipedia: MySQL, Absatz "Kritik"

ich denke das fasst es einigermaßen kurz und bündig zusammen.

Gruß, MarsStein
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von MarsStein am .
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1796
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Aus Oracles Sicht hat man halt einen starken Konkurrenten aufgekauft und lässt ihn langsam verdorren und versucht nur noch mit den Resten davon Geld zu machen.

Was Oracle aber nicht bedacht hat, viele Nutzer gehen dann von MySQL entweder zu MariaDB oder gar PostgreSQL.
Hier hat PostgreSQL in den letzten Jahren sehr viele MySQL User gewonnen, die einfach wegen unzufriedenheit abgewandert sind.
Nicht umsonst hat Oracle in den letzten Jahren seine Lizenzkosten mehrmals verdoppelt.

Ich würde auch keinem mehr in Richtung MySQL schicken.
Aus Kostengründen aber auch nicht zu Oracle ;)

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
echdeneth
myCSharp.de - Member



Dabei seit:
Beiträge: 148
Herkunft: Sachsen, Herrnhut/Zittau

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Ehrliche Frage: hast Du einfach mal drauf losgelegt, ...
In Ermangelung des Wissens um das konkrete Vorgehen, ja... (wir hatten noch keine Datenbanken in der Umschulung)

Bedenke hier bitte auch Ockhams Rasiermesser (Sie Sachlage ist viel simpler als du annimmst...)

Die Anforderungen sind folgende:
Es wird eine CSV geladen und in die DB übertragen.
Diese enthält die Auftragsnummer und die Artikel der Bestellung (und Menge etc).
Die Struktur der DB selbst hatte zunächst keine konkreten Anforderungen,
sie entstand erst nach und nach und ich musste sie mir selbst ausdenken.

Ich brauchte eine Artikelliste (als Referenz) und die Artikel sollten eine Priorität zugewiesen werden (Priority, es müsste eig. eine 1:1 Beziehuing sein) können. Ich wählte eine Relationale Datenbankstruktur.

Zuerst waren die Normalen Artikel (Be_Artikel, Bestellungen), der Rest kam später hinzu.
Jeder Eintrag in Be_Bestellungen stellt ein Artikel samt Bestellmenge dar, wieviel geliefert (Geliefert) wurde, und einen Flag um schnell zu Ermitteln ob ausgeliefert (istAusgeliefert) wurde.
Jeder Artikel in Be_Bestellungen ist einer Auftragsnummer (Bestellungen.Be_Bestellnummer) zugeordnet.
Jeder Auftrag enthält einen Flag ob dieser angesehen (Visit) oder komplett Ausgeliefert wurde.
Ebenso einem Artikel in der Referenz. Somit kann jeder Bestellung die Artikel und deren Priorität zugeordnet werden.

PDF_FTP_Exist - damit über eine Abfrage ersichtlich ist ob eine PDF auf einem FTP-Server dazu existiert, wie es der Name sagt. In der Anwendung kann ich dann ohne FTP-Anfrage checken ob eine zugehörige PDF existiert.

Der Bool zu Geliefert ist ausreichend - Datum war aus Sicht des Auftraggebers nicht notwendig. Das mit dem Nullable-Date würde ich aber so in einer neuen DB übernehmen. Ich hatte jedoch in der Vergangenheit das Problem diese Null-Werte auszulesen (Exceptions...).

Dem Rat mit MariaDB werde ich wahrscheinlich nachkommen. je nach dem wie sich ein Umstieg gestaltet.
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
private Nachricht | Beiträge des Benutzers
Brymax
myCSharp.de - Member



Dabei seit:
Beiträge: 22

beantworten | zitieren | melden

Zitat
wie es der Name sagt

Mit sowas musst du vorsichtig machen Für dich sagt der Name alles. Für jemand außenstehendes ist das aber eventuell nicht so. Da ich auch vor erst knapp 2 Jahren meine Umschulung zum Fachinformatiker beendet habe weiß ich aber wie schwer es ist nicht alles nur aus der eigenen Sicht zu sehen.
private Nachricht | Beiträge des Benutzers