Dans Oracle :
- instance de serveur ==base de données ==catalogue ==toutes les données gérées par le même moteur d'exécution
- schema ==namespace dans la base de données, identique au compte utilisateur
- utilisateur ==propriétaire du schéma ==compte nommé, identique au schéma, qui peut se connecter à la base de données, qui possède le schéma et utilise éventuellement des objets dans d'autres schémas
- pour identifier n'importe quel objet dans le serveur en cours d'exécution, vous avez besoin de (nom de schéma + nom d'objet)
Dans PostgreSQL :
- instance de serveur ==cluster db ==toutes les données gérées par le même moteur d'exécution
- base de données ==catalogue ==base de données unique dans le cluster db, isolée des autres bases de données dans le même cluster db
- schema ==namespace dans la base de données
- utilisateur ==compte nommé, qui peut se connecter à la base de données, posséder et utiliser des objets dans chaque base de données autorisée séparément
- pour identifier n'importe quel objet dans le serveur en cours d'exécution, vous avez besoin de (nom de la base de données + nom du schéma + nom de l'objet)
Dans MySQL :
- instance de serveur ==non identifiée avec le catalogue, juste un ensemble de bases de données
- database ==schema ==catalog ==un espace de noms au sein du serveur.
- utilisateur ==compte nommé, qui peut se connecter au serveur et utiliser (mais ne peut pas posséder - pas de notion de propriété) des objets dans une ou plusieurs bases de données
- pour identifier n'importe quel objet dans le serveur en cours d'exécution, vous avez besoin de (nom de la base de données + nom de l'objet)
Dans Microsoft SQL Server :
- instance de serveur ==ensemble de bases de données gérées
- database ==qualificatif d'espace de noms au sein du serveur, rarement appelé catalogue
- schema ==owner ==namespace dans la base de données, lié aux rôles de la base de données, par défaut uniquement
dbo
est utilisé - utilisateur ==compte nommé, qui peut se connecter au serveur et utiliser (mais ne peut pas posséder - le schéma fonctionne en tant que propriétaire) objets dans une ou plusieurs bases de données
- pour identifier n'importe quel objet dans le serveur en cours d'exécution, vous avez besoin de (nom de la base de données + propriétaire + nom de l'objet)
Je pense donc que la réponse à vos questions est :
-
Cela dépend de l'implémentation, si le nom du catalogue est nécessaire pour identifier les objets. La signification de "catalogue", "schéma" et "base de données" varie d'une implémentation à l'autre.
-
Oui, un catalogue est une abstraction du stockage des données. Je pense qu'il devrait également être défini comme un espace de noms isolé autonome, mais tous les moteurs SQL ne le font pas.
-
Base de données et schéma sont assez bien définis par tous les fournisseurs. Catalogue est parfois synonyme de "base de données" (au moins dans Oracle et Postgres), parfois synonyme de "schéma", et parfois synonyme des deux. Le terme catalogue signifie également souvent la collecte de métadonnées (alias tables système).