Diferença entre banco de dados e esquema

166

Qual é a diferença entre um banco de dados e um esquema no SQL Server? Ambos são os contêineres de tabelas e dados.

Se um esquema for excluído, todas as tabelas contidas nesse esquema também serão excluídas automaticamente ou serão excluídas quando o banco de dados for excluído?

sqlchild
fonte

Respostas:

171

Um banco de dados é o contêiner principal, contém os arquivos de dados e log e todos os esquemas dentro dele. Você sempre faz backup de um banco de dados, ele é uma unidade discreta por si só.

Os esquemas são como pastas em um banco de dados e são usados ​​principalmente para agrupar objetos lógicos, o que facilita a definição de permissões por esquema.

EDIT para pergunta adicional

drop schema test1

Msg 3729, Nível 16, Estado 1, Linha 1
Não é possível descartar o esquema 'test1' porque está sendo referenciado pelo objeto 'copyme'.

Você não pode descartar um esquema quando estiver em uso. Você deve primeiro remover todos os objetos do esquema.

Leitura relacionada:

  1. De que servem os esquemas do SQL Server?
  2. MSDN: separação de esquema de usuário
RichardTheKiwi
fonte
5
no sql server 2005 e versões posteriores, por padrão, tudo entra no esquema DBO, se não mencionarmos nenhum nome de esquema durante a criação de objetos de banco de dados?
sqlchild
@ sqlchild sim, isso mesmo. Um esquema é necessária, cada objeto é realizada em um esquema, de modo que o padrão é dbo
RichardTheKiwi
Você consideraria replicar tabelas no mesmo banco de dados e agrupá-las no esquema de acordo com diferentes clientes, em vez de criar um banco de dados separado para cada cliente, uma boa prática?
Yevgraf Andreyevich Zhivago
A lógica é a mesma para o AWS Redshift? Qualquer um? Estou confuso entre os dois em termos da AWS.
Aakash Basu
19

Esquema é uma maneira de categorizar os objetos em um banco de dados. Pode ser útil se você tiver vários aplicativos que compartilham um único banco de dados e enquanto houver algum conjunto comum de dados que todos os aplicativos acessam.

demas
fonte
12

Banco de dados é como contêiner de dados com esquema, e esquemas é o layout das tabelas, tipos de dados, relações e outras coisas

Saghir A. Khatri
fonte
1
Isso não está correto para o SQL Server especificamente; As tabelas possuem esquemas nos bancos de dados gerais, sim, mas os esquemas (para quem sabe o motivo) no SQL Server também são efetivamente namespaces que contêm tabelas (e essas tabelas também possuem esquemas no sentido tradicional). Nome infeliz que a Microsoft escolheu para eles - namespaceé muito mais apropriado.
SacredSkull
7

O esquema diz quais tabelas estão no banco de dados, quais colunas elas têm e como estão relacionadas. Cada banco de dados possui seu próprio esquema.

Robert
fonte
mas se eu não criar nenhum esquema explicitamente e criar tabelas sem mencionar qualquer nome de esquema, onde as tabelas serão criadas. por padrão, eles devem estar entrando no esquema dbo. não é?
sqlchild
sim, mas geralmente você não lidar com esquema manualmente, você cria tabelas, quer de alguma ferramenta de gestão ou usando o código primeiro longa de alguma ferramenta ORM
Robert
eu uso estúdio de gerenciamento de servidor SQL e eu não mencionar qualquer nome de esquema
sqlchild
4

O esquema no SQL Server é um objeto que contém conceitualmente definições para outros objetos de banco de dados, como tabelas, visualizações, procedimentos armazenados etc.

Hardik Mishra
fonte