Что такое schema в БД?
Что такое schema в postgreSQL? Её надо создавать сразу после создания БД? Это логическое устройство таблиц, наполнения, прав и т.д. И тогда может быть много схем и они могут использовать общие таблицы?
Ответы (1 шт):
Schemas are analogous to directories at the operating system level, except that schemas cannot be nested.
Схемы - это дополнительный уровень структурирования объектов базы. Похоже на директории в файловой системе или пространства имён (namespace) в программировании. Но не могут быть вложенными.
Пользуясь аналогией с файловой системой и вебом: есть файлы стилей CSS, какие-то JS. Ничто не мешает их все размещать в корневой директории веб-сервера. Но обычно их размещают всё-таки в поддиректориях для собственного удобства.
После создания новой базы у вас будет предопределённая схема public с правами для создания новых объектов для всех пользователей. Что делать дальше - решение разработчика схемы этой базы, проигнорировать схемы и размещать всё в public, структурировать как-либо по схемам, можно удалить public схему даже.
Делать таблицы:
usersuser_settingsuser_favoritesblog_postsblog_comments
Или же:
usersusers.settingsusers.favoritesblog.postsblog.comments
Самой базе без разницы. Схемы - это логический уровень, как названия таблиц.
Большинство проектов схемы не используют.
Права: у схем есть права create - кто может создавать новые объекты, и usage - кто может обращаться к объектам в той схеме. Поэтому может быть удобно для разработчиков сделать отдельную схему user_tmp и исключить её из бекапов, а в остальные схемы не давать прав create - тем самым форсируя, что таблицы приложения проходят через обычную принятую у вас процедуру миграций.
Для полноты картины: схемы public может и не быть, если она была удалена в базе, которая указанна в template опции create database