Розробляючи схему реляційних баз даних для веб-додатків, я часто знаходжу випадок, коли я в кінцевому підсумку створюю таблицю лише для того, щоб містити один рядок і лише один рядок. Схоже, це неправильний спосіб його проектування, але я не можу придумати щось значно краще, або це, очевидно, «правильний спосіб зробити це».
Недавній приклад - сайт, який дозволяє користувачам вручну контролювати вміст на домашній сторінці. Ну, є лише одна домашня сторінка. Я створив таблицю, в якій були всі необхідні поля для побудови домашньої сторінки, наприклад, текстове поле для області, яка містила описовий текст. Поле для збереження імені великого файлу зображень. Деякі закордонні ключі, які вказують на статті, які будуть розміщені на домашній сторінці тощо. Це працює, але почувати себе неправильно мати таблицю з одним рядком.
Раніше я пробував багато інших конструкцій, таких як допуск декількох рядків у таблиці домашньої сторінки та вибір навмання. Я спробував додати булеве поле з назвою "активний" і вибрав одну з активних домашніх сторінок навмання. Я намагався змусити лише один рядок бути активним в будь-який момент часу в логіці програми. Я намагався навіть не робити таблицю домашньої сторінки та мати всі інші елементи, такі як статті, щоб бути булевими полями з іменами типу Featured_on_homepage.
У більшості випадків я можу створити домашню сторінку з купою констант у файлі налаштувань. Основна проблема файлу налаштувань полягає в тому, що він знаходиться під контролем розробника. Оскільки щось на зразок вмісту домашньої сторінки - це те, що має редагуватись користувачем, воно має зайти в базу даних.
На багатьох сайтах у мене немає цієї проблеми, оскільки я можу будувати такі речі, як домашня сторінка, із запитом, таким як вибір п'яти найновіших статей. Але коли у мене є сторінки, які вручну підготовлені із суворими вимогами, стає складно моделювати її в базі даних. Але уявіть, у вас є таблиця фотографій та таблиця статей. Вимога полягає в тому, що на домашній сторінці відображатиметься рівно п’ять фотографій, рівно три статті та два блоки довільного тексту, керованого користувачем вручну. Як ви моделюєте це в базі даних правильним способом?
Крім того, у мене є проблема моделювання в багатьох інших випадках, окрім лише домашніх сторінок. Це просто найпростіший і загальноприйнятний приклад, який я міг придумати.