Ответ 1
В Oracle:
- серверный экземпляр == database == каталог == все данные, управляемые одним и тем же механизмом выполнения
- schema == пространство имен в базе данных, идентичное учетной записи пользователя
- user == владелец схемы == named account, идентичный схеме, который может подключаться к базе данных, кому принадлежит схема и использовать объекты, возможно, в других схемах
- для идентификации любого объекта на запущенном сервере, вам нужно (имя схемы + имя объекта)
В PostgreSQL:
- серверный экземпляр == db cluster == все данные, управляемые одним и тем же механизмом выполнения
- база данных == каталог == одиночная база данных в кластере db, изолированная от других баз данных в том же кластере db
- схема == пространство имен внутри базы данных
- user == named account, которая может подключаться к базе данных, самостоятельно использовать и использовать объекты в каждой разрешенной базе данных отдельно
- для идентификации любого объекта на запущенном сервере, вам нужно (имя базы данных + имя схемы + имя объекта)
В MySQL:
- серверный экземпляр == не идентифицирован с каталогом, просто набор баз данных
- database == schema == catalog == пространство имен внутри сервера.
- user == named account, кто может подключиться к серверу и использовать (но не может владеть - без понятия собственности) объекты в одной или нескольких базах данных
- для идентификации любого объекта на запущенном сервере, вам нужно (имя базы данных + имя объекта)
В Microsoft SQL Server:
- серверный экземпляр == набор управляемых баз данных
- база данных == определитель пространства имен на сервере, редко называемый каталогом
- schema == owner == пространство имен в базе данных, привязанное к ролям базы данных, по умолчанию используется только
dbo
- user == named account, которая может подключаться к серверу и использовать (но не может владеть - схема работает как владелец) в одной или нескольких базах данных
- для идентификации любого объекта на запущенном сервере, вам нужно (имя базы данных + имя владельца + объекта)
Итак, я думаю, что ответ на ваши вопросы:
-
Это зависит от реализации, требуется ли имя каталога для идентификации объектов. Значение "каталог", "схема" и "база данных" варьируется от одной реализации к другой.
-
Да, каталог - это абстракция хранения данных. Я думаю, что это также должно быть определено как автономное изолированное пространство имен, но не все его SQL-устройства делают это.
-
База данных и схема довольно хорошо определены всеми поставщиками. Каталог иногда является синонимом "базы данных" (по крайней мере, в Oracle и Postgres), иногда синонимом "схемы", а иногда и синонимом для обоих. Каталог терминов также часто означает сбор метаданных (также называемых системными таблицами).