Datenbankdesign

Ich bin ja noch ziemlich neu in Shopware und wundere mich etwas über die Verwendung von DOUBLE statt DECIMAL in den ganzen Tabellen. Mein Kenntnisstand ist der, dass man für berechnete Felder wie z. B. Preise und Gewichte DECIMAL verwenden sollte, da hier eine höhere Genauigkeit vorhanden ist. Warum ist das in Shopware nicht so?

höhere Genauigkeit

Bei 20 Stellen nach dem Punkt. Ob das für ein Shop jedoch relevant ist? 

Das kommt drauf an was Du wie verkaufst und in welcher Menge: Schraubenpreis 0,5 ct/Stk, Packung immer 1.000 und Kunde kauft 193 Packs, dann noch 10 ähnliche Positionen und Deine USt.-Berechnung stimmt u. U. nicht mehr. Ich hatte so etwas in einem anderen System schon bei kleineren Zahlen feststellen können.

Wir haben schon viele Shops umgesetzt, auch für Handwerker wo Schrauben, Dübel, Abdeckvlies mit unterschiedlichsten Verpackungseinheiten usw. vorkommen. Hat jedoch überall nie Probleme bereitet.

Ja, ich hoffe das Datenbankdesign wird mit SW6 auch nochmal grundlegend überdacht.

Was mich zum Beispiel stört ist die falsche Collation die man nicht einfach mal ändern kann ohne bei jedem Update erneut anpassen zu müssen.

Für Shopware sind dadurch Stähle und Strahle das gleiche - das führt in der Praxis zwar selten zu Problemen, hat aber schon zu Problemen geführt.

Ich hole das noch mal wieder raus.

Wenn ich mir jetzt ein neues Model mit doctrine entwerfe, was soll ich denn dann bevorzugt nehmen? float oder decimal?

Ich würde ja auch hier wieder decimal nehmen, allein schon um stellenweise die möglichen Nachkommastellen zu begrenzen. Aber ich bin noch zu neu und sehe evtl. im Code eteas nicht, das dann Probleme macht.

 

@volkerstraehle‍ Von float würde ich in diesem Zusammenhang dringend abraten, das wäre ja noch schlimmer als double…

Klar doctrine kennt decimal, aber in welchem Format speicherst du dann die Info in PHP?

Ich denke die Antwort liegt somit in PHP. Nach meinem Kenntnisstand kennt das nämlich decimal gar nicht.
Wenn man also in seiner Datenbank schön mit decimal hantiert und dann den Wert auf eine double-Variable in php schreibt, dann hat sich das Ganze wieder erledigt.

PHP kennt so gesehen auch kein Double, trotzdem wird es in der DB benutzt. Man sollte nicht vergessen, dass man nicht nur mit PHP rechnen kann, sonder Berechnungen auch in reinem SQL durchführen kann.

@R4M schrieb:

Wir haben schon viele Shops umgesetzt, auch für Handwerker wo Schrauben, Dübel, Abdeckvlies mit unterschiedlichsten Verpackungseinheiten usw. vorkommen. Hat jedoch überall nie Probleme bereitet.

Hallo,

bei uns führt das zu erheblichen Problemen, wir verkaufen Schrauben auch einzeln und haben Staffelpreise.

In unserer Wawi kostet Artikel x bis 99 Stück 0,02€ je Stück, bis 999 Stück 0,01€ je Stück und ab 1000 Stück 0,004€ je Stück.

Hat das denn hier jemand auf  4 Stellen nach dem Komma lösen können ???

@R4M schrieb:

Wir haben schon viele Shops umgesetzt, auch für Handwerker wo Schrauben, Dübel, Abdeckvlies mit unterschiedlichsten Verpackungseinheiten usw. vorkommen. Hat jedoch überall nie Probleme bereitet.

Guten Morgen R4M,

ich finde leider keine Lösung , als Beispiel kostet 1 Stück 0,01€  1000 Stück sollen 3,60€ kosten. Bin für jede Hilfe dankbar.