First, we should note that SQL and relational model in general were designed long time ago to interact with the end user. This user-oriented nature had vast implications: […] No one can expect human users to explicitly control concurrency, integrity, consistency, or data types validity. That’s why SQL pays a lot of attention to transactional guaranties, schemas, and referential integrity.
I had always wondered about that, and it never occurred to me that SQL could have been designed primarily for end users. So it does make sense that, when accessing my database from PHP, I feel no need to use stuff like foreign keys constraints in the schema itself, for instance.
(Can’t vouch for the rest of the article, still haven’t read it. It’s long, and I have to be in a more open and productive state of mind to appreciate what it’s offering.)