Quelle est la différence entre un schéma et une table et une base de données?


155

C'est probablement une question n00blike (ou pire). Mais j'ai toujours considéré un schéma comme une définition de table dans une base de données. C'est faux ou pas tout à fait correct. Je ne me souviens pas beaucoup de mes cours de base de données.


3
Dans le schéma oracle, il est simplement fait référence à un utilisateur. C'est à ce moment-là que nous créons un utilisateur, le schéma sera créé maintenant, nous pouvons ajouter des tables, des vues, des index, des packages, etc. comme
Ali786

Réponses:


242

schéma : base de données : table :: plan d'étage : maison : pièce


81
Un peu énigmatique, mais pas faux; mais pensez-vous vraiment qu'un n00b autoproclamé comprendrait cela?
Stein G. Strindhaug

6
Bonne analogie. Je changerais "plan d'étage" en "bleus" parce que le schéma contient plus que de simples tableaux et que les plans contiennent le câblage, le chauffage et la plomberie.
Paul Tomblin

4
«Schéma» signifie simplement «plan». Je l'ai vu utilisé pour désigner la base de données entière, ou juste une table ou une vue.
MusiGenesis

@Paul: bons points. J'ai initialement écrit "blueprints" mais je l'ai changé parce que cela ne signifie pas vraiment "house" (du moins pas pour moi).
MusiGenesis

4
Oui, j'ai tendance à voir un schéma en tant qu'utilisateur dans Oracle. Donc, les définitions varient même de db à db: D Comme c'est ennuyeux.
Robert

123

Un schéma de relation est la définition logique d'une table - il définit le nom de la table, ainsi que le nom et le type de chaque colonne. C'est comme un plan ou un plan. Un schéma de base de données est la collection de schémas de relations pour une base de données entière.

Une table est une structure avec un tas de lignes (aka "tuples"), dont chacune a les attributs définis par le schéma. Les tables peuvent également contenir des index pour faciliter la recherche de valeurs sur certaines colonnes.

Une base de données est, formellement, toute collection de données. Dans ce contexte, la base de données serait une collection de tables. Un SGBD (système de gestion de base de données) est le logiciel (comme MySQL, SQL Server, Oracle, etc.) qui gère et exécute une base de données.


1
Un schéma de base de données comprend également des index, des vues, etc.
Paul Tomblin

1
ce n'est certainement pas correct. une base de données n'est pas une collection de tables en tant que telle. Vous pouvez avoir 30 bases de données sans avoir une table par exemple.
Robert

@Robert - quel serait l'intérêt d'avoir une base de données sans tables?
Paul Tomblin

16
Même si vous n'avez pas de tables, c'est toujours une collection de tables - c'est une collection vide de tables.
Jon Skeet

1
@Ian: n'oubliez pas qu'une base de données aura aussi des contraintes - contraintes référentielles (clés primaires, clés étrangères), contraintes d'unicité et contraintes de vérification. Il peut également inclure des déclencheurs et des procédures.
Jonathan Leffler

16

En un mot, un schéma est la définition de l'ensemble de la base de données, il comprend donc des tables, des vues, des procédures stockées, des index, des clés primaires et étrangères, etc.


12

Il a été démontré que cette écriture particulière concerne uniquement Oracle et que la définition du schéma change dans le contexte d'une autre base de données.

Probablement le genre de chose à rechercher sur Google, mais les termes pour info semblent varier dans leurs définitions, ce qui est la chose la plus ennuyeuse :)

Dans Oracle, une base de données est une base de données. Dans votre tête, pensez à cela comme aux fichiers de données et aux fichiers de journalisation et à la présence physique réelle sur le disque de la base de données elle-même (c'est-à-dire pas à l'instance)

