Database Modeling book — beta readers wanted
For the past few weeks I’ve been working on a book about database modeling. The approach explained in the book is based on Minimal Modeling.
The book is currently at 7500+ words, and I’m looking for some early beta readers. The book is aimed at beginners. Maybe you’ve read something about database modeling, but when it comes to real-world design, you’re not sure how to begin, or whether you’re doing it right. Maybe some parts are easy for you, but then you hit the wall when things become more complicated — the approach will provide some clarity.
This book assumes that you will use one of the traditional relational database servers, such as MySQL 8.0 and Postgres 15.
Are you interested? Drop me a line at squadette@gmail.com (or just reply to this email if you’re a subscriber). I’ll share a Google Doc, with comments enabled.
Do you know somebody who fits the description? Forward this post to them.
Looking forward to hearing from you!
Below is a copy of the introduction, and a table of contents so far:
Introduction
This document is an early draft of the book on database modeling.
The goal of this book is to take you from a vague idea of what you need to implement (e.g.: “I need to build a website to manage schedule and instructor appointments for our gym”), to complete definition of database tables.
First we prepare the definition of the data as a catalog in tabular format. This takes roughly half of the book. The rest of the book explains how to build the actual table definition (“CREATE TABLE
” statements). This process is completely straightforward.
One benefit of this intermediate catalog is that you get deep understanding of the business domain and the concrete implementation. You will be able to defend this design, be it in the job interview environment or on the database exam.
This book assumes that you will use one of the traditional relational database servers, such as MySQL 8.0 and Postgres 15. For teaching clarity we present one specific, commonly used approach to designing tables. In additional chapters we would explain other approaches that are widely used in practice, including non-relational databases.
This book is for you if you’re a beginner. Maybe you’ve read something about database modeling, but when it comes to real-world design, you’re not sure how to proceed, or if you’re doing it right. Also, if you struggle with some parts of the design, while other parts are clear and simple — the approach is supposed to provide clarity.
Even if you plan to use a non-relational database, such as MongoDB, Cassandra or DynamoDB, this book could help too. For most non-relational databases the common modeling advice is that you first need to build something akin to the entity-relationship model. This is exactly what is explained in the first part, “Building a minimal model”. Based on it, designing the table schemas for a non-relational environment also becomes much easier, because the business complexity gets out of the way and you can focus on technical aspects.
How the beta reading works
As part of the book creation process, I’m looking for beta-readers. I want you to read this book through as much as you can, and see if it helps you to reach your goal: getting to the tables.
This Google Doc is shared with commenting enabled. I’m looking for any sorts of comments, but most of all:
Fragments that confuse you (leave the “???” comment);
Fragments that are useful or helpful, or make you understand something (leave the “!!!” comment);
Fragments that are too long and not valuable (leave the “meh” comment);
Any other comments are welcome too. If something is omitted, not explained, taken for granted, but it’s something that you don’t know — please leave the comment.
Thank you!
Table of Contents
Introduction
How the beta reading works
Who am I
Table of Contents (planned)
Quick overview and example
Building a minimal model
Finding the list of anchors
Finding attributes
Data types and types of data
Defining links
Sentences
Cardinality
Creating tables
SQL Syntax
Action plan
Anchors: choosing table names
Attributes: choose column names
Attributes: choose column data types
Strings
Integer numbers
Monetary amounts
Numeric values
Yes/no values
Either/or/or values
Dates
Date with time
Binary blobs
Links
Links, only-one-to-many
Links, many-to-many
Who am I
My name is Alexey Makhotkin, I’ve been working with databases for more than 25 years in various roles: developer, database administrator, team lead, head of software engineering. I’ve built dozens of schemas along the years.
A few years ago I started the “Minimal Modeling” substack: https://minimalmodeling.substack.com, trying to summarize what I’ve learned. This book is the next step. You can also contact me at squadette@gmail.com.