Ist die Verwendung von natürlichen Join oder impliziten Spaltennamen keine gute Praxis beim Schreiben von SQL in einer Programmiersprache?

StackOverflow https://stackoverflow.com/questions/2707950

Frage

Wenn wir natürliches Join verwenden, verbinden wir uns den Tabellen, wenn beide Tabellen die gleichen Spaltennamen haben. Aber was ist, wenn wir es in PHP schreiben und dann die DBA mehr Felder zu beiden Tabellen hinzufügen, dann kann der natürliche Join brechen?

Das gleiche gilt für den Einsatz, wenn wir a machen

insert into gifts values (NULL, "chocolate", "choco.jpg", now());

Anschließend wird der Code untergebracht und die Tabelle kontaminiert, wenn der DBA der Tabelle einige Felder hinzufügt (Beispiel als Spalte 2 oder 3). Es ist also immer am besten, die Spaltennamen zu buchstabieren, wenn die SQL -Anweisungen in einer Programmiersprache geschrieben und in einer Datei in einem großen Projekt gespeichert werden.

War es hilfreich?

Lösung

Ja, es ist immer eine gute Idee, die Spalten, mit denen Sie sich befassen, explizit zu benennen. Wie Sie betonen, verhindert dies das Abfragebrechung, wenn jemand der Tabelle eine Spalte hinzufügt.

Gleiches gilt für die Vorliebe der Auflistung von Spalten in einem SELECT, anstatt zu schreiben SELECT *. Sehen Diese verwandte Frage.

Andere Tipps

Natürliche Anschlüsse sind keine gute Idee, wo immer Sie sie schreiben. Sie verbergen die Bedeutung, dass expliziterer Code offenbart und möglicherweise subtile Fehler einführen, wenn sich die Spaltennamen ändern.

Ja, es ist immer die beste Praxis, Ihre Felder explizit anzugeben. Andernfalls wird Ihr Code bei Änderungen Ihres Schemas brechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top