Un schéma est en fait un utilisateur. Plus précisément, il s'agit d'un ensemble de tables / procs / index, etc. appartenant à un utilisateur. Un autre utilisateur a un schéma différent (tables qu'il possède), mais l'utilisateur peut également voir tous les schémas sur lesquels il a sélectionné des privilèges. Ainsi, une base de données peut être constituée de centaines de schémas et chaque schéma de centaines de tables. Vous pouvez avoir des tables avec le même nom dans différents schémas, qui se trouvent dans la même base de données.

Une table est une table, un ensemble de lignes et de colonnes contenant des données et est contenue dans des schémas.

Les définitions peuvent être différentes dans SQL Server par exemple. Je n'en suis pas conscient.


11

Le schéma se comporte comme un objet parent comme on le voit dans le monde POO. ce n'est donc pas une base de données en soi. peut - être que ce lien est utile.

Mais, dans MySQL, les deux sont équivalents. Le mot-clé DATABASE ou DATABASES peut être remplacé par SCHEMA ou SCHEMAS partout où il apparaît. Exemples:

  • CRÉER UNE BASE DE DONNÉES <=> CRÉER UN SCHÉMA
  • AFFICHER LES BASES DE DONNÉES <=> AFFICHER LES SCHÉMAS

Documentation de MySQL

Les termes SCHEMA & DATABASE dépendent du SGBD.

Une table est un ensemble d'éléments de données (valeurs) qui est organisé à l'aide d'un modèle de colonnes verticales (identifiées par leur nom) et de lignes horizontales. Une base de données contient une ou plusieurs tables (généralement) . Et vous stockez vos données dans ces tableaux. Les tableaux peuvent être liés les uns aux autres ( voir ici ).


réponse valable
sofs1

2

En savoir plus sur les schémas:

Dans SQL 2005, un schéma est un moyen de regrouper des objets. C'est un conteneur dans lequel vous pouvez placer des objets. Les gens peuvent posséder cet objet. Vous pouvez accorder des droits sur le schéma.

En 2000, un schéma équivalait à un utilisateur. Maintenant, il s'est libéré et est très utile. Vous pouvez lancer tous vos processus utilisateur dans un certain schéma et vos processus d'administration dans un autre. Accordez EXECUTE à l'utilisateur / rôle approprié et vous avez terminé d'accorder EXECUTE sur des procédures spécifiques. Agréable.

La notation par points ressemblerait à ceci:

Server.Database.Schema.Object

ou

myserver01.Adventureworks.Accounting.Beans


2

A Schemaest une collection d'objets de base de données qui comprend également des structures logiques. Il porte le nom de l'utilisateur qui le possède. A databasepeut avoir n'importe quel nombre de schémas. Une table d'une base de données peut apparaître dans deux schémas différents du même nom. Un utilisateur peut afficher tout schéma pour lequel le privilège de sélection lui a été attribué.


2

Comme MusiGenesis l'a si bien dit, dans la plupart des bases de données:

schéma: base de données: table :: plan d'étage: maison: pièce

Mais, dans Oracle, il peut être plus facile de penser à:

schéma: base de données: table :: propriétaire: maison: pièce


2

Contrairement à certaines des réponses ci-dessus, voici ma compréhension basée sur l'expérience de chacune d'elles:

  • MySQL: database/schema :: table
  • Serveur SQL: database :: (schema/namespace ::) table
  • Oracle: database/schema/user :: (tablespace ::) table

Veuillez me corriger si le tablespace est facultatif ou non avec Oracle, cela fait longtemps que je ne me souviens pas de les utiliser.


1

Dans oracle, le schéma est un utilisateur sous une base de données, par exemple scott est un schéma dans la base de données orcl. Dans une base de données, nous pouvons avoir de nombreux schémas comme scott


1

Une base de données contient un ou plusieurs schémas nommés, qui à leur tour contiennent des tables. Les schémas contiennent également d'autres types d'objets nommés, notamment des types de données, des fonctions et des opérateurs. Le même nom d'objet peut être utilisé dans différents schémas sans conflit; par exemple, schema1 et myschema peuvent contenir des tables nommées mytable. Contrairement aux bases de données, les schémas ne sont pas séparés de manière rigide: un utilisateur peut accéder aux objets de n'importe lequel des schémas de la base de données à laquelle il est connecté, s'il dispose des privilèges pour le faire.

Il y a plusieurs raisons pour lesquelles on peut vouloir utiliser des schémas:

Pour permettre à de nombreux utilisateurs d'utiliser une base de données sans interférer les uns avec les autres.

Pour organiser les objets de base de données en groupes logiques pour les rendre plus faciles à gérer.

Les applications tierces peuvent être placées dans des schémas distincts afin de ne pas entrer en collision avec les noms d'autres objets.

Les schémas sont analogues aux répertoires au niveau du système d'exploitation, sauf que les schémas ne peuvent pas être imbriqués.

La documentation officielle peut être consultée https://www.postgresql.org/docs/9.1/ddl-schemas.html


0

Les schémas contiennent des bases de données.

Les bases de données font partie d'un schéma.

Donc, schémas> bases de données.

Les schémas contiennent des vues, des procédures stockées, des bases de données, des déclencheurs, etc.


0

Un schéma n'est pas un plan pour l'ensemble de la base de données. C'est un plan / conteneur pour un sous-ensemble d'objets (ex. Tables) dans une base de données.

Cela veut dire que vous pouvez avoir plusieurs objets (ex. Tables) dans une même base de données qui ne relèvent pas nécessairement de la même catégorie fonctionnelle. Vous pouvez donc les regrouper sous différents schémas et leur donner différentes autorisations d'accès utilisateur.

Cela dit, je ne sais pas si vous pouvez avoir une table sous plusieurs schémas. L'interface utilisateur de Management Studio propose une liste déroulante pour attribuer un schéma à une table, permettant ainsi de ne choisir qu'un seul schéma. Je suppose que si vous le faites avec TSQL, cela pourrait créer 2 (ou plusieurs) objets différents avec des ID d'objet différents.


0

Un schéma de base de données est un moyen de regrouper logiquement des objets tels que des tables, des vues, des procédures stockées, etc. Considérez un schéma comme un conteneur d'objets. Et les tableaux sont des collections de lignes et de colonnes. la combinaison de toutes les tables fait un db.


1
Ces premières phrases sont exactement les mêmes .... stackoverflow.com/a/29042133/2308683
OneCricketeer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.