Buscar

UNI7_SI_TP1_P1_TécnicasDeProgramação

Prévia do material em texto

TÉCNICAS DE PROGRAMAÇÃO
Neusa Liberato Evangelista
Criando Banco de Dados
01
RAZÕES PARA ESTUDAR CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃOCRIANDO O BANCO DE DADOS PARA PRÁTICA
Instalar o Docker
Baixar a imagem do Postgres
Criar volume de persistênia dos dados
Executar o contêiner Postgres
01
02
03
04
05 Acessar o contêiner
06
Criar banco e estruturas07
Compreender necessidade
02
RAZÕES PARA ESTUDAR CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
DOCKER
Docker é uma plataforma de software que permite criar, implantar e
gerenciar aplicativos em contêineres.
Contêiner é uma unidade de software leve e portátil que inclui tudo o
necessário para executar um aplicativo.
Uma "imagem" no contexto do Docker é um pacote que inclui todas
as dependências necessárias para executar um contêiner, como o
sistema operacional, bibliotecas, código do aplicativo e configurações.
CRIANDO O BANCO DE DADOS PARA PRÁTICA
03
Instalar o Docker seguindo instruções do site oficial
de acordo com a plataforma.
docker pull postgres
https://docs.docker.com/engine/install/
CRIANDO O BANCO DE DADOS PARA PRÁTICA
01
Baixar a imagem do Postgres executando o
comando. 02
No Windows podemos e vamos usar o Docker Desktop com WSL (Windows
Subsystem for Linux). A instalação só pode ser feita pelo administrador da
máquina. As imagens são baixadas do huber.docker.com.
https://docs.docker.com/engine/install/
04
Criar volume de persistência dos dados
docker run -d --name postgres -p 5432:5432 -e
POSTGRES_PASSWORD=sua-senha 
-v C:/postgres:/var/lib/postgresql/data postgres
CRIANDO O BANCO DE DADOS PARA PRÁTICA
03
Executar o contêiner Postgres04
Criar diretório para os dados em sua máquina (home).
docker start postgres
05
RAZÕES PARA ESTUDAR CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
Explicando os parâmetros: 
docker run: comando para criar e executar um contêiner a partir de uma imagem.
-d: indica que o contêiner será executado em segundo plano.
--name postgres: nome do contêiner. Neste caso, "postgres".
-p 5432:5432: porta 5432 do contêiner para porta 5432 do host. 5432 é a porta padrão do Postgres.
-e POSTGRES_PASSWORD=sua-senha: define a variável de ambiente POSTGRES_PASSWORD
com a senha escolhida.
-v diretório_físico:subdiretório_virtual: define o diretório onde os dados do Postgres serão
armazenados.
postgres: nome da imagem sendo utilizada para criar o contêiner.
CRIANDO O BANCO DE DADOS PARA PRÁTICA
06
05 Acessar o contêiner 
CRIANDO O BANCO DE DADOS PARA PRÁTICA
psql é o utilitário de linha de comando para interagir com o banco de dados
PostgreSQL.
docker exec -it postgres psql -U postgres
Comandos úteis do psql:
\l: Lista todos os bancos de dados disponíveis.
\c <nome_do_banco>: Conecta ao banco de dados especificado.
\dt: Lista todas as tabelas no banco de dados atual.
\d <nome_da_tabela>: Descreve a estrutura da tabela especificada.
\du: Lista todos os papéis de usuários (usuários e grupos de usuários).
\dn: Lista todos os esquemas no banco de dados atual.
\dp: Mostra as permissões dos objetos de banco de dados.
\i <arquivo.sql>: Executa os comandos SQL contidos no arquivo especificado.
\q: Sai do psql.
07
06 Compreender necessidade
Cliente: Hospital
Módulo: Atendimento em emergência hospitalar
Necessidade: Backend para agilizar o acolhimento inicial dos
clientes da emergência. O Frontend será no portal do hospital e esse
novo módulo deve receber as informações para serem incluídas na
base de dados e deve permitir consultar os dados cadastrados.
CRIANDO O BANCO DE DADOS PARA PRÁTICA
08
06 Compreender necessidade
Solicitar apenas dados essenciais dos clientes (LGPD).1.
Realizar todas as validações e retornar mensagens claras e
auto-explicativas.
2.
Se o cliente ou seu acompanhante já foi atendido alguma vez,
obter os dados já cadastrados pelo nome, parte do nome,
número de documento ou telefone.
3.
CRIANDO O BANCO DE DADOS PARA PRÁTICA
Requisitos funcionais
09
06 Compreender necessidade
CRIANDO O BANCO DE DADOS PARA PRÁTICA
nome (obrigatório)
data de nascimento (obrigatório)
telefone para contato com identificação se do cliente ou do
acompanhante (obrigatório)
número de documento (preferência CPF) mas pode ser RG ou
passaporte (opcional se menor de 18 anos)
Requisitos funcionais - dados
10
06 Compreender necessidade
CRIANDO O BANCO DE DADOS PARA PRÁTICA
tipo de atendimento (respiratório, traumatológico, ginecológico,
obstétrico ou clínico geral)
nome do acompanhante 
número de documento do acompanhante 
dados do acompanhante são obrigatório nos casos de cliente
seja menor de 18 anos ou maior de 70 anos, ou não possa
responder por si por qualquer motivo. 
Requisitos funcionais - dados
11
06 Compreender necessidade
CRIANDO O BANCO DE DADOS PARA PRÁTICA
Desempenho: tempo de resposta das operações de inclusão e
consulta inferiores a 40 segundos. 
Escalabilidade: responder com mesmo desempenho a no mínimo 30
atendimentos simultâneos.
Disponibilidade: 24 x 7. Atualizações devem realizadas em dias de
menor atendimento, com a anuência do hospital. Inoperância não
deve ultrapassar 10 minutos.
Requisitos não funcionais
12
06 Compreender necessidade
CRIANDO O BANCO DE DADOS PARA PRÁTICA
Segurança: Respeito a LGPD. Prevenir acesso não autorizado direto à
API.
Manutenibilidade: código legível com documentação adequada e 
utilização de boas práticas de desenvolvimento.
Interoperabilidade: capacidade de interagir e integrar-se facilmente
com outros sistemas e tecnologias, seguindo padrões e protocolos
abertos e amplamente reconhecidos.
Requisitos não funcionais
13
06 Compreender necessidade
CRIANDO O BANCO DE DADOS PARA PRÁTICA
Modelo sugerido
14
07 Criar banco de dados e estruturas
CRIANDO O BANCO DE DADOS PARA PRÁTICA
postgres-# CREATE DATABASE uni7;
postgres-# \c uni7
Quando entrar novamente no psql pode já informar a que banco ser conectar:
docker exec -it psql -h localhost -p 5432 -U postgres -d uni7
15
07 Criar banco de dados e estruturas
CRIANDO O BANCO DE DADOS PARA PRÁTICA
postgres-# CREATE SCHEMA hospital;
postgres-# SET SEARCH_PATH TO hospital;
SET SEARCH_PATH garante que as estruturas são criadas, referenciadas dentro do esquema
especificado. Por segurança, é sempre indicado informar o schema antes do nome da estrutura
pois não sabemos em que usuário/schema será exeuctado o comando.
16
07 Criar banco de dados e estruturas
CRIANDO O BANCO DE DADOS PARA PRÁTICA
-- TABELA DOMINIO TIPO DE ATENDIMENTO
CREATE TABLE hospital.tipo_atendimento ( id_tipo_atendimento
SERIAL PRIMARY KEY, nome_tipo_atendimento VARCHAR(20) NOT
NULL);
INSERT INTO hospital.tipo_atendimento (id_tipo_atendimento,
nome_tipo_atendimento) VALUES (1, 'Respiratório'),(2,
'Traumatológico'),(3, 'Ginecológico'),(4, 'Obstrético'),(5, 'Clínico Geral');
O PostgreSQL opera no modo de autocommit por padrão, ou seja, cada comando DML é tratado como uma transação
separada e é automaticamente confirmado ao ser concluído com sucesso. Isso difere de alguns outros sistemas de banco
de dados onde uma transação explícita é necessária para confirmar as alterações.
17
07 Criar banco de dados e estruturas
CRIANDO O BANCO DE DADOS PARA PRÁTICA
--TABELA DOMINIO TIPO DE DOCUMENTO
CREATE TABLE hospital.tipo_documento (id_tipo_documento SERIAL
PRIMARY KEY,
 nome_tipo_documento VARCHAR(20) NOT NULL);
