Last month I talked about the importance of Data Modeling, and the fundamentals of how to build a workable model for your database structure. The article covered the basic components of any Data Model: Entities, Attributes and Relationships. These are the vital components necessary to a well-defined database infrastructure, and the key to maintaining the data elements needed by your application. This brings the idea that all data is relational into real world practice.
In this article, I’m going to walk through building a more complex model, and introduce the concept of database normalization and de-normalization. These concepts are vital for designing a database that will perform as you expect. Further, when considering a Big Data database, you will see how normalization and de-normalization are key components for defining a truly scalable database architecture (the topic of many future articles).
Introducing the Angry Shards Game Database
For a data modeling exercise to be useful at all, we need a real application to model. Over the years I have used all kinds of examples (most of them very boring unfortunately). To make this more interesting and relevant to today’s applications, we’ll look at a game database, specifically one which powers a game called Angry Shards. Angry Shards is a simple game database we use at CodeFutures to demonstrate how database scalability works (admittedly with a bit of fun in the mix).