O postgresql como outros bancos de dados possui o recurso de criar esquemas
dentro da base. Um esquema é basicamente um diretório, com a diferença que não
é possível criar esquemas dentro de esquemas como é possível em sistemas de
arquivos.
Criar um esquema, objetos dentro dele e acessá-los é simples:
$ create schema seguranca;
$ create table seguranca.usuarios (id serial, login varchar(20), password varchar (32));
$ select * from seguranca.usuarios;
id | login | password
----+-------+----------
(0 rows)
Usando outro recurso do Postgresql, o esquema pode ser tornar algo muito mais
poderoso: o search_path. O padrão do banco é "$user", public o que significa
que o primeiro lugar que o banco busca uma tabela é em um esquema com o mesmo
nome que o usuário, depois no esquema public (o padrão). Funciona da mesma
maneira que a variável PATH das shells de Unix, para quem conhece.
Um bom caso de uso é um banco para uma aplicação para empresas, que necessita
de tabelas específicas para cada, porém elas compartilham um cadastro básico
de cidades. O layout seria como esse:
$ create schema comum;
$ create table comum.cidades (id serial, estado char(2), cidade varchar(100));
$ create schema empresa1;
[Tabelas da primeira empresa]
$ create schema empresa2;
[Tabelas da segunda empresa]
Juntando com a variável search_path (o alter user faz essa mudança ser
persistente):
$ alter user jabvlinux1 set search_path = "$user", public, comum;
Quando uma nova conexão é criada, podemos executar o seguinte comando para, a
partir deste ponto, não precisar mais de especificar o esquema nas consultas /
atualizações.
$ set search_path = "$user", public, comum;
Desta maneira, com uma pequena alteração no código, é possível separar de
maneira eficiente e organizada os dados dentro do banco.
quinta-feira, 5 de junho de 2008
Assinar:
Postar comentários (Atom)
1 comentários:
Zé
Você poderia explicar como criar o esquema de log que vc fez na SAP né.... Ficou bem loko e eu até hj nao entendi.....KKKK
Abraços
Marcel Augusto
Postar um comentário