Archives

The List

(My)SQL & IT Books Worth Reading

Yes, I have in fact read all of these and found them valuable - this is not just a random collection of MySQL books.

If you’re interested in using me as a technical reviewer on MySQL-related books, chances are that I’ll be more than happy to do so. Please contact me at carsten (at) bitbybit (dot) dk.

[GPage]

Expert PHP and MySQL
Andrew Curioso, Ronald Bradford and Patrick Galbraith: Expert PHP and MySQL.
For once, an “Expert” book where you not only can, but must take the title seriously. This book is choke-full of information, examples and best practices written by some of the foremost experts in their respective fields. Best of all, they are not afraid of thinking outside the box and the solutions they present are in no way limited to pure PHP and MySQL solutions.
See in-depth review here
Mikko Välimäki:
The Rise of Open Source Licensing: A Challenge to the Use of Intellectual Property in the Software Industry (us; pdf).
phd. theses are not generally known for having short titles :) A great in-depth analysis of how Open Source works in relation to the society around it, and the issues pertaining to copyrights, how the different types of Open Source licenses affect the end user, etc. Among the interesting details is a summary of those times Open Source licenses have actually been challenged legally, and the outcome of those cases. Anyone embarking on an Open Source project that they will want to defend in the future should read this book.
Alex Davies and Harrison Fisk:
MySQL Clustering (us; uk).
If you’re working with or considering MySQL cluster, you will want this book. Period.
See in-depth review here
Jon Stephens and Chad Russell:
MySQL Database Design and Optimization (us; uk).
A great resource for those that have worked their own way through the basics of MySQL and now want to hone their skills on more complex subjects and using more in-depth knowledge. Simple and complex queries, normalization, optimization and transactions are explained in easy-to-understand language, which makes everything very accessible to the reader. See in-depth review below
Paul DuBois:
MySQL, 3rd edition (us; uk).
Whether you’re completely new to MySQL or a seasoned developer, Paul always has something up his sleeve to make you understand why things work like they do or how you can improve your code. This is the third edition (published in April 2005) of what has always been the book on MySQL.
Paul DuBois, Stefan Hinz, Carsten Pedersen:
MySQL Certification Study Guide (us; uk)
(disclaimer: I’m a co-author). This is what you need if you want to do self-studying for the MySQL certification exams. It takes you through all the aspects of MySQL that you need to know to pass the exams successfully.
Richard T. Watson:
Data Management - Databases and Organizations (us; uk).
This book is really great for introducing the whole concept of data managements, how to handle data in an organization. The book starts with an overview of data management needs in corporations, then introduces the concept of databases. As the book progresses, more advanced needs are identified and interchhangeably more advanced database concepts are explained. This book won’t make you a hot-shot DBA or developer, but is still a must-read for anyone that want to know in detail what is needed to effectively handle data in an organization. See in-depth review below
Ben Forta:
MySQL Crash Course
Ben Forta is the author of several “Teach Yourself” books, among which you may be familiar with his Teach Yourself SQL in 10 Minutes (us; uk). His new book, MySQL Crash Course, (us; uk) is an excellent introduction for the beginners and good reference work for those more experienced. The book certainly lives up to it’s name and does not waste the reader’s time with any gentle introductions or long explanations. No stone is left unturned, everything you could want to know when developing MySQL applications is covered in a concise style that is not only quick to read, but also makes it easy to refer back to the book for reference later on. In-depth review here.
Peter Gulutzan & Trudy Pelzer:
SQL-99 Complete, Really! (us; uk).
This is the book I always turn to if I want to know something about the SQL standard. If you’re more than a bit curious as to the precise definition of the SQL language, SQL-99 Complete, Really could be a good starting point. It’s not a book you read cover to cover, but a great reference with a very good index. Covers a lot of the SQL intricacies and goes through some vendor dialects as well. MySQL, sadly, is not mentioned anywhere.
[GPage]Matthew Stucky:
MySQL - Building User Interfaces (us; uk).
Somewhat dated by now. None the less, this is a really good book for bringing you up to speed on creating GUI apps for databases. Unfortunately, the title of the book is very badly chosen. “MySQL” suggests that you can only use this book with the MySQL DBMS, even though many of the SQL examples are really quite general in scope; “Building User Interfaces” suggests that this book contains a general discussion on UI, while it is in fact very heavily centered on GTK+. See in-depth review below

