Qual é a diferença entre um esquema e uma tabela e um banco de dados?

155

Esta é provavelmente uma pergunta n00blike (ou pior). Mas eu sempre vi um esquema como uma definição de tabela em um banco de dados. Isso está errado ou não está totalmente correto. Não me lembro muito dos meus cursos de banco de dados.

anbanm
fonte
3
No oracle, o esquema é apenas referido a um usuário. Ou seja, quando criamos um usuário, o esquema será criado agora podemos adicionar tabelas, exibições, pacotes de índices etc. como
Ali786

Respostas:

242

esquema : banco de dados : tabela :: planta do piso : casa : sala

MusiGenesis
fonte
81
Um pouco enigmático, mas não errado; mas você realmente acha que um n00b auto-proclamado entenderia isso?
Stein G. Strindhaug
6
Boa analogia. Eu mudaria "planta baixa" para "planta azul" porque o esquema tem mais do que apenas tabelas, e as plantas azuis contêm a fiação, o aquecimento e o encanamento.
Paul Tomblin
4
"Esquema" realmente significa apenas "plano". Já o vi usado para se referir a todo o banco de dados, ou apenas uma tabela ou exibição.
MusiGenesis
@ Paul: bons pontos. Eu escrevi originalmente "blueprints", mas mudei porque realmente não conota "house" (pelo menos não para mim).
MusiGenesis
4
Sim, costumo ver um esquema como um usuário no Oracle. Portanto, as definições variam até de db para db: D Que irritante.
187 Robert
123

Um esquema de relação é a definição lógica de uma tabela - define qual é o nome da tabela e qual é o nome e o tipo de cada coluna. É como um plano ou uma planta. Um esquema de banco de dados é a coleção de esquemas de relação para um banco de dados inteiro.

Uma tabela é uma estrutura com várias linhas (também conhecidas como "tuplas"), cada uma das quais com os atributos definidos pelo esquema. As tabelas também podem ter índices nelas para ajudar a procurar valores em determinadas colunas.

Um banco de dados é, formalmente, qualquer coleção de dados. Nesse contexto, o banco de dados seria uma coleção de tabelas. Um DBMS (Sistema de Gerenciamento de Banco de Dados) é o software (como MySQL, SQL Server, Oracle, etc) que gerencia e executa um banco de dados.

Ian Varley
fonte
1
Um esquema de banco de dados também inclui índices, visualizações, etc.
Paul Tomblin
1
certamente isso não está correto. um banco de dados não é uma coleção de tabelas como tal. Você pode ter 30 bancos de dados sem ter uma tabela, por exemplo.
187 Robert
@ Robert - qual seria o ponto de ter um banco de dados sem nenhuma tabela nele?
Paul Tomblin 18/11/08
16
Mesmo se você não tiver nenhuma tabela, ainda é uma coleção de tabelas - é uma coleção vazia de tabelas.
Jon Skeet
1
@ Ian: não esqueça que um banco de dados também terá restrições - restrições referenciais (chaves primárias, chaves estrangeiras), restrições de exclusividade e restrições de verificação. Também pode incluir gatilhos e procedimentos.
Jonathan Leffler
16

Em resumo, um esquema é a definição para todo o banco de dados, portanto inclui tabelas, visualizações, procedimentos armazenados, índices, chaves primárias e estrangeiras, etc.

Graeme Perrow
fonte
12

Foi demonstrado que essa postagem específica se relaciona apenas ao Oracle e a definição de Esquema muda quando no contexto de outro banco de dados.

Provavelmente é o tipo de coisa que basta pesquisar no Google, mas os termos da FYI parecem variar em suas definições, o que é a coisa mais irritante :)

No Oracle, um banco de dados é um banco de dados. Na sua cabeça, pense nisso como os arquivos de dados e os logs de refazer e a presença física real no disco do próprio banco de dados (ou seja, não a instância)

Um esquema é efetivamente um usuário. Mais especificamente, é um conjunto de tabelas / procs / índices etc pertencentes a um usuário. Outro usuário tem um esquema diferente (tabelas de sua propriedade), no entanto, o usuário também pode ver os esquemas nos quais possui privilégios de seleção. Portanto, um banco de dados pode consistir em centenas de esquemas e cada esquema em centenas de tabelas. Você pode ter tabelas com o mesmo nome em esquemas diferentes, que estão no mesmo banco de dados.

Uma tabela é uma tabela, um conjunto de linhas e colunas contendo dados e está contida nos esquemas.

As definições podem ser diferentes no SQL Server, por exemplo. Eu não estou ciente disso.

Robert
fonte
11

O esquema se comporta como um objeto pai, como visto no mundo OOP. portanto, não é um banco de dados em si. talvez esse link seja útil.

Mas, no MySQL, os dois são equivalentes. A palavra-chave DATABASE ou DATABASES pode ser substituída por SCHEMA ou SCHEMAS onde quer que apareça. Exemplos:

  • CREATE DATABASE <=> CREATE SCHEMA
  • MOSTRAR BASES DE DADOS <=> MOSTRAR ESQUEMAS

Documentação do MySQL

Os termos do ESQUEMA & DATABASE são dependentes do DBMS.

