En Oracle:
- instancia del servidor ==base de datos ==catálogo ==todos los datos administrados por el mismo motor de ejecución
- esquema ==espacio de nombres dentro de la base de datos, idéntico a la cuenta de usuario
- usuario ==propietario del esquema ==cuenta con nombre, idéntica al esquema, quién puede conectarse a la base de datos, quién es el propietario del esquema y utiliza objetos posiblemente en otros esquemas
- para identificar cualquier objeto en el servidor en ejecución, necesita (nombre de esquema + nombre de objeto)
En PostgreSQL:
- instancia del servidor ==db cluster ==todos los datos administrados por el mismo motor de ejecución
- base de datos ==catálogo ==base de datos única dentro del clúster de base de datos, aislada de otras bases de datos en el mismo clúster de base de datos
- esquema ==espacio de nombres dentro de la base de datos
- usuario ==cuenta con nombre, que puede conectarse a la base de datos, poseer y usar objetos en cada base de datos permitida por separado
- para identificar cualquier objeto en el servidor en ejecución, necesita (nombre de la base de datos + nombre del esquema + nombre del objeto)
En MySQL:
- instancia del servidor ==no identificada con el catálogo, solo un conjunto de bases de datos
- base de datos ==esquema ==catálogo ==un espacio de nombres dentro del servidor.
- usuario ==cuenta con nombre, que puede conectarse al servidor y usar (pero no puede poseer - sin concepto de propiedad) objetos en una o más bases de datos
- para identificar cualquier objeto en el servidor en ejecución, necesita (nombre de la base de datos + nombre del objeto)
En Microsoft SQL Server:
- instancia de servidor ==conjunto de bases de datos administradas
- base de datos ==calificador de espacio de nombres dentro del servidor, rara vez denominado catálogo
- esquema ==propietario ==espacio de nombres dentro de la base de datos, vinculado a los roles de la base de datos, por defecto solo
dbo
se usa - usuario ==cuenta con nombre, que puede conectarse al servidor y usar (pero no puede poseer - el esquema funciona como propietario) objetos en una o más bases de datos
- para identificar cualquier objeto en el servidor en ejecución, necesita (nombre de la base de datos + propietario + nombre del objeto)
Así que creo que la respuesta a tus preguntas es:
-
Depende de la implementación, si se necesita el nombre del catálogo para identificar objetos. El significado de "catálogo", "esquema" y "base de datos" varía de una implementación a otra.
-
Sí, un catálogo es una abstracción del almacenamiento de datos. Creo que también debería definirse como un espacio de nombres aislado e independiente, pero no todos los motores SQL lo hacen.
-
Base de datos y esquema están bastante bien definidos por todos los proveedores. Catálogo a veces es sinónimo de "base de datos" (al menos en Oracle y Postgres), a veces sinónimo de "esquema" y, a veces, sinónimo de ambos. El término catálogo a menudo también significa recopilación de metadatos (también conocido como tablas del sistema).