Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

Lasst die Datenbank ihren Job machen!

Oft schau ich mir Code an und sehe, dass Leute offenbar zu faul für vernünftige SQL-Statements sind. Da wird eine extrem allgemein gehaltene Abfrage auf die Datenbank losgelassen, um dann im Nachklang mit PHP zu filtern / zu gruppieren. Warum? Die Datenbank ist doch zum rechnen und für genau so Aufgaben gedacht. Zudem ists auch noch viel performanter, die Datenbank einfach ihren Job erledigen zu lassen. Vielleicht programmieren gewisse Leute einfach viel zu gern PHP, als das sie sich von der Datenbank die Arbeit abnehmen lassen würden?

Berechnungen im SELECT

SELECT price FROM product 

while ($row = $sql->fetch()) {     print $row['price'] * 1.95583; } 

Warum nicht einfach:

SELECT price*1.95583 AS europreis FROM product 

Okay, jetzt nicht das beste Beispiel aber prinzipiell läuft einem sowas öfter über den Weg.

Datenbank-Konsistenz

Ich kann auch nicht verstehen, warum die Leute alle die absolut geilen InnoDB-Features außen vor lassen. Foreign Keys zum Beispiel. Da werden dann in Cronjobs abenteuerliche Abfragen auf die Datenbank abgesetzt, um die Konsistenz wieder herzustellen. Ein gut gewähltes Fremdschlüssel-Datenmodell erledigt sowas doch, dafür ist es gemacht!

Transactions

Auch sehr gern gesehen: Menschen programmieren selbst eine Rollback-Funktionalität, um fehlgeschlagene Abfragen revidieren zu können. Da werden dann Arrays mit wiederherzustellenden Werten angelegt, falls eine Abfrage nicht klappt. Dafür gibt es doch Transaktionen! Die können genau das und zwar wesentlich besser. Außerdem kann man Transaktionen garnicht vollständig emulieren.

Validierung

Viel zu selten benutzt: Enum und Set. Warum nicht die Möglichkeit nutzen, nur bereits vordefinierte Werte zuzulassen? Das ist immerhin die wasserdichteste Variante, um sicherzustellen, dass nur zugelassene Werte in der Datenbank landen.

Werteprüfung

Im Artikel MySQL Inputvalidierung mit Triggern stelle ich einen Weg vor, wie man mittels Triggern erreichen kann, dass nur gewisse Wertebereiche in Tabellen eingefügt werden dürfen. Daran scheiden sich allerdings die Geister, ob man das zur „best practice“ ernennen sollte, weil Trigger „versteckt“ auf der Datenbank agieren und für ordentlich Verwirrung sorgen können.

Datumsberechnungen

Oft brechen sich Programmierer auch die Wurst mit strtotime, date und mktime ab, um Daten zu updaten. MySQL bringt aber hier – genau wie alle anderen ernstzunehmenden DBMS auch – wunderbare Zeitfunktionen mit. Weiterer Vorteil dabei: Man ist nicht mehr darauf angewiesen, dass die Zeit des Datenbankservers und des Webservers sekundengenau gleich eingestellt ist, weil alle Zeitberechnungen nur noch auf Datenbankseite erledigt werden.