How to Write Correct SQL and Know It: A Relational Approach to SQL

Christopher J. Date is the world's best known relational advocate. His book An Introduction to Database Systems, currently in its 8th edition, is widely regarded as one of the fundamental texts on the subject. It has sold well over 700,000 copies, not counting translations, and it is used by several hundred colleges and universities worldwide. He is one of the inventors of our database industry. In this seminar, he shows you how to write SQL code that's logically correct; how to avoid various SQL traps and pitfalls; and, more generally, how to use SQL as if it were a true relational language. This seminar will benefit professionals using Oracle, SQL Server, MySQL, PostgreSQL, and DB2 systems alike.

Registration Information

This is a one-time seminar that will be held in the Dallas/Fort Worth, Texas metroplex on January 26–28, 2010. The price is $1,875 USD per student.

The seminar will make or break based upon the number of paid enrollments completed by Friday, December 4, 2009. If the number of paid enrollments has not reached our break-even requirement by that date, then we will refund 100% of your enrollment fee, by check, shortly thereafter.

Write This e-mail address is being protected from spambots. You need JavaScript enabled to view it to sign up for the seminar. In your note, please let us know how you intend to pay: electronic funds transfer, corporate check, corporate purchase order, credit card, or PayPal. Your payment in one of these forms must be received by December 4, 2009 to qualify as an enrollment in our make-or-break decision.

About This Seminar

SQL is ubiquitous. But SQL is complicated, difficult, and error prone (much more so than SQL advocates would have you believe), and testing can never be exhaustive. So to have any hope of writing correct SQL, you must follow some discipline. What discipline? Answer: The discipline of using SQL relationally. But what does this mean? Isn't SQL relational anyway?

Well, of course SQL is the standard language for use with relational databases, but that doesn't make it relational! The sad truth is, SQL departs from relational theory in all too many ways; duplicate rows and nulls provide two obvious examples, but they're not the only ones. Thus, systems based on SQL give you rope to hang yourself, as it were. So if you don't want to hang yourself, you need to understand relational theory (what it is and why); you need to know about SQL's departures from that theory; and you need to know how to avoid the problems they can cause. In a word, you need to use SQL relationally. Then you can behave as if SQL truly were relational, and you can enjoy the benefits of working with what is, in effect, a truly relational system.

Of course, a seminar like this wouldn't be needed if everyone already used SQL relationally, but they don't. On the contrary, there's a huge amount of bad practice to be observed in current SQL usage. Such practice is even recommended in textbooks and other publications, by writers who really ought to know better; in fact, a review of the literature in this regard is a pretty dispiriting exercise. The relational model first saw the light of day in 1969, yet here we are, almost 40 years later, and it still doesn't seem to be very well understood by the database community at large. Partly for such reasons, this seminar uses the relational model itself as an organizing principle; it discusses various features of the model in depth, and shows in every case how best to use SQL to implement the feature in question. Note: Classroom exercises are an integral part of the seminar, and attendee discussion and interaction are encouraged.

What You Get

Attendees will receive:

Objectives

On completion of this seminar, attendees will:

  • Appreciate how relational principles provide SQL's logical underpinnings
  • Understand the breadth and depth of those principles
  • Know how to formulate complex SQL code with confidence that it's correct
  • Generally, be able to use SQL relationally

Who Should Attend

This seminar is targeted to the following audiences:

  • Database application designers and implementers
  • Information modelers and database designers
  • Data and database administrators
  • Computer science professors specializing in database matters
  • DBMS designers, implementers, and other vendor personnel
  • Database consultants
  • People responsible for DBMS product evaluation and acquisition

The seminar is not meant for beginners. Attendees will be expected to have at least an elementary familiarity with database concepts in general and the SQL language in particular. Attendees will also be expected to attempt a number of pencil and paper exercises in class. Solutions to those exercises will be discussed in class as well.

Location

The seminar will be held in the Dallas/Fort Worth, Texas metroplex. We will announce a specific venue after the make-or-break date.

Schedule

The seminar will run 9:00am–4:30pm each day for three (3) days.

Topic Outline

  1. Setting the scene
    • Codd's relational model
    • Model vs. implementation
    • Properties of relations
    • Base vs. derived relations
    • Relations vs. relvars
    • Values vs. variables
  2. Types and domains
    • Domains are types
    • Types and operators
    • System vs. user defined types
    • Scalar vs. nonscalar types
    • Scalar types in SQL
    • SQL type checking and coercion
    • SQL collations
    • SQL row and table types
  3. Tuples and relations, rows and tables
    • What's a tuple?
    • Rows in SQL
    • What's a relation?
    • Relations are n-dimensional
    • Relational comparisons
    • TABLE_DUM and TABLE_DEE
    • Tables in SQL
    • SQL column naming
  4. No duplicates, no nulls
    • What's wrong with duplicates?
    • Avoiding duplicates in SQL
    • What's wrong with nulls?
    • Avoiding nulls in SQL
    • A remark on outer join
  5. Base relvars, base tables
    • Data definition
    • INSERT, DELETE, UPDATE
    • Updating is set level
    • Relational assignment
    • Candidate and foreign keys
    • Tables and predicates
    • Tables vs. types
  6. SQL and relational algebra I: The original operators
    • Result types
    • Restriction, projection, join
    • Union, intersection, difference
    • WITH and complex expressions
    • What expressions mean
    • Evaluating SQL expressions
    • Optimization
    • Importance of column names
  7. SQL and relational algebra II: Additional operators
    • Semijoin and semidifference
    • Extend
    • Image relations
    • Divide
    • Aggregation and summarization
    • Grouping and ungrouping
    • "What if" queries
    • What about ORDER BY?
  8. SQL and constraints
    • Type constraints
    • Type constraints in SQL
    • Database constraints
    • Database constraints in SQL
    • The role of transactions
    • Immediate vs. deferred checking
    • Multiple assignment
    • Constraints vs. predicates
    • The Golden Rule
    • Correctness vs. consistency
  9. SQL and views
    • Views are relvars
    • The Principle of Interchangeability
    • Views and predicates
    • Retrieval operations
    • Views and constraints
    • Updating operations
    • What are views really for?
    • Views and snapshots
  10. SQL and logic I: Relational calculus
    • Propositions and predicates
    • Quantification: EXISTS, FORALL, UNIQUE
    • Range variables and correlation
    • Calculus expressions
    • SQL support
    • Transforming expressions
  11. SQL and logic II: Using logic to write SQL code
    • Important identities
    • SQL and implication
    • SQL and FORALL
    • Correlated subqueries
    • Naming subexpressions
    • Dealing with ambiguity
    • Using COUNT
    • ALL or ANY comparisons
    • GROUP BY and HAVING
  12. Further SQL topics
    • Explicit tables
    • Range variables
    • Table, row, and scalar subqueries
    • "Possibly nondeterministic" expressions
    • Cursor operations
    • Empty set issues
    • A BNF grammar
  13. The relational model
    • The relational model vs. others
    • The relational model defined
    • What remains to be done?
    • The future of SQL
  14. A relational approach to missing information
    • Preliminaries
    • Vertical and horizontal decomposition
    • Varieties of missing information
    • Constraints and queries
    • "Don't know" answers
  15. Database design theory
    • The place of design theory
    • FDs and BCNF
    • JDs and 5NF
    • 6NF
    • Normalization is not a panacea
    • But don't denormalize!
    • The Principle of Orthogonal Design
    • Remarks on physical design
 
Home Education How to Write Correct SQL and Know It: A Relational Approach to SQL
Joomla Templates by Joomlashack