В Oracle:
- екземпляр на сървъра ==база данни ==каталог ==всички данни, управлявани от една и съща машина за изпълнение
- schema ==пространство от имена в базата данни, идентично с потребителския акаунт
- потребител ==собственик на схема ==именуван акаунт, идентичен със схемата, който може да се свързва с базата данни, кой притежава схемата и използва обекти, евентуално в други схеми
- за да идентифицирате всеки обект в работещ сървър, имате нужда (име на схема + име на обект)
В PostgreSQL:
- екземпляр на сървъра ==db cluster ==всички данни, управлявани от една и съща машина за изпълнение
- база данни ==каталог ==единична база данни в рамките на db клъстер, изолирана от други бази данни в същия db клъстер
- schema ==пространство от имена в базата данни
- потребител ==именуван акаунт, който може да се свързва с базата данни, да притежава и използва обекти във всяка разрешена база данни поотделно
- за да идентифицирате всеки обект в работещ сървър, имате нужда (име на база данни + име на схема + име на обект)
В MySQL:
- екземпляр на сървъра ==не е идентифициран с каталог, а само набор от бази данни
- база данни ==схема ==каталог ==пространство от имена в сървъра.
- user ==име акаунт, който може да се свързва със сървъра и да използва (но не може да притежава - няма концепция за собственост) обекти в една или повече бази данни
- за да идентифицирате всеки обект в работещ сървър, имате нужда (име на база данни + име на обект)
В Microsoft SQL Server:
- екземпляр на сървъра ==набор от управлявани бази данни
- database ==квалификатор на пространство от имена в сървъра, рядко наричан каталог
- schema ==owner ==пространство от имена в базата данни, обвързано с роли на база данни, по подразбиране само
dbo
се използва - user ==име акаунт, който може да се свързва със сървъра и да използва (но не може да притежава - схемата работи като собственик) обекти в една или повече бази данни
- за да идентифицирате всеки обект в работещ сървър, имате нужда (име на база данни + собственик + име на обект)
Така че мисля, че отговорът на вашите въпроси е:
-
Зависи от реализацията дали е необходимо име на каталог за идентифициране на обекти. Значението на „каталог“, „схема“ и „база данни“ варира от една реализация до друга.
-
Да, каталогът е абстракция на съхранение на данни. Мисля, че трябва да се дефинира и като самостоятелно изолирано пространство от имена, но не всички SQL машини го правят.
-
База данни и схема са доста добре дефинирани от всички доставчици. Каталог понякога е синоним на "база данни" (поне в Oracle и Postgres), понякога синоним на "схема", а понякога и на двете. Терминът каталог също често означава събиране на метаданни (известни още като системни таблици).