SQL is niet alleen waardeloos, het is ook een ramp, dat stelt databaseconsultant Han Zijlstra na het lezen van het interview met Chris Date en de reacties daarop in de Computable van 1 april 2005 (pagina 12). Het houdt verdere ontwikkelingen tegen en het bezorgt programmeurs hoofdpijn.
Om alleen al het select-statement te beschrijven heeft Oracle 41 PDF pagina’s nodig; daarin bevinden zich 21 BNF syntax-schema’s. In nog eens 20 pagina’s wordt een extra toelichting gegeven. Kortom een heel boekwerk voor precies één statement. Maar het is dan ook het enige statement dat een programmeur tot zijn beschikking heeft. Hij moet het allemaal in één zin zeggen.
Geen kwaad woord over de documentatie van Oracle zelf. Maar dit is natuurlijk een situatie waarin vanzelf zeer complexe, niet onderhoudbare queries ontstaan die van meet af aan al ‘legacy’ zijn.
Null-kolommen
Dan de nulls. Zij vormen vaak de achterliggende reden voor uitloop op projecten. Null-kolommen, unieke indexen op meerdere kolommen waarvan een deel null mag zijn, outer joins, groepfuncties op lege datasets: ze leveren altijd problemen op omdat er nulls betrokken bij zijn. Hoeveel testwerk heeft daar niet betrekking op? Hoeveel batches lopen er niet stuk omdat er plotseling een waarde null blijkt te zijn ontstaan?
Natuurlijk zou in een database elke tabel uitsluitend unieke rijen moeten hebben en zou de gebruiker de mogelijkheid moeten hebben om user defined datatypes en constraints te definiëren en te gebruiken. In SQL wordt dat allemaal gemist.
Voor Martin Kersten valt het echter wel mee: als je maar onthoudt dat SQL geen uitspraak doet over de volgorde, kun je er mee leven. Hij onderschat de problemen en bevestigt eigenlijk dat er op universitair niveau bar weinig aan database theorie wordt gedaan.
Leuke dingen
Hans Bos gaat al helemaal niet in op wat Chris Date zegt en beweert slechts dat je met Oracle ook leuke dingen kan doen, hetgeen zeker waar is. Hij bevestigt daarmee mijn bange geloof dat we van de traditionele database leveranciers geen oplossing mogen verwachten. Die scoren liever met nieuwe features.
Mijns inziens is er een grote behoefte aan een krachtige, ‘orthogonale’ database taal (een orthogonale database kan alle objecttypen opslaan. Ontwikkelaars kunnen zich puur op het probleemgebied richten, zonder dat zij zich hoeven af te vragen in welke vorm de objecttypen worden opgeslagen – red.). De bouwstenen zijn daarvoor al ontwikkeld. Nu nog een commercieel product.
Han Zijlstra, Database consultant