In-depth reviews

Jon Stephens and Chad Russell:
MySQL Database Design and Optimization

August, 2005

This book is a great tool and reference for those that are already familiar with databases in general, and MySQL in particular. The authors do try to bring the reader up to speed in the first chapter, but this is probably too brief an introduction to help someone completely unfamilar with database concepts up to the needed level.

The authors move through data definition, simple and complex querying with ease, doing a good job of explaining the hows and whys of the concepts they have chosen to present. Complex issues of Normalization, optimization and transactions are explained in easy-to-understand language, which makes everything very accessible to the reader.

MySQL and PHP have grown together, and the authors spend quite a bit of pages explaining how to interface the two, using many very descriptive and extremely useful examples.

The authors deserve credit for trying to span no less than 4 different MySQL versions in the text (3.23, 4.0, 4.1 and 5.0). It does in some cases make for a confusing read; on the other hand it enables you to make an informed decision on whether to a particular version or not.

The layout of the book merits special mention. Who cares about layout? I normally don’t. But in this particular case, the editors of the book deserves credit for having turned a well-written text into an absolute masterpiece in ghastliness. The graphics quality for icons used throughout the text are worse than what my 1980s 9-pin dot-matrix printer can produce. And who in their right mind would make every header in ugly, non-proportional, bold-faced Courier?. The general print quality is none too good, and some table are laid out in a way that makes your head spin. It actually made me want to put the book down every now and then, just to let my eyes get some rest.

Sad. ’cause it really is a good book, which you ought to get if you’ve been using MySQL for a couple of months and want to enhance your skills.

Richard T. Watson:
Data Management - Databases and Organizations

August, 2005

I am not a great programmer, and I will probably never learn how to effectively tune my C or Java code to be highly effective and run at maximum speed. But one of the things I have found out over the years that I am good at is in understanding and identifying the needs of end-users in a company, what data they need to see in front of them as they talk to the customer and what should go into a report, and then communicate that to those that are good at doing the programming. This has enabled me to become an effective bridge between two worlds that more often than not don’t speak the same language.

I guess it’s a knack - certainly, I have seen many people that I in all other respects consider to be extremely smart having a lot of trouble communicating with the end user. I still remember the day we had a meeting to draw up the needs for a new frontline application with a group of telephone salesmen. My colleague started the show by throwing 3 ER diagrams onto the projector, then asked the audience “what do you think of this data model?”. After 20 minutes of blank stares, hmms and aaahs I turned off the projector, went to the whiteboard and said to the sales reps: “This is your screen. You are getting ready to call the customer. What information do you need to have in front of you?” That got the discussion going.

Why is this story interesting? Well, I have always wondered why there didn’t seem to be any books on how to actually identify the information that people need, and then going from that perspective to the database. Instead, the attitude seems to have been “Here’s the data, now we’ll figure out how to present it to the user”. Quite by chance, I came across Data Management - Databases and Organizations, and this is exactly the tool I wished I had those years ago (today finds me in a position of teaching and testing, rather than database management or development).

The book starts with an overview of data management needs in corporations. The basic view is that of an organization and its employees as being data processors, a view which is sound for the scope of the book but which I personally find a tad too simplistic. Data management is also people management, including focus on such diverse areas as user interfaces, education, getting feedback and providing end-user support, etc. In my experience, the two can’t be separated easily. The author does touch on some of these details (including, importantly, the fact that if your efforts in data management are to succeed, you need to do all you can to ensure that the data you work with is of high quality).

