0% acharam este documento útil (0 voto)
18 visualizações41 páginas

Backend-Aula06 1

Enviado por

Andrecrazy1plays
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
18 visualizações41 páginas

Backend-Aula06 1

Enviado por

Andrecrazy1plays
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 41

REVISÃO MODELAGEM DE DADOS

+ LINGUAGEM SQL

Integração de Desenvolvimento em Back-End I


[email protected]
Semana 6
EXERCÍCIO

Alguém modelou a agenda de


compromissos?

2
Um advogado deseja informatizar a sua agenda de reuniões com clientes. Para isto,
identificou a necessidade de armazenar o nome de cada cliente, identificando-os por um
número. Cada cliente pode ter diversos telefones e endereços. Cada telefone e endereço
pode ser de um determinado tipo. Cada telefone é numerado sequencialmente por cliente,
indicando o número do telefone. Cada endereço possui rua, número, complemento, bairro,
cidade, estado e CEP. Também é necessário armazenar os compromissos agendados com os
clientes. Cada compromisso pode acontecer com um ou mais clientes (casais, por exemplo),
sendo identificado pela data e por um número sequencial de compromisso (1º compromisso
do dia, 2º compromisso do dia, etc). O compromisso é sempre fora da empresa, sendo
necessário, portanto, registrar o local. Também é armazenada a hora de início e de término
previstas para o compromisso.
3
Resposta – Modelo conceitual

4
Resposta – Modelo lógico

5
Diferentes representações em um modelo idade

conceitual
Pessoa
data_
nasc
Atributos:
*
nome endereco tel
• Simples x compostos cpf

• Univalorados x multivalorados
• Armazenados x derivados pre sobrenome

• Determinantes (chave)
Tipos: int, real, string, etc
Domínio: valores permitidos
6
Diferentes representações em um modelo idade

conceitual [2] 1, 1
Pessoa
mantém data_
1, N nasc

Dependente
*
cpf nome endereco tel

nome sexo
pre sobrenome

Entidade fraca: não possui atributo chave e é identificada por meio de um


relacionamento total com pelo menos um tipo Entidade Forte.
7
Diferentes representações em um modelo idade

conceitual [3] 1
Pessoa
mantém data_
N nasc

Dependente
*
cpf nome endereco tel

nome sexo
pre sobrenome

Entidade fraca: não possui atributo chave e é identificada por meio de um


relacionamento total com pelo menos um tipo Entidade Forte.
8
Diferentes representações em um modelo idade

conceitual [4] N
Pessoa
trabalha_ data_
1 para nasc

Departamento
*
cpf nome endereco tel

num nome
pre sobrenome

Restrição de participação: especifica se uma entidade individual precisa,


necessariamente, estar associada a outra entidade individual via relacionamento
para existir. Se é obrigatória: a restrição é total, caso contrário é parcial 9
Modelagem de dados
Mundo Modelo alto
observado conceitual nível

Modelo lógico

baixo
Modelo físico nível
Crédito: Unisuam
10
Como criar o modelo físico?

MySQL “na unha” PHP MyAdmin MySQL Workbench

11
Vamos usar como exemplo

12
A ferramenta de modelagem do
MySQL Workbench gera o
modelo físico

13
Structured Query Language

Crédito: DevMedia
14
DDL: Linguagem de Definição de Dados

Define os comandos utilizados para


criação (CREATE) de tabelas, views,
índices, atualização dessas
estruturas (ALTER), assim como a
remoção (DROP)

Crédito: DevMedia
15
SHOW DATABASES

SHOW {DATABASES | SCHEMAS}

[LIKE 'pattern' | WHERE expr]

Objetivo: Listar os bancos de dados presentes no servidor


MySQL

Fonte: https://dev.mysql.com/doc/refman/8.0/en/show-databases.html
16
CREATE DATABASE | USE DATABASE

CREATE DATABASE nome_do_banco_de_dados;

USE nome_do_banco_de_dados
Database changed

Objetivo: Criar e selecionar um banco de dados


Fonte: https://dev.mysql.com/doc/refman/8.0/en/creating-database.html
17
SHOW TABLES

SHOW TABLES;

Objetivo: Exibir todas as tabelas associadas ao banco de dados que


está selecionado (USE deve ter sido acionado anteriormente)

Fonte: https://dev.mysql.com/doc/refman/8.0/en/show-tables.html
18
TIPO DE DADO DESCRIÇÃO

CREATE TABLE INTEGER Números inteiros

FLOAT Números reais

String de comprimento
CREATE TABLE nome_tabela ( CHAR (tamanho) fixo
(0 a 255)
String de tamanho
campo1 TIPO_DE_DADO, VARCHAR(tamanho)
variável: 0 a 65.535
Igual a CHAR(), mas
campo2 TIPO_DE_DADO, BINARY(size) armazena binário.
Padrão: 1

campo3 TIPO_DE_DADO TEXT(size)


String com comprimento
máximo de 65.535
String com comprimento
); LONGTEXT
máx. 4,294,967,295
Padrão: 'YYYY-MM-DD
Objetivo: Criar tabela (e campos) DATETIME
hh:mm:ss'
Veja outros tipos de dados
Fonte: https://dev.mysql.com/doc/refman/8.0/en/creating-tables.html
19
ALTER TABLE

ALTER TABLE nome_da_tabela

ADD nome_da_coluna TIPO_DE_DADO;

Objetivo: Alterar estrutura de uma tabela

Fonte: https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
20
DROP TABLE

DROP TABLE nome_da_tabela;

Objetivo: Remover uma tabela

Fonte: https://dev.mysql.com/doc/refman/8.0/en/drop-table.html
21
DROP DATABASE

DROP DATABASE nome_do_banco_de_dados;

Objetivo: Remover um banco de dados

Fonte: https://dev.mysql.com/doc/refman/8.0/en/drop-database.html
22
DML: Linguagem de Manipulação de Dados

Define os comandos usados para


manipulação de dados em tabelas, o
que inclui tarefas para inserção
(INSERT INTO), atualização (UPDATE)
e exclusão (DELETE) de registros
(linhas) em uma tabela.
Crédito: DevMedia
23
INSERT INTO

INSERT INTO nome_da_tabela (coluna1, coluna2 ...)

VALUES (valor1, valor2 ...)

Objetivo: Inserir novos registros na tabela

OBS: Caso vá inserir valores em todas as colunas, não é necessário


indicar o nome da coluna! Mas precisa inserir dados na ordem em
que as colunas estão definidas no SGBD
Doc:https://dev.mysql.com/doc/refman/8.0/en/insert.html
24
UPDATE

UPDATE nome_da_tabela
SET coluna1=valor1, coluna2=valor2,
WHERE condição
Objetivo: Modificar um registro existente na tabela
OBS: Estabelecer a condição de alteração é essencial. Caso
contrário, modifica todos os valores da coluna.

Doc: https://www.w3schools.com/mysql/mysql_update.asp
25
DELETE FROM

DELETE FROM nome_da_tabela

WHERE condição

Objetivo: Remover um registro da tabela

OBS: Aqui a condição também é essencial!

Doc: https://dev.mysql.com/doc/refman/8.0/en/delete.html
26
DQL: Linguagem de Manipulação de Dados

Define os comandos usados para


consulta em tabelas (SELECT).
Em algumas bibliografias o SELECT é
associado à DML, em outras tem
esse grupo próprio

Crédito: DevMedia
27
SELECT

SELECT coluna1, coluna2, coluna3, ...

FROM nome_da_tabela

Objetivo: Selecionar/Consultar dados do banco de dados

Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
28
SELECT ... WHERE

SELECT coluna1, coluna2, coluna3, ...

FROM nome_da_tabela

WHERE condição

Objetivo: Selecionar/Consultar dados do banco de dados,


atendendo a determinada condição

Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
29
SELECT ... WHERE ... AND, OR, NOT

SELECT coluna1, coluna2, coluna3, ...

FROM nome_da_tabela

WHERE condição AND/OR/NOT condição

Objetivo: Selecionar/Consultar dados do banco de dados,


atendendo a uma ou mais condições

Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
30
SELECT ... WHERE ... ORDER BY

SELECT coluna1, coluna2, coluna3, ...


FROM nome_da_tabela
WHERE condição AND|OR|NOT condição
ORDER BY coluna1, coluna2, ... ASC|DESC
Objetivo: Selecionar/Consultar dados do banco de dados, atendendo a uma
ou mais condições e apresentando resultados ordenado por determinada
coluna (de forma crescente ou decrescente)
Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
31
E como consultar dados de tabelas
relacionadas?

32
JOIN
Objetivo: combinar linhas de duas ou mais tabelas, com base
em uma coluna relacionada entre elas.

idcliente nome idtelefone Numero Tipo fk_idcliente


1 Carol 1 22233-2332 Fixo 1
2 Adrian 2 2322-12221 Fixo 2
3 Maria 3 90000-2233 Celular 2

Doc: https://dev.mysql.com/doc/refman/8.0/en/join.html 33
TIPO DESCRIÇÃO DIAGRAMA

Tipos de Join no MySQL


Registros comuns entre as
tabelas A e B

Todos os registros da tabela A


(esquerda) e registros
correspondentes na tabela B
(direita)

Todos os registros da tabela B


(direita) e registros
correspondentes na tabela A
(esquerda)

Todos os registros de ambas


as tabelas A e B (pode-se usar
JOIN também)

34
Crédito: UGT World
Join - comandos

35
Próxima aula

36
DQL: Linguagem de Controle de Dados

Define comandos relacionados à


segurança do banco de dados,
permitindo o controle de acesso aos
dados (concede e retira) privilégios
de acesso com GRANT e REVOKE

Crédito: DevMedia
37
DQL: Linguagem de Transação de Dados
Gerencia diferentes transações ocorridas.

▪ BEGIN TRAN: marca o começo de uma


transação no banco

▪ COMMIT: envia todos os dados da


transação permanentemente para o banco;

▪ ROLLBACK: desfaz as alterações feitas na


transação

Crédito: DevMedia
38
Resolução de exercícios

39
Referências sobre o tema

▪ Boson Treinamentos (YouTube). Curso de Modelagem de


Dados

▪ Miriam TechCode (YouTube). Modelagem de dados - modelo


conceitual, lógico e físico.

▪ Manual de Referência do MySQL (documentação oficial)

▪ Tutorial de MySQL do W3Schools

40
DÚVIDAS?

Você também pode gostar