База данных нужна сайту, когда записи должны добавляться, меняться, связываться с пользователями или переживать обновление страницы. Рабочая схема состоит из таблиц, серверного или защищённого API, правил доступа и резервного копирования. Ниже показан минимальный путь для каталога или заявок, а также границы, где простой файл надёжнее базы.
Сначала проверьте, нужна ли сайту база
Не каждая страница выигрывает от базы данных. Статический текст, контакты и небольшой каталог, который меняет один редактор, проще хранить в CMS, JSON-файле или таблице сборки. База оправдана, когда данные вводят разные люди, нужны личные записи, поиск, статусы или связи между сущностями.
- Форма обратной связи может отправлять письмо без собственной базы, если история заявок не нужна на сайте.
- Каталог с редкими обновлениями может жить в CMS или файле.
- Личный кабинет, заказы, комментарии и бронирования требуют постоянного хранилища и правил доступа.
- Секретные данные нельзя хранить в JavaScript, HTML или публичном JSON.
- Если проекту нужна одна полезная функция, сначала ограничьте MVP, как в плане сайта-сервиса.
База данных начинается не с кнопки «Создать проект», а со списка сущностей, действий и ролей. Если нельзя объяснить, кто какую строку читает и меняет, подключать сайт ещё рано.
Карта результата для первой версии
Возьмём безопасный учебный пример: каталог заявок без паролей и платёжных данных. Посетитель отправляет имя, контакт и сообщение, оператор видит заявки в закрытой панели и меняет статус. Это уже требует записи, чтения и обновления, но не вынуждает строить сложную систему.
- Сущность: заявка.
- Поля: идентификатор, имя, контакт, сообщение, статус, время создания.
- Роли: посетитель создаёт запись, оператор читает и меняет статус.
- Публичное действие: только добавление заявки через проверенный обработчик.
- Закрытые действия: список заявок, контактные данные, смена статуса и удаление.
- Проверка: посетитель не может получить чужие строки даже прямым запросом к API.
Если нужна только отправка формы, сравните этот план с более простым вариантом в статье про сайт с формой заявки. База добавляет ответственность: данные надо защищать, очищать, копировать и удалять по правилам проекта.
Теория понятна, дальше нужен ваш сайт, а не пример из статьи. На бесплатном вебинаре страницу собирают с нуля и сразу публикуют в интернете.
Собрать свой сайтКак устроена связка сайта и базы данных
У реляционной базы данные лежат в таблицах с одинаковыми наборами колонок для строк. Официальное руководство PostgreSQL описывает таблицы, строки и типы данных, а также отдельно рассматривает запросы, связи и транзакции: учебник PostgreSQL.
Обычная безопасная цепочка выглядит так: браузер отправляет запрос API, сервер проверяет данные и права, затем обращается к базе. PostgreSQL использует клиент-серверную модель, где веб-сервер выступает одним из клиентов базы: архитектура PostgreSQL. Прямой адрес базы и пароль не должны попадать в код страницы.
Браузер -> HTTPS API -> проверка входных данных -> база
База -> результат -> фильтрация ответа -> браузер
По теме: Как сделать сайт мобильным приложением: PWA в 2026
Какой способ подключения выбрать
Есть три практических пути. Выбор зависит не от модного названия сервиса, а от данных, ролей и возможности обслуживать сервер.
- CMS или конструктор с коллекциями выбирайте для контента, каталога и простых форм, если платформа уже даёт роли и резервное копирование.
- Управляемый Postgres с готовым API подходит для вайб-кодинга MVP, если вы готовы настроить авторизацию и правила на каждую таблицу.
- Свой backend и база нужны, когда есть сложная бизнес-логика, интеграции, фоновые задачи или требования к инфраструктуре.
Для сайта с регистрацией база является только одним слоем. Пароли, сессии и восстановление доступа требуют отдельного контура, поэтому используйте план регистрации на сайте, а не добавляйте колонку password в учебную таблицу.
Минимальная схема без лишних полей
Начните с одной таблицы requests. Не храните несколько значений через запятую в одной ячейке и не используйте имя человека как идентификатор. Идентификатор должен быть уникальным, статус должен принимать только заранее разрешённые значения, а время создания должно ставиться системой.
create table requests (
id bigint generated always as identity primary key,
name text not null,
contact text not null,
message text not null,
status text not null default 'new',
created_at timestamptz not null default now()
);
Этот пример показывает структуру, но сам по себе не защищает доступ и не заменяет миграцию. Перед рабочим запуском добавьте ограничение допустимых статусов, лимиты длины строк и правила удаления. Изменения схемы храните как последовательные миграции, чтобы тестовая и рабочая базы не расходились.
Один собранный сайт учит больше десяти инструкций, потому что ошибки видны сразу. На бесплатном эфире по вайбкодингу показывают, как описать идею словами и получить работающую страницу, а участникам достаётся гайд.
Собрать сайт с ИИКак подключить управляемую базу безопасно
В сервисах с доступом из браузера безопасность строится на ограниченном публичном ключе и правилах для строк. Supabase указывает, что таблицы, доступные через Data API, нужно защищать Row Level Security и выдавать ролям только необходимые права: официальное руководство по RLS.
Публикуемый ключ может находиться во фронтенде только вместе с корректными правилами. Секретный ключ или роль, обходящая RLS, должны оставаться на сервере: руководство Supabase по защите данных. Если сервис предлагает один полный ключ для всех операций, не вставляйте его на страницу, поставьте между сайтом и базой backend.
- Создайте отдельный тестовый проект и таблицу по минимальной схеме.
- Включите RLS до подключения формы.
- Отзовите лишние права и разрешите только нужные операции.
- Для публичной формы разрешите добавление только через проверяемую политику или серверную функцию.
- Чтение заявок оставьте авторизованной роли оператора.
- Проверьте разрешённый и запрещённый сценарий разными пользователями.
- Только после теста перенесите миграцию и настройки в рабочий проект.
По теме: Как сделать сайт-мессенджер: план MVP с авторизацией и чатом
Как проверить базу до публикации
Проверка «заявка появилась» недостаточна. Нужны положительные и отрицательные тесты. Запишите ожидаемый код ответа, видимые поля и состояние таблицы после каждого шага.
- Корректная заявка создаёт одну строку, повторное нажатие не создаёт дубликат.
- Пустое имя, слишком длинное сообщение и неверный формат контакта отклоняются до записи.
- Неавторизованный запрос списка заявок получает отказ, а не пустую страницу с кодом успеха.
- Оператор видит только нужные поля и может сменить статус.
- Удалённая или изменённая запись отражается после обновления страницы.
- Резервная копия создаётся, а восстановление проверяется на отдельной тестовой базе.
- Логи не содержат пароли, секретные ключи и полные контактные данные.
Диагностика по симптому
Форма пишет «успешно», но строки нет. Проверьте ответ API и серверный журнал. Интерфейс не должен показывать успех до подтверждения записи. Затем проверьте имя таблицы, обязательные поля и права insert.
В браузере ошибка доступа. Не отключайте защиту целиком. Сначала определите роль запроса, затем проверьте выданное право и отдельную политику для нужной операции. Слишком строгая политика безопаснее временной публичной записи и чтения.
Посетитель видит чужие данные. Немедленно закройте endpoint или отзовите публичное чтение. После этого проверьте каждое правило с двумя учётными записями и оцените, какие данные могли быть раскрыты.
Тест работает, рабочий сайт нет. Сравните переменные окружения, адрес API, миграции и правила доступа. Не копируйте рабочий секрет во фронтенд ради быстрой проверки.
По теме: Как создать свой конструктор сайтов: план MVP в 2026
Ограничения и случаи, когда нужен специалист
Учебная схема не подходит для платежей, медицинских сведений, документов, массовой рассылки и сложной многопользовательской системы. Там нужны отдельная модель угроз, требования закона, аудит доступа, шифрование, план восстановления и наблюдение за сбоями. Если потеря или утечка строки причиняет реальный ущерб, привлеките backend-разработчика до запуска.
Для простой публичной таблицы без редактирования база тоже может быть избыточна. Сначала оцените вариант сайта с таблицей: файл или CMS легче проверить и восстановить, если данные обновляет один человек.
Частые вопросы
Можно ли сделать базу данных сайта без программирования?
Да, через CMS, конструктор или управляемую платформу. Но правила доступа, резервное копирование и отрицательные тесты остаются обязательными, даже если код генерирует сервис.
Какую базу выбрать для первого сайта?
Если нужны связанные записи и развитие проекта, обычно удобен управляемый реляционный сервис. Если данные только показываются и редко меняются, начните с CMS или файла.
Можно ли подключить базу прямо из HTML?
Статический HTML не должен содержать полный пароль базы. Допустим защищённый Data API с ограниченным публикуемым ключом и RLS, либо собственный серверный endpoint.
Нужна ли отдельная база для каждого сайта?
Не всегда. Один сервер базы может обслуживать несколько приложений, но разделяйте проекты, роли, схемы и резервные копии так, чтобы ошибка одного сайта не открыла данные другого.
На воркшопе по сайтам с ИИ вы соберёте проект от структуры до публикации и научитесь проверять рабочий путь, а не только внешний вид страницы.
Записаться на воркшоп