At times during the first chapters, the book does feel more like a roller-coaster ride through many, many TLAs than an in-depth discussion. Of course, these are the terms that are used throughout the industry, and so you do need to be familiar with them.

The book goes on to discuss almost every high-level aspect of data management that you can think of, including both internal and external

requirements. One very interesting tidbit is a discussion of the legal aspects of choosing different forms of long-term storage media, soemthing that I doubt very many developers or DBAs concern themselves with until it’s too late.

As the book progresses, the book gives the reader a more and more fine-tuned understanding of database concepts such as data modeling and relational theory. All of this is kept at a fairly high-level viewpoint, so even those without a lot of mathematical insight and those that
need to understand data management, but not write a single line of programming or SQL code, can follow the text.

The books skips back-and-forth between the technical parts and the more abstract data management needs of an organization. At first, this can seem confusing, but actually leads to a very logical progression. As more advanced organizational needs are identifed, the SQL and other database concepts to handle those needs are introduced. Rather than confusing the reader, they actually do a lot to help grasp understanding what needs a particular feature is meant to help solve.

Will it help you pass a certification exam or become highly proficient at tuning databases? Nope.

Will it hone your skills as a data manager? Definitely.

This book is definitely a must-read for anyone that want to know in detail what is needed to effectively handle data in an organization.

Matthew Stucky:
MySQL - Building User Interfaces

originally written some time late in 2001

Let me say this right away: This is a good book. If you already know your way around MySQL and have at least a basic knowledge of C, you’ll very quickly get up to speed in creating a MySQL GUI (GTK+) application for your co-workers or your client.
The introduction lays out some of the foundations, and the reader is warned that some skills are required before delving deeper into the book: Basic knowledge of C, SQL, Linux are all required to gain anything from this book. Some experience in VB, Delphi or other form-based IDEs will also give you a good start on the book.

The first section of the book gives a good run-down on MySQL, GTK+ and Glade. There are a few non-critical errors in the text (stating that a MySQL table is limited to 50 mio. records; claiming that Qt is not free, although the Qt/X11 is released under the GPL). The chapters on GTK+ also give the reader the first taste of the author’s preference on using page upon page of commented source, rather than explanatory body text.
The second section is a walk-through of three Real-world implementations. The first is a relatively simple order entry application; the second a commissions calculation application and the third a fairly complex report generator. In all three examples, the focus is primarily on Glade and GTK+, and very little mention is made of MySQL.

The third section is a short discussion on using the XML files generated by Glade, which may — in some very specific cases - allow the programmer to make changes to an application without recompiling a project. This discussion really is too short, and I wonder whether the reader might be confused more than helped by this chapter. These pages could have been of much better use if the author had spent some more time discussing security issues in MySQL and applications, something which this books sorely lacks. There is some discussion on the subject, but it’s much too short and general.

One thing I really like about the examples is the “running commentary” on how to distribute programs, moving from a simple “copy the executable” over “make install” and ending up at “building an RPM”.

I like examples, and a good tutorial should contain a lot of them. Some of the code examples in the book are very good — those where a small section of a program is shown, and each important line of code is emphasized and explained. In this book, the author has chosen to give us page up and page down of program listings, which, although well commented in-line, make for extreme terse reading. More than half the book is comprised of program listings, and that’s not counting the last 150+ pages making up the appendix, consisting solely of program listings. I have serious doubts that anyone will ever be reading these.

The title of the book is, unfortunately, very badly chosen. “MySQL” suggests that you can only use this book with the MySQL DBMS, even though many of the SQL examples are really quite general in scope; “Building User Interfaces” suggests that this book contains a general discussion on UI, while it is in fact very heavily centered on GTK+. The layout of the front page also suggests that the main focus on the book is MySQL, which is not true — only about 25% of the contents are set off for discussing MySQL, the rest of the book is about Glade and GTK.

If you’re coming from a Windows/MS-Access background and wish to know more about writing GUI applications for MySQL, program deployment, this book is definitely for you. If you’ve never worked with MySQL (or any other SQL database), you should get some more experience before getting this book.