Différence entre base de données et schéma

166

Quelle est la différence entre une base de données et un schéma dans SQL Server? Les deux sont les conteneurs de tables et de données.

Si un schéma est supprimé, toutes les tables contenues dans ce schéma sont-elles également supprimées automatiquement ou sont-elles supprimées lorsque la base de données est supprimée?

sqlchild
la source

Réponses:

171

Une base de données est le conteneur principal, elle contient les données et les fichiers journaux, ainsi que tous les schémas qu'elle contient. Vous sauvegardez toujours une base de données, c'est une unité discrète à elle seule.

Les schémas sont comme des dossiers dans une base de données et sont principalement utilisés pour regrouper des objets logiques, ce qui facilite la définition des autorisations par schéma.

MODIFIER pour une question supplémentaire

drop schema test1

Msg 3729, niveau 16, état 1, ligne 1
Impossible de supprimer le schéma «test1» car il est référencé par l'objet «copyme».

Vous ne pouvez pas supprimer un schéma lorsqu'il est en cours d'utilisation. Vous devez d'abord supprimer tous les objets du schéma.

Lecture connexe:

  1. À quoi servent les schémas SQL Server?
  2. MSDN: séparation utilisateur-schéma
RichardTheKiwi
la source
5
dans SQL Server 2005 et versions supérieures, par défaut, tout va à l'intérieur du schéma DBO si nous ne mentionnons aucun nom de schéma lors de la création des objets de base de données?
sqlchild
@sqlchild oui c'est vrai. Un schéma est requis, chaque objet est contenu dans un schéma, donc la valeur par défaut est dbo
RichardTheKiwi
Envisageriez-vous de répliquer des tables dans la même base de données et de les regrouper dans un schéma selon différents clients, au lieu de créer une base de données séparée pour chaque client, une bonne pratique?
Yevgraf Andreyevich Zhivago
La logique est-elle la même pour AWS Redshift? N'importe qui? Je suis confus entre les deux en termes d'AWS.
Aakash Basu
19

Le schéma est un moyen de catégoriser les objets dans une base de données. Cela peut être utile si plusieurs applications partagent une seule base de données et qu'il existe un ensemble commun de données auquel toutes les applications accèdent.

demas
la source
12

La base de données est comme un conteneur de données avec un schéma, et les schémas sont la disposition des tables, des types de données, des relations et des trucs

Saghir A. Khatri
la source
1
Ce n'est pas correct pour SQL Server en particulier; Les tables ont des schémas dans les bases de données générales oui, mais les schémas (pour qui sait quelle raison) dans SQL Server sont également des espaces de noms qui contiennent des tables (et ces tables ont également des schémas au sens traditionnel). Le nom malheureux que Microsoft a choisi pour eux - namespaceest beaucoup plus approprié.
SacredSkull
7

Le schéma indique quelles tables sont dans la base de données, quelles colonnes elles ont et comment elles sont liées. Chaque base de données a son propre schéma.

Robert
la source
mais si je ne crée aucun schéma explicitement et crée des tables sans mentionner aucun nom de schéma, alors où les tables sont créées. par défaut, ils doivent entrer dans le schéma dbo. n'est-ce pas?
sqlchild
oui mais généralement vous ne traitez pas le schéma manuellement, vous créez des tables soit à partir d'un outil de gestion, soit en utilisant la première fonctionnalité de code d'un outil ORM
Robert
J'utilise SQL Server Management Studio et je ne mentionne aucun nom de schéma
sqlchild
4

Le schéma dans SQL Server est un objet qui contient conceptuellement des définitions pour d'autres objets de base de données tels que des tables, des vues, des procédures stockées, etc.

Hardik Mishra
la source