grimboite/articles/dev/sql-antipatterns.md

1.8 KiB

Title Subtitle Status Tags Writer
SQL Antipatterns Avoiding the pitfalls of Database Programming draft ebook, sql, antipatterns Bill Karwin

SQL Antipatterns est un livre qui reprend les principales choses à ne pas faire en SQL. Comme le souligne l'auteur dans sa préface, la plupart des programmeurs SQL ont appris sur le tas; de nombreuses erreurs peuvent ainsi être évitées grâce à ces quelques (deux-trois... voire vingt-quatre) trucs de base.

Logical Database Design Antipatterns

Jaywalking

Eviter le jaywalking; le principe de stocker plusieurs informations dans un même champ. En stockant par exemple toutes les relations d'un enregistrement dans un même champ (séparé par un caractère déterminé à l'avance), on va droit dans le mur: autant en termes de performances que de recherche, d'insertion et de suppression. Bref, évitez.

Structures hiérarchiques

Identifiant requis!

La présence d'une clé primaire est obligatoire, mais ne doit pas spécialement s'appeler id: il y a même un avantage à appeler cette clé de manière plus sémantique (bug_id, entity_id, ...), c'est la possibilité d'utiliser le mot-clé USING(<key>) pour que la requête fasse automatiquement le lien entre deux tables sur base de cette colonne. Plutôt que Select * From A Inner Join B on A.Id = B.bidule_id, on pourrait directement faire Select * From A Inner Join B Using (bidule_id).

Ensuite, cette clé n'est pas nécessairement un entier: on peut tout à fait utiliser un champ texte, un bigint, ... voire une clé composée. Tout ce qu'on veut, pour peu qu'un index puisse être appliqué. De même, inutile de définir un identifiant entier en clé primaire et un index d'unicité sur un autre champ: on peut directement définir la clé primaire sur ce champ.