Um esquema de banco de dados é uma coleção de metadados que descreve os relacionamentos entre objetos e informações em um banco de dados. Uma maneira fácil de visualizar um esquema é pensar nele como uma caixa que contém tabelas, procedimentos armazenados, exibições e ativos de dados relacionados. Um esquema define a infraestrutura desta caixa.
Linha de fundo
Em seu nível básico, um esquema serve como um contêiner para ativos de dados. No entanto, diferentes fornecedores de banco de dados estruturam seus esquemas de maneiras diferentes. A Oracle, por exemplo, trata cada esquema como uma conta de usuário. Para criar um novo esquema, um administrador de banco de dados cria um novo usuário de banco de dados com o nome do esquema pretendido.
Por que os esquemas são importantes
Como os esquemas constituem um recurso estrutural básico de um banco de dados, a maioria dos ambientes de banco de dados aplica permissões de acesso a objetos em um nível de esquema.
Por exemplo, um banco de dados de uma empresa pode conter uma série de usuários. Cada usuário incorre em um esquema, mas o acesso a esquemas diferentes é concedido individualmente e com a granularidade de permissões para usuários fora do esquema inicial.
A maioria das ferramentas de gerenciamento de banco de dados não lista esquemas; em vez disso, eles listam bancos de dados e usuários.
Por exemplo, uma empresa cria contas de usuário (esquemas) para Bob e Jane. Também cria contas para departamentos como RH e Marketing. Em seguida, ele fornece a um analista de cada departamento acesso à conta de esquema de seu departamento.
O analista de RH cria tabelas e visualizações dentro do esquema de RH e concede acesso a Bob para ler (mas não gravar) uma tabela de RH que lista os nomes dos funcionários e os números de identificação dos funcionários. Além disso, o analista de RH pode conceder acesso a Jane para ler e escrever em uma tabela de RH que lista os números de telefone dos funcionários.
Ao conceder acesso dessa forma, somente as funções e usuários corretos podem ler, gravar ou modificar os dados em um ativo de dados autocontido dentro do banco de dados maior.
Todo mecanismo de banco de dados considera os esquemas como o método fundamental de segregar dados em um ambiente multiusuário.
Diferentes mecanismos de banco de dados tratam usuários e esquemas de maneira diferente. Consulte a documentação do seu mecanismo de banco de dados para descobrir a sintaxe e os modelos lógicos que envolvem usuários, esquemas e concessões de permissões.
Criando Esquemas
Um esquema é formalmente definido usando Structured Query Language (SQL). Por exemplo, no Oracle, você cria um esquema criando a conta de usuário que o possui:
CREATE USER bob
IDENTIFIED BY temporário_password
DEFAULT TABLESPACE example
QUOTA 10M ON example
TEMPORARY TABLESPACE temp
QUOTA 5M NO sistema
PROFILE app_user
PASSWORD EXPIRE;
Outros usuários recebem acesso a novos esquemas em virtude de seu nome de usuário ou por uma ou mais funções às quais a conta de usuário foi adicionada.
Esquemas vs. Modelos de Dados
Como um modelo de dados, um esquema não é intrinsecamente estruturado para fazer nada. Em vez disso, é uma infraestrutura para dar suporte a permissões de segmentação em um banco de dados.
Um modelo de dados é uma coleção de tabelas e visualizações unidas em chaves específicas. Esses ativos de dados, juntos, atendem a um propósito comercial. É aceitável aplicar um modelo de dados a um esquema - para modelos de dados grandes e complexos, associando-os a esquemas para administração de banco de dados inteligente. Mas não é logicamente necessário usar um esquema para um modelo de dados ou tratar um modelo de dados como um esquema.
Por exemplo, o departamento de RH pode incluir um modelo de dados para avaliações de desempenho de funcionários em seu esquema. Em vez de criar um esquema para essas revisões, o modelo de dados pode ficar no esquema de RH (junto com outros modelos de dados) e permanecer logicamente distinto por meio de prefixos da tabela e nomes de exibição para os objetos no modelo de dados.
O modelo de dados pode receber um nome informal, como avaliações de desempenho, e todas as tabelas e visualizações podem ter o prefixo pr_ A tabela de listagem de funcionários pode ser referenciada como hr.pr_employee sem exigir um novo esquema para as avaliações de desempenho.
FAQ
Qual é a diferença entre um esquema de banco de dados e um estado de banco de dados?
Um esquema de banco de dados descreve o banco de dados. Um estado de banco de dados refere-se ao conteúdo de um banco de dados em um momento e pode ser considerado uma extensão do esquema do banco de dados.
O que é um esquema relacional de um banco de dados?
Um esquema relacional descreve os relacionamentos entre tabelas e itens que estão associados uns aos outros. Um esquema pode ser uma ilustração gráfica ou gráfico, ou pode ser escrito em código SQL.