Getting Started

Let’s get an overview of the intended audience, prerequisites, and objectives of the course.

Let’s have a look at our intended audience and objectives.

Who this course is for

This course, “SQL Antipatterns: Avoiding the Pitfalls of Database Programming,” is written for software developers who want to learn to use SQL more effectively. Its usefulness is not restricted to either beginners or seasoned professionals; people with all levels of experience and expertise can benefit from the subjects in this course.

Some of the topics in this course may already be well-known to us. However, it is likely that going through the exercises in this course will enable us to look at problems in new ways and to come up with better solutions. It’s also a good practice to reinforce our understanding of previously learned concepts.

Although trained database administrators may already know the best ways to avoid the SQL pitfalls described in this course, it can still help them by introducing them to the perspective of software developers. It’s not uncommon for developers and DBAs to have mutually divergent methods, but a course like “SQL Antipatterns” can help both work together more effectively. DBAs can use SQL antipatterns to help explain good practices to software developers they work with, paving way for better collaboration between both.

The following section details what this course includes as well as what we will not cover.

About this course

An antipattern occurs when a user employs a technique to solve a problem, but it leads to other problems, instead. Antipatterns occur frequently and are of different types, but they have a thread of commonality among them. Many antipatterns of object-oriented software design and project management are documented at the Portland Pattern Repository as well as in the 1998 book AntiPatterns by William J. Brown, et al.

“SQL Antipatterns” describes the most frequently made missteps collected from the Internet, training session discussions, technical support discussions, other developers, and one’s own personal mistakes. There’s no better teacher than spending many hours late at night making up for one’s errors.

There are no lessons on SQL syntax or terminology in this course. This course assumes that you have already learned enough SQL syntax to use the language and get some work done.

Performance, scalability, and optimization are essential for people who develop database-driven applications, especially on the web. However, although this course talks briefly about these concepts, they are not the main focus of this course. There are books specifically about performance issues related to database programming, like SQL Performance Tuning and High-Performance MySQL that learners who are interested in these topics can consult.

Data access frameworks and object-relational mapping libraries also aren’t the focus of this course. In brief, this course is for developers employing the SQL language more than it is for database administrators.

This course is about SQL and relational databases, not alternative technology such as object-oriented databases, key/value stores, column-oriented databases, document-oriented databases, hierarchical databases, network databases, map/reduce frameworks, or semantic data stores. Comparing the strengths and weaknesses and appropriate uses of these alternative solutions for data management would be exciting, but that is a matter for other courses.