Dica 1: As Fases do PRATICASQL »
O Exercício do PraticaSQL foi projetado para desenvolver as habilidades de Manutenção de uma Base de Dados.
O script inicialmente distribuído contém as definições de tabelas sem a definição de suas chaves (Primárias, Candidatas e Estrangeiraas).
Nesse Script também faltam tabelas a serem criadas tomando como referencia as aparesentadas no Dicionário de Dados do Exercício
No SGBD PosrgreSQL (bem como em outros SGBD) a CRIAÇÃO de Chaves Estrangeiras DEPENDE da Prévia EXISTÊNCIA da Correspondente Chave Primária.
Desse modo, os ajustes que devem ser feitos na Base de Dados DEVEM ser feitas em uma ordem:
Primeira PASSADA:
Se uma tabela não existir: CRIE a Nova TABELA.
Se a tabela já Existir: Crie os Campos Adicionais para ajustar a estrutura da Tabela. Se isso for necessário e você precisar, EXECUTE a Dica 2: Ajustes das Estruturas de Tabelas
Nesta passada CRIE as CHAVES PRIMÁRIAS e as CHAVES CANDIDATAS.
Segunda PASSADA:
ANTES de iniciar esta Fase, tenha certeza que todas as tabelas definidas no Dicionário de Dados da Base de Dados EXISTAM corretamente definidas com suas correspondentes Chaves Primárias e Candidatas (quando Houver).
Depois de Criadas as CPs e as CCs, crie as Chaves Estrangeiras.
Dica 2: Ajustes das Estruturas de Tabelas. »
O SGBD PostgreSQL é um SGBD RELACIONAL. Isso significa que segue os principios do MR. O fundamento do MR é tratar os dados necessários em um contexto como um CONJUNTO matematicamente considerado.
Isso faz com que a ordem dos campos dentro de tabela não tenham importância para se considerar a tabela como uma representação do conjunto e também não importa a ordem como as linhas estão dentro da tabela.
Entretanto, em alguns projetos de sistemas, o Analista de Dados pode impor ao DBA que seja mantido a ordem dos campos como se apresentam na documentação do SI (no Dicionário de Dados).
Sendo assim, SE você precisar trocar a ordem de campos em SGBD Relacional execute a seguinte sequência de comandos:
Inserir/remover campos das tabelas - Deixando a estrutura da Tabela com os campos necessários, mas sem a ordem desejada.
Mover campos de uma posição para outra na mesma tabela.
Para isso:
CREATE TABLE novo_nome AS SELECT 'Lista de campos na ordem correta' FROM sua_tabela;
DROP TABLE sua_tabela CASCADE;
ALTER TABLE novo_nome RENAME TO sua_tabela;
Dica 3: Backup de Base de Dados »
Outra 'Dica' importante: ao terminar seus trabalhos na manutenção de uma base de dados é interessante fazer uma cópia de segurança.
Este 'BACKUP' serve para recuperação de da situação da base BEM COMO para levar as definições de uma base de dados de uma máquina para outra.
Este BACKUP pode ser feito seguindo os seguintes passos:
Acesse o PGAdmin 4 (a partir da versão 7] e ache a base de dados que será 'copiada'
Marque o nome da base de dados (um clique com o botão principal do mouse]
Abra o menu popup e scolha o item BACKUP
Aba: General
Campo: Filename -> Clique na 'pasta' do lado direito e indique o diretório e NOME do arquivo que será gravado.
Campo: Format -> Escolha PLAIN
Campo: Enconding -> Escolha UTF8
Aba: Data Options
Divisão: Sections -> Ative PreData, PosData e Data
Divisão: Type of objects -> Desative Blobs
Aba: Query Options
Ative 'USE INSERT COMMANDS'
Aba: Options
Desative 'VERBOSE MESSAGES'
Clique no botão 'BACKUP'
Acesse o diretório onde foi gravado o seu arquivo de backup
Copie o arquivo gerado para seu dispotivo de dados.
Dica 4: Trocando Tipos de Dados de Campos de Tabelas »
Outra 'Dica' (com a colaboração de uma colega que pesquisou como resolver a situação]...
Seguinte: Você precisa TROCAR o TIPO DE DADO de um campo de uma tabela. E agora?
Uma 'ratinha' pesquisou o comando ALTER TABLE para o PostgreSQL e achou como trocar o tipo de dado de um campo, basta usar:
Abra uma Janela de QueryTool no pgAdmin 4 tendo acessado a base de dados onde esta a tabela que se quer trocar o tipoe de dado. alter table <NomeDaTabela> alter column <NomeDoCAmpo> type <TipoDeDado>;
POR EXEMPLO:
alter table estadosdospaises alter column idestadodopais type character(2);
Dica 5: Trocando Valores de Campos que serão Chaves Primárias »
E se você tentar criar uma Chave Primária e o SGBD indicar que o campo tem valores repetidos...? O que fazer?
Seguinte: Você precisa TROCAR os valores do campo colocando os valores com um número sequencial (por exemplo). E agora? Como fazer?
Existe uma função que retorna um número a linha processada. É função ROW_NUMBER().
Exemplificando o caso da troca dos valores do campo que é a chave primária da tabela cidades . Em uma janela QUERY TOOLS Escreva:
POR EXEMPLO:
create table cidadenova as (select row_number() OVER (ORDER BY concat(c.estadodopaisid,c.txnomecidade)) as idnovo, c.txnomecidade, c.estadodopaisid, c.txformaacesso, c.qtpopulacao, c.qtarea, c.dtfundacao, c.dtcadcidade from cidades as c); drop table cidades; alter table cidadenova rename to cidades;
Antes de executar o comando 'ALTER TABLE', se quiser consultar os valores gerados... Execute: select * from cidadenova;