В порядке ознакомления с Django (+ Django Rest Framework) клепаю pet-project по добавлению-хранению результатов спортивных соревнований.
Пользователь может создать "ассоциацию", в которую входят "лиги", команды которых проводят как внутренние, так и межлиговые матчи в пределах ассоциации. (вдохновение черпал на примере футбола, в частности национальных лиг/кубка UEFA).
Где можно узнать подробнее, как нужно и как не нужно проектировать БД для подобного рода задач?
С базовыми принципами РМД и понятием нормальной формы знаком, но опыта проектирования как такового не было.
Относительно реляционных СУБД проектировать можно так.
Подробно описываешь предметную область
Выписываешь из предметной области все существительные и глаголы
Определяешь среди существительных что является сущностью, а что атрибутами сущности (атрибут является атомарным значением)
Строишь таблички (на каждую сущность - таблица) где указываешь атрибуты, у атрибутов тип данных и ключи (первичные и внешние), дописываешь недостающие атрибуты
На основе сущностей строишь блок-схему со связями между сущностями (на этом этапе допускается связь много ко многим)
Смотришь на эту схему и устраняешь очевидные недостатки, исправляешь места, в которых есть связь много ко многим (допустим с помощью ассоциативной таблицы)
Поздравляю, у тебя готова схема базы данных, а именно сущности (таблицы), атрибуты сущностей (столбцы), а так же связи между таблицами