Database design is a seemingly natural process, lending itself to everyone trying to do it themselves, from an administrative assistant with a spreadsheet to a C# programmer with a copy of SQL Server Express. Unfortunately the finer points of excellent database design are not intuitively obvious and the difference between building a spreadsheet and a solid enterprise database is similar to the difference between building a doghouse and a 2 story house, or even the Empire State Building. In order to design a database correctly, there are several things you need to understand, including some basic understanding of relational theory, gathering and applying requirements, normalization, etc. Even then, while having the knowledge of fundamentals is more than many database designers have, it only the start. In this workshop, we will go to the next level and get our hands dirty designing databases too. We will structure the day with an extended session of database design fundamentals followed by designing several databases as a class, in groups, and individually. This will be followed up with another extended session on some advanced topics about database design patterns and practices and more design time.