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?

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

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.


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


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.