Es gibt viel mehr Anfänger im SQL Server als Experten. Bei weitem mehr! Und es gibt gleichzeitig viel weniger echte Experten als solche, die sich dafür halten, was aber ein anderes Thema ist.
Joe Celko ist zweifelsohne einer der Teilnehmer an Online-Communities, die am meisten polarisieren. Entweder man mag seine Art, auf Fragen zu antworten oder man haßt sie. Dazwischen scheint es nur wenig Spielraum zu geben. Aber zum Glück treibt sich Joe nicht nur in den Communities herum, sondern schreibt auch Bücher. Und diese zählen, zumindest für mich, zu den besten Bücher über SQL überhaupt. Sie sind voll von Tips und Tricks, wie man auch komplexe Problemstellungen elegant lösen kann. Unorthodoxe Ansätze, die man manchmal 1x, 2x oder auch öfter lesen muß, um nachvollziehen zu können, warum dies zum gewünschten Ergebnis führt. Ich liebe diese Art von Büchern, von denen es leider zu wenige gibt.
Einer dieser "Klassiker", der demnächst in der 2.ten Auflage erscheint, ist SQL Puzzles & Answers, in dem Brainteaser zu folgenden Themen behandelt werden:
Da Joe einer der vehementesten Verfechter von portablem ANSI SQL ist, sind natürlich auch die vorgestellten Lösungen in ANSI SQL kodiert. Das heißt, sie sind unter Umständen so nicht out-of-the-box lauffähig im SQL Server. Und hier liegt ein weiterer Punkt, warum ich Joe's Bücher so mag. Es macht immer wieder Spaß, sich zu überlegen, wie man diese Lösungen durch Verwendung der proprietären T-SQL Syntax auf den SQL Server portieren könnte. Und dieses Nachdenken und Sinnieren über mögliche Lösungen und Alternativen in T-SQL ist eine hervorragende Übung und macht Joe's SQL Bücher uneingeschränkt empfehlenswert.
![]() |
Joe Celko's SQL Puzzles & Answers |
Man muß nicht einmal besonders genau hinschauen, um zu sehen, daß die meisten Applikationen mit Daten in dieser oder jener Form arbeiten. Oftmals sind diese Daten in einer Datenbank gespeichert, so daß man davon ausgehen kann, daß die meisten Software Entwickler mehr oder weniger regelmäßig mit Datenbanken arbeiten. Nun ist aber Datenbankprogrammierung etwas anders als Applikationsprogrammierung und von daher ist es nicht selbstverständlich, daß ein guter Applikationsentwickler gleichzeitig auch ein guter Datenbankentwickler ist. Dabei spielt es übrigens keine Rolle, ob als Datenbanksystem eine Desktopdatenbank wie Microsoft Access zum Einsatz kommt oder ein ausgereifter relationaler Datenbank-Server wie der Microsoft SQL Server. Paradigmen, Grundsätze und Richtlinien, die für Applikations Entwicklung gelten, gelten nicht auch zwangsläufig für die Datenbankentwicklung und können teilweise sogar eher gegenläufig sein. Dennoch gibt es auch in der Datenbankentwicklung einen deutlichen Bedarf an Regeln und Richtlinien für die Entwicklung und hier kommt das vorliegende Buch ins Spiel. Sein Autor, Joe Celko, zählt zu den prominentesten Vertretern der Datenbank Community und hat einige der besten Bücher über SQL Programmierung im Allgemeinen geschrieben. Dieses Buch jedoch ist anders. Es zeigt einem nicht, wie man ein "besserer" SQL Entwickler wird, indem es Lösungen und Tricks zu SQL Rätseln und Brainteasern präsentiert. Dieses Buch will vermitteln, wie man in logischen und deklarativen Begriffen denkt und arbeitet.
Folgendes kann man in dem Buch lesen:
Auf den über 200 Seiten präsentiert Celko seine Sicht eines Frameworks, innerhalb welchem Datenbankentwicklung erfolgen sollte. Sei dies eine Diskussion darüber, was eine gute Namenskonvention ausmacht oder wie SQL Code geschrieben und eingerückt werden sollte. Sei dies eine Diskussion darüber, ob Auto-Nummern (auch bekannt als SQL Server's IDENTITY Eigenschaft) ein guter Schlüssel sind oder wo im Code CHECK Einschränkung platziert werden sollten.
Einige der präsentierten Regeln sind (hoffentlich) gesunder Menschenverstand, für manche anderen existieren internationale Standards und weitere wiederum sind eher Celko-spezifisch. Sämtliche Regeln werden zusammen mit einer Begründung und gegebenenfalls Ausnahmesituationen für die jeweilige Regel angeführt. Dies macht aus dem Buch eher eine Art Nachschlagewerk, welches man im Zweifelsfall zu Rate zieht, als ein "normales" Buch, welches man Kapitel für Kapitel von vorne bis hinten liest. Auch wenn man in manchen Punkten nicht unbedingt mit Joe Celko übereinstimmen muß, kann man dieses Buch hervorragend als Grundlage nehmen, um darauf seine eigenen Programmierstil Richtlinien aufzubauen.
Zweifelsohne gibt es einen Bedarf an solchen Richtlinien, und so ist, zum Beispiel, die schlechteste Namenskonvention, immer noch besser als gar keine. Aber es macht das Leben eines Datenbankentwicklers (und, wahrscheinlich noch wichtiger, das Leben desjenigen, der den ursprünglichen Code pflegen muß) deutlich einfacher, wenn ein klarer und konsistenter Programmierstil angewendet wird. Viele der Regeln in diesem Buch sind nicht wirklich neu für Leute, die den Online Communities folgen, an denen Joe Celko ebenfalls partizipiert, aber dieses Buch fasst diese Regeln sehr schön an einem einzigen, greifbaren Ort zusammen und das allein bietet schon genug Anreiz zu Kauf.
SQL Programming Style Joe Celko 2005 Morgan Kaufmann 272 Seiten ISBN 0-12-088797-5 |
Ich frage mich immer wieder, woher denn alle diese "Legacy Systeme" kommen, über die die Leute in Online Communities so berichten. Üblicherweise scheint es so zu sein, daß solche Systeme urplötzlich auftauchen (oder schon immer dagewesen sind) und von niemandem bemerkt werden.
Während nach dem Release von SQL Server 2005 anscheinend zunächst einmal Bücher für die Datenbankadministratoren auf den Markt kamen, scheinen nun endlich die Entwickler auf ihre Kosten zu kommen.
What exactly is first normal form?
What's the connection between relations and predicates?
What's semantic optimization?
What's a join dependency?
Why is semidifference important?
Why doesn't deferred integrity checking make sense?
What's a relational variable?
What's nonloss decomposition?
Can a relation have attributes whose values are relations?
What's the difference between SQL and the relational model?
Why is the information principle important?
How does XML fit in the relational model?
Provokante Fragen, nicht wahr?
Vor ca. 2500 Jahren schrieb Sunzi ein Buch, welches mit den Worten beginnt.
"Die Kunst des Krieges ist für den Staat von entscheidender Bedeutung. Sie ist eine Angelegenheit von Leben und Tod, eine Straße, die zur Sicherheit oder in den Untergang führt. Deshalb darf sie unter keinen Umständen vernachlässigt werden."
Kaum ein anderer Begriff verursacht derzeit mehr Aufsehen und Aufregung als "Business Intelligence".
Kaum ein anderer Begriff läßt derzeit die Kassen von Softwareherstellern und Beratungsfirmen mehr klingen als "Business Intelligence".
Kaum jemand, den man fragt, kann erklären, was genau denn "Business Intelligence" eigentlich ist. Aber haben muß man es, sonst ist die Konkurrenz einen Schritt weiter.