Tag Archives: Data-Intensive Applications

Topic 14 – Introduction to Database Design

Why do I need to learn about database design?

Database is the heart of any software system, especially enterprise systems. A bad database design will eventually cause your system fail.
Designing enterprise databases requires a lot of specific enterprise knowledge and in-depth understanding of structure of big databases.
That's why you need to learn about database design.

What can I do after finishing learning about database design?

You will know how to design a relational database and write SQL code PROPERLY. You will know how to build a data warehouse. You will know WHEN you should use a relational database management system or WHEN you should use a NoSQL database management system and HOW they actually work.

That sounds useful! What should I do now?

Please read this Stephane Faroult and Peter Robson (2006). The Art of SQL. O'Reilly Media book first.
Then please read
- this W.H. Inmon (2003). Building The Data Warehouse. Wiley book and
- this Ralph Kimball and Margy Ross (2002). The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling. Wiley book and
- this Vincent Rainardi (2008). Building a Data Warehouse: With Examples in SQL Server. Apress book.
After that please read
- this Pramod J. Sadalage and Martin Fowler (2012). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley Professional book, and
- this Martin Kleppmann (2017). Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. O'Reilly Media book, and
- this Alex Petrov (2019). Database Internals. O'Reilly Media book to learn about designing big data systems.
Finally, please read 
- this C. J. Date (2019). Database Design and Relational Theory: Normal Forms And All That Jazz. Apress book and 
- this C. J. Date (2015). SQL and Relational Theory: How to Write Accurate SQL Code. O'Reilly Media book.
After finishing the books please click Topic 15 - Advanced Software Design to continue.