У меня многолетний опыт работы инженером-программистом, и я много работал с базами данных, в основном с Oracle и Postgres. Я использую то, что можно снисходительно назвать неформальной методологией проектирования схем баз данных. Я набрасываю что-то вроде диаграммы E/R, а затем генерирую на ее основе DDL. Со временем я изменяю схему оттуда по мере поступления новых требований. У меня была тщательная академическая подготовка в области компьютерных наук, и я написал магистерские и докторские диссертации по темам, связанным с базами данных. Я понимаю зависимости, нормальные формы и подход декомпозиции. И я считаю этот подход к дизайну схемы совершенно бесполезным в реальном мире.
Сейчас я преподаю курс для старшеклассников по системам баз данных и добросовестно изучил классический материал по проектированию схем, включая зависимости, нормальные формы и декомпозицию. Но я по-прежнему не убежден в действительной ценности этого подхода.
Обсуждения этих теоретических тем в учебниках начинаются с очень плохо разработанных схем и функциональных зависимостей, которые происходят из... ну, я не знаю. Они просто есть, и затем они ведут вас к лучшей схеме. Но, начав с хорошей модели Entity/Relationship, вы, вероятно, начнете с довольно хорошей схемы. И если вы понимаете, что представляют собой ваши сущности и каковы их атрибуты, разве вы не начинаете с таблиц, уже находящихся в BCNF?
Для тех из вас, кто разрабатывает и поддерживает схемы, вы действительно используете теорию зависимостей и нормальные формы? Или ты просто качаешься, как я?