web-dev-qa-db-fra.com

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

C’est probablement une question n00blike (ou pire). Mais j'ai toujours vu 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.

136
anbanm

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

219
MusiGenesis

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. A schéma de base de données est la collection de schémas de relations pour toute une base de données.

Un table est une structure avec un tas de lignes (aka "tuples"), chacune d'entre elles ayant les attributs définis par le schéma. Les tableaux peuvent également avoir des index pour faciliter la recherche des valeurs sur certaines colonnes.

A base de données est, formellement, toute collecte de données. Dans ce contexte, la base de données serait un ensemble de tables. Un DBMS (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.

111
Ian Varley

En résumé, un schéma est la définition de la base de données complète. Il comprend donc des tables, des vues, des procédures stockées, des index, des clés primaires et étrangères, etc.

16
Graeme Perrow

Il a été démontré que cette publication ne concernait qu’Oracle et que la définition de schéma change lorsque vous vous trouvez dans le contexte d’une autre base de données.

Probablement le genre de chose à simplement google up, mais les termes FYI semblent varier dans leurs définitions 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 journaux de restauration 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 effectivement un utilisateur. Plus spécifiquement, il s'agit d'un ensemble de tables/procs/indexes, etc., appartenant à un utilisateur. Un autre utilisateur a un schéma différent (les tables qu’il/elle possède), mais il peut également voir tous les schémas pour lesquels il a sélectionné des privilèges. Ainsi, une base de données peut contenir des centaines de schémas, et chaque schéma des centaines de tables. Vous pouvez avoir des tables portant 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 contenue dans des schémas.

Les définitions peuvent être différentes dans SQL Server par exemple. Je ne suis pas au courant de cela.

11
Robert

Les schémas se comportent comme un objet parent comme on le voit dans OOP monde. Ce n'est donc pas une base de données elle-même. Peut-être ce lien est utile.

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

  • CREATE DATABASE <=> CREATE SCHEMA
  • Afficher les bases de données <=> Afficher les schémas

Documentation de MySQL

Les termes SCHEMA & DATABASE dépendent du SGBD.

Un tableau est un ensemble d'éléments de données (valeurs) 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 (généralement) tables . Et vous stockez vos données dans ces tables. Les tableaux peuvent être liés les uns aux autres ( voir ici ).

10
earthdan

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 insérer des objets. Les gens peuvent posséder cet objet. Vous pouvez accorder des droits sur le schéma.

En 2000, un schéma était équivalent à un utilisateur. Maintenant, il est libéré et est très utile. Vous pouvez placer tous vos procs utilisateurs dans un certain schéma et vos procs administratifs dans un autre. Accordez EXECUTE à l'utilisateur/rôle approprié et vous avez fini d'octroyer EXECUTE à des procédures spécifiques. Agréable.

La notation par points ressemblerait à ceci:

Server.Database.Schema.Object

ou

myserver01.Adventureworks.Comptabilité.Beans

2
Sam

Un Schema est une collection d'objets de base de données qui inclut également des structures logiques. Il porte le nom de l'utilisateur qui le possède. Un database peut 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 visualiser tout schéma pour lequel un privilège de sélection lui a été attribué.

2
Iswarya

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

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

S'il vous plaît, corrigez-moi si le tablespace est facultatif ou non avec Oracle, cela fait longtemps que je ne me souviens pas de les avoir utilisées.

1
Sridhar Sarnobat

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 :: owner: house: room

1
cmrust

Dans Oracle Schema, il y a un utilisateur dans 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, il se peut que plusieurs schémas ressemblent à scott

1
prasadj

Une base de données schema permet de regrouper logiquement des objets tels que des tables, des vues, des procédures stockées, etc. Pensez à un schéma comme un conteneur d'objets. Et les tables sont des collections de lignes et de colonnes. la combinaison de toutes les tables fait une base de données.

0
vivek chandel

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

Cela signifie que vous pouvez avoir plusieurs objets (ex. Tables) dans une 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 attribuer différentes autorisations d'accès.

Cela étant dit, je ne sais pas si vous pouvez avoir une table sous plusieurs schémas. L'interface utilisateur de Management Studio propose un menu déroulant pour affecter un schéma à une table, permettant ainsi de choisir un seul schéma. J'imagine que si vous le faites avec TSQL, il pourrait créer 2 (ou plusieurs) objets différents avec des ID d'objet différents.

0
Gadam

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
Rafael Lopes