Tag Archives: Database Design

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 (i.e. for specific purposes). 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.