INSERT INTO hospital.tipo_documento (id_tipo_documento,
nome_tipo_documento) VALUES
(1, 'CPF'), (2, 'RG'), (3, 'Passaporte');
18
07 Criar banco de dados e estruturas
CRIANDO O BANCO DE DADOS PARA PRÁTICA
--TABELA PARA DADOS DAS PESSOAS
CREATE TABLE hospital.pessoa (id_pessoa SERIAL PRIMARY KEY,
nome VARCHAR(200) NOT NULL, numero_documento INTEGER,
id_tipo_documento INTEGER, telefone VARCHAR(15), data_nascimento
DATE NOT NULL, FOREIGN KEY (id_tipo_documento) REFERENCES
hospital.tipo_documento (id_tipo_documento));
1918
07 Criar banco de dados e estruturas
CRIANDO O BANCO DE DADOS PARA PRÁTICA
-- TABELA PARA DADOS DOS ATENDIMENTOSCREATE TABLE hospital.atendimento ( id_atendimento SERIAL PRIMARY
KEY, id_pessoa_paciente INTEGER NOT NULL, id_pessoa_acompanhante
INTEGER, data_hora_entrada TIMESTAMP, id_tipo_atendimento INTEGER, 
FOREIGN KEY (id_tipo_atendimento) REFERENCES
hospital.tipo_atendimento, 
FOREIGN KEY (id_pessoa_paciente) REFERENCES hospital.pessoa,
FOREIGN KEY (id_pessoa_acompanhante) REFERENCES hospital.pessoa);
OBRIGADA
Neusa Liberato Evangelista

Continue navegando