I'm working through these books to learn databases and design industry-appropriate schemas: Database Design for Mere Mortals, SQL Queries for Mere Mortals, Effective SQL, Database Design and Relational Theory, Relational Database Design and Implementation, and Database Systems: A Practical Approach to Design, Implementation and Management. Is this reading list enough, or is there a better way to combine theory with practical experience? My main goal is to build databases for real-world applications and become stronger at backend development.
4 Answers
Choose a concrete project first, get a local database running, and build an application on top of it. Designing tables is only part of the job—you also need to write queries, migrations, tests, and application code that uses the database. Start with one database system and learn its documentation for data types, indexes, joins, recursive queries, collations, transactions, backups, triggers, and replication as those topics become relevant.
A comprehensive database textbook can be useful for both theory and practice, but no book alone will make you effective in production. Deliberately create a small application with realistic requirements, inspect query plans, test failure cases, and revise the schema as requirements change. That feedback is where much of the practical learning happens.
For backend work, learn the fundamentals well and then specialize in one system such as PostgreSQL. Practice normalization, constraints, transactions, indexing, and query optimization, but also learn how your programming language and framework handle connections, parameterized queries, object mapping, and migrations. You can look up advanced features when a project actually needs them instead of trying to memorize everything upfront.
The books cover useful theory, but six is probably overkill because several repeat entity-relationship modeling, normalization, and relational design concepts. Start with one design book and Effective SQL, then apply what you learn to a real PostgreSQL project. Give yourself messy requirements such as multi-tenancy, soft deletes, audit history, migrations, and changing business rules. Save the more theoretical material for when you have practical problems you want to understand more deeply.
That makes sense. I’m mainly trying to build databases rather than just read about them, so I’ll use a smaller reading list and work on a project alongside it.

I’m interested in backend development specifically. Should I focus more on SQL, schema design, or learning the database features of one particular system first?