Ответ
Нет, таблица всегда принадлежит какой-либо схеме. Схема — это логический namespace внутри базы данных для группировки объектов (таблиц, представлений, функций).
Практика в DevOps и различных СУБД:
-
Схема по умолчанию: Если схема не указана явно, используется схема по умолчанию, определяемая параметром
search_path(в PostgreSQL) или именем пользователя.- PostgreSQL: По умолчанию
public.CREATE TABLE users (...);создаст таблицуpublic.users. - MySQL: Понятие «база данных» (
CREATE DATABASE) часто используется как аналог схемы.USE mydb; CREATE TABLE users(...);. - Oracle: Схема обычно соответствует имени пользователя.
- PostgreSQL: По умолчанию
-
Управление через инфраструктуру как код (IaC): В миграциях всегда явно указывайте схему для избежания неоднозначностей.
-- Пример для PostgreSQL в миграции Liquibase/Flyway CREATE TABLE IF NOT EXISTS app_core.users ( id BIGSERIAL PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE ); GRANT SELECT ON app_core.users TO read_user; -
Исключение — SQLite: SQLite не имеет полноценной концепции схем. Все таблицы находятся в основном пространстве имен базы данных файла.
Для DevOps важно: Использование схем позволяет изолировать данные разных микросервисов в одной БД (хотя это и антипаттерн), управлять правами доступа на уровне схем и организовывать структуру проекта.