Uma tabela é um conjunto de elementos de dados (valores) organizados usando um modelo de colunas verticais (identificadas pelo nome) e linhas horizontais. Um banco de dados contém uma ou mais tabelas (geralmente) . E você armazena seus dados nessas tabelas. As tabelas podem estar relacionadas umas com as outras ( veja aqui ).

earthdan
fonte
Resposta valiosa
sofs1
2

Mais sobre esquemas:

No SQL 2005, um esquema é uma maneira de agrupar objetos. É um contêiner no qual você pode colocar objetos. As pessoas podem possuir esse objeto. Você pode conceder direitos no esquema.

Em 2000, um esquema era equivalente a um usuário. Agora ele foi liberado e é bastante útil. Você pode lançar todos os seus processos de usuário em um determinado esquema e os processos de administrador em outro. Conceda EXECUTE ao usuário / função apropriado e você concederá EXECUTE a procedimentos específicos. Agradável.

A notação de ponto seria assim:

Server.Database.Schema.Object

ou

myserver01.Adventureworks.Accounting.Beans

Sam
fonte
2

A Schemaé uma coleção de objetos de banco de dados que também inclui estruturas lógicas. Tem o nome do usuário que o possui. A databasepode ter qualquer número de esquemas. Uma tabela de um banco de dados pode aparecer em dois esquemas diferentes com o mesmo nome. Um usuário pode visualizar qualquer esquema ao qual foi atribuído o privilégio de seleção.

Iswarya
fonte
2

Como MusiGenesis colocou tão bem, na maioria dos bancos de dados:

esquema: banco de dados: tabela :: planta do piso: casa: sala

Mas, no Oracle, pode ser mais fácil pensar em:

esquema: banco de dados: tabela :: proprietário: casa: sala

cmrust
fonte
2

Ao contrário de algumas das respostas acima, aqui está o meu entendimento com base na experiência de cada uma delas:

  • MySQL: database/schema :: table
  • Servidor SQL: database :: (schema/namespace ::) table
  • Oráculo: database/schema/user :: (tablespace ::) table

Corrija-me se o espaço de tabela é opcional ou não com o Oracle, já faz muito tempo desde que me lembro de usá-los.

Sridhar Sarnobat
fonte
1

No oracle, o esquema é um usuário em um banco de dados; por exemplo, scott é um esquema no banco de dados orcl. Em um banco de dados, podemos ter muitos esquemas como scott

prasadj
fonte
1

Um banco de dados contém um ou mais esquemas nomeados, que por sua vez contêm tabelas. Os esquemas também contêm outros tipos de objetos nomeados, incluindo tipos de dados, funções e operadores. O mesmo nome de objeto pode ser usado em esquemas diferentes sem conflito; por exemplo, o schema1 e o myschema podem conter tabelas denominadas mytable. Diferentemente dos bancos de dados, os esquemas não são rigidamente separados: um usuário pode acessar objetos em qualquer esquema do banco de dados ao qual está conectado, se tiver privilégios para fazê-lo.

Há várias razões pelas quais alguém pode querer usar esquemas:

Permitir que muitos usuários usem um banco de dados sem interferir entre si.

Organizar objetos de banco de dados em grupos lógicos para torná-los mais gerenciáveis.

Aplicativos de terceiros podem ser colocados em esquemas separados para que não colidam com os nomes de outros objetos.

Os esquemas são análogos aos diretórios no nível do sistema operacional, exceto que os esquemas não podem ser aninhados.

Documentação oficial pode ser referido https://www.postgresql.org/docs/9.1/ddl-schemas.html

Siddharth Kumar
fonte
0

Esquemas contém bancos de dados.

Os bancos de dados fazem parte de um esquema.

Então, esquemas> bancos de dados.

Esquemas contém visualizações, procedimento (s) armazenado (s), banco (s) de dados, gatilho (s) etc.

Rafael Lopes
fonte
0

Um esquema não é um plano para todo o banco de dados. É um plano / contêiner para um subconjunto de objetos (ex.tables) dentro de um banco de dados.

Isso significa que você pode ter vários objetos (por exemplo, tabelas) dentro de um banco de dados que não se enquadram necessariamente na mesma categoria funcional. Assim, você pode agrupá-los em vários esquemas e conceder permissões de acesso de usuário diferentes.

Dito isto, não tenho certeza se você pode ter uma tabela em vários esquemas. A interface do usuário do Management Studio fornece uma lista suspensa para atribuir um esquema a uma tabela e, portanto, possibilitar a escolha de apenas um esquema. Eu acho que se você fizer isso com o TSQL, ele poderá criar 2 (ou vários) objetos diferentes com diferentes IDs de objeto.

Gadam
fonte
0

Um esquema de banco de dados é uma maneira de agrupar logicamente objetos como tabelas, visualizações, procedimentos armazenados etc. Pense em um esquema como um contêiner de objetos. E tabelas são coleções de linhas e colunas. combinação de todas as tabelas faz um db.

vivek chandel
fonte
1
Essas primeiras frases são exatamente o mesmo .... stackoverflow.com/a/29042133/2308683
OneCricketeer