При разработке схемы реляционной базы данных для веб-приложений я часто сталкиваюсь с тем, что в конечном итоге я создаю таблицу, содержащую только одну строку и только одну строку. Такое ощущение, что это неправильный способ его разработки, но я не могу придумать что-то значительно лучше, или это, очевидно, «правильный способ сделать это».
Недавним примером является сайт, который позволяет пользователям вручную управлять контентом на домашней странице. Ну, есть только одна домашняя страница. Я создал таблицу, в которой были все необходимые поля для создания домашней страницы, например текстовое поле для области, содержащей текст описания. Поле для хранения имени большого файла изображения. Некоторые внешние ключи, которые указывают на статьи, которые будут размещены на главной странице и т. Д. Это работает, но кажется неправильным иметь таблицу с одной строкой.
В прошлом я пробовал много других проектов, таких как включение нескольких строк в таблицу домашней страницы и выбор одного из них наугад. Я попытался добавить логическое поле с именем «active» и выбрать одну из активных домашних страниц наугад. Я попытался заставить только одну строку быть активной в любой момент времени в логике приложения. Я даже не пытался создать таблицу домашней страницы и иметь все другие элементы, например статьи, чтобы иметь логические поля с именами, такими как featured_on_homepage.
В большинстве случаев я мог создать домашнюю страницу с кучей констант в файле настроек. Основная проблема с файлом настроек заключается в том, что он находится под контролем разработчика. Поскольку что-то вроде содержимого домашней страницы должно быть отредактировано пользователем, оно должно попасть в базу данных.
На многих сайтах у меня нет этой проблемы, потому что я могу создать такие вещи, как домашняя страница с запросом, например, выбрать пять новейших статей. Но когда у меня есть страницы, которые вручную обрабатываются со строгими требованиями, становится сложно моделировать их в базе данных. Но представьте, что у вас есть стол для фотографий и стол для статей. Требуется, чтобы на главной странице отображалось ровно пять фотографий, ровно три статьи и два блока произвольного текста, контролируемого пользователем вручную. Как вы моделируете это в базе данных правильным способом?
Кроме того, у меня есть эта проблема моделирования во многих других случаях, кроме домашних страниц. Это просто самый простой и наиболее применимый пример, который я мог придумать.