Note de lecture : SQL Avancé, par Joe Celko

Note : 8 ; La grande référence du SQL

Joe Celko, c’est un peu le pape du SQL. Avec lui, on est certain que le sujet ne sera pas traité superficiellement. L’ouvrage accuse près de 20 ans d’âge, mais le sujet ne subit pas des mutations telles que l’ouvrage en devienne obsolète. Voyons ce qu’il en est. L’ouvrage comprends 450 pages incluant 2 courtes annexes. Il est découpé en pas moins de 29 chapitres, donc avec une moyenne d’environ 15 pages pour chacun d’entre eux.

La courte introduction du chapitre 1 nous amène directement au solide chapitre 2 qui pose les bases de la modélisation de bases de données. On y parle formes normales, normalisation … et dénormalisation.

Les chapitre 3, 4 et 5 sont consacrés aux types de données numériques, temps et chaines de caractères respectivement. Ce sont des exemples de précision et de qualité. Nombre de subtilités que l’on peine à maîtriser sont développées ici. Les subtilités des représentations en virgules flottantes ne sont pas esquivées, tout comme les aspects les plus pointus sur les calculs de dates.

Consacrer un chapitre à NULL pourrait paraître exagéré, mais le chapitre 6 couvre le sujet de manière particulièrement pointue voir ardue, puisque l’on aborde les logiques d’opération avec NULL. Par comparaison, le chapitre 7 consacré aux « autres objets du schéma » est un joyeux fourre-tout traité de manière plutôt succincte.

Le chapitre 8 couvrant les opérations sur les tables nous permet de souffler un peu. Pas grand chose de nouveau pour moi, mais le sujet des delete, insert et update est couvert de manière plus que convenable.

Du chapitre 9 au chapitre 15, on couvre les prédicats au sens large. D’abord avec les opérateurs de comparaison au chapitre 9, également appelés « thêta » par Codd (j’ignorais cela). Les aspects de conversion de données qui y sont corrélés sont aussi couverts. Les prédicats avec valeurs et les prédicats like sont éjectés en quelques pages. Between et overlap sont des prédicats que j’utilise très peu, ils sont particulièrement bien appréhendés dans le chapitre 12, exemples et schémas à l’appuis !

Au chapitre 13, on appends que « in » (et « not in ») sont sujets à des questions de performance et l’auteur nous offre quelques pistes de réflexion. Fort logiquement, le chapitre 14 aborde « exists » et couvre des questions telles que le comportement avec des valeurs nulles ou le choix d’utilisation d’exists par rapport à une jointure. On termine le tour du propriétaire avec des questions sur les sous-requêtes, l’usage de « unique », etc… au chapitre 15.

Le chapitre 16 est un incontournable : il traite du « select ». Cela conduit à un chapitre d’une trentaine de pages qui inclut fort naturellement des éléments tels que les jointures de tout poil et autres « group by ». Dans le même ordre d’idées, les vues traitées au chapitre 17 nécessitent un peu plus de 20 pages dans lesquelles sont évoquées les vues en lecture seule ou en écriture, les indexations, les vues matérialisées ou les vues imbriquées. Le chapitre 18 sur les partitions est un peu plus ésotérique pour moi, mais il est assez court.

Du chapitre 19 au chapitre 22 on évoque les opérations sur les agrégats. Ca commence doucement au chapitre 19 avec les opérations sur les groupes avec « group by » et « having », même si l’auteur va bien plus loin que ce dont j’ai l’habitude. Les fonctions d’agrégats (count, avg, etc…) sont des grands classiques. Ils sont traités sans surprises au chapitre 20. Les surprises, on en a plus au chapitre 21 avec les statistiques. Franchement, ça arrache bien la gueule avec les médianes de Murchison ou de Celko (eh oui !). Variance, écart-type, pourcentages cumulés : on peut faire tout ça avec SQL ! Les régions, suites et séquences traitées au chapitre 22 sont au-delà de ce que j’ai l’habitude de voir. Mais le chapitre est assez court.

Le chapitre 23 est une petite curiosité car il aborde un sujet hérétique en SQL : la représentation des tableaux dans les tables. Amusant.
Les chapitre 24 et 25 parlent des opérations sur les ensembles. D’abord avec les fameuses clauses union et intersect. Ensuite avec les sous-ensembles au chapitre 25.

La représentation des graphes en bases relationnelles est un sujet complexe, essentiellement parce que ce type de base n’est pas fait pour cela. Les chapitres 26 et 27 sont plutôt velus car ils abordent directement cette question. D’abord avec les arbres au chapitre 26. L’auteur n’est pas avare de schémas, de représentation et d’algorithmes de recherche. On y traite aussi des fonction d’insertion, de suppression et de rééquilibrage !

Le chapitre 27 dédié aux graphes paraît presque simple par comparaison. Aussi solidement traité cela soit-il, Joe Celko n’a pas tout dit sur le sujet : il a consacré un autre ouvrage spécifiquement sur cette question.

Les deux derniers chapitres du livre peuvent être considérés comme des conseils d’expert. Le chapitre 28 est dédié aux performances : à quelles éléments de la requête doit-on prêter attention, que faut-il éviter, etc… Le dernier chapitre est consacré à des considération de conception assez pointues : échelles de valeur, codification, clés de vérification, etc… C’est pas pour les enfants !

Quand on plonge dans ce livre, on comprend rapidement que la réputation de Joe Celko en tant qu’autorité du SQL n’est pas usurpée. C’est du très, très solide ! La prose est assez accessible, mais l’auteur ne fait aucune concession au niveau d’information fourni. Et quand les explications sont pointues (donc assez souvent), il convient de bien s’accrocher. Heureusement, la matière s’appuie de très nombreux exemples en code SQL, avec des données et des représentations graphiques. Cette édition est bien sûr assez ancienne. Il est d’ailleurs amusant de voir l’auteur se référer très souvent au Cobol (parfois même au PL/1) et à de rares occasions au C. Des éditions ultérieures ont vu le jour, la dernière date de 2010 et compte près de 900 pages !

Je ne saurais trop conseiller Joe Celko pour quiconque veut rentrer sérieusement dans le SQL. Mais cette lecture est aussi un sérieux investissement de temps et d’auto-formation !

SQL Avancé, 2nd édition

Référence complète : SQL Avancé – Joe Celko – Vuibert 1999 (V.O. : Joe Celko’s SQL for Smarties : Advanced SQL programming ; Morgan Kauffman pub. 1995 ; ISBN : 94104-3205) – ISBN : 9782711786367

Harry Potter and the Goblet of Fire (Harry Potter, #4)

https://www.goodreads.com/book/add_to_books_widget_frame/0439139600?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s