2. Agenda
● 1. Definições de SGBD e terminologia;
● 2. Modelagem de dados e cardinalidade;
● 3. Formas normais;
● 4. DCL e DML;
● 5. Prática: criação de um banco de dados;
● 6. Consultas em um banco de dados exemplo.
3. Vocabulário
Banco de Dados
SGBD
Tabela
Registro
Tupla
Índice
Chave
Chave candidata
Chave primária (PK)
Chave estrangeira (FK)
4. Vocabulário
Banco de Dados
● Conjunto de registros dispostos em estrutura
regular que possibilita a reorganização dos
mesmos e produção de informação
● Um banco de dados normalmente agrupa
registros utilizáveis para um mesmo fim
5. Vocabulário
Sistema Gerenciador de Banco de Dados
● Relacional
● Orientado a Objetos
Exemplos:
● MySQL, Postgres, Oracle, DB2, SQL Server
etc
10. Transação
● Conjunto de operações executado de forma
atômica
● Atomicidade
● Consistência
● Isolamento
● Durabilidade
● BEGIN TRANSACTION
● COMMIT
● ROLLBACK
12. Relacionamentos
Uma pessoa possui um telefone
pessoa possui telefone
13. Cardinalidade
● Um para um
– 1–1
● Um para N
– 1–N
● N para N
– N-N
14. Normalização
Aumentar:
✔ Facilidade de manipulação dos dados
Diminuir:
✗ Redundância
✗ Chance dos dados se tornarem inconsistentes
Consideramos normalizada uma tabela se ela
aderir a 3a Forma Normal
15. Forma Normal “Zero”
● Os nomes das tabelas devem representar
suas entidades
● Geralmente no plural
17. Como obter a 1FN
● Devemos eliminar grupos repetidos pondo-os
cada um em uma tabela separada,
conectando-os com uma chave primária ou
estrangeira
18. a
Exemplo fora da 1 FN
Cliente
codigo nome telefone endereco
1 Anderson 1234-5678 / 9876- R. Um, 10 – Mooca
5432 – São Paulo/SP
2 Renata 2222-7788 R. Dois, 20 – Tatuapé –
São Paulo/SP
3 Lili 7777-9999 / R. Três, 8 apto. 161 –
3333-1234 Leblon – Rio de Janeiro/RJ
19. Exemplo Primeira Forma Normal
Cliente
id nome
1 Anderson
2 Renata
3 Lili
Telefone
id id_cliente numero
1 1 1234-5678
2 1 9876-5432
3 2 2222-7788
4 3 7777-9999
5 3 3333-1234
20. Exemplo Primeira Forma Normal
Endereco
id id_cliente endereco numero complemento bairro cidade uf
1 1 R. Um 10 Mooca São Paulo SP
2 2 R. Dois 20 Tatuapé São Paulo SP
3 3 R. Três 8 Apto. 161 Leblon Rio de JaneiroRJ
21. Segunda Forma Normal
● Estar na primeira forma normal
● Todos os atributos não chave devem ser
totalmente dependentes da chave primária
(dependente de toda a chave e não apenas
de parte dela)
22. Como obter a 2FN
● Identificar os atributos que não são
funcionalmente dependentes de toda a chave
primária
● Remover da entidade todos os atributos
identificados e criar uma nova entidade com
eles
23. a
Exemplo fora da 2 FN
Pedido
numero cod_produto produto quant vl_unit subtotal
1001 1 Enxugador de gelo 1 100 100
1002 1 Enxugador de gelo 3 100 300
1003 2 Desentortador de banana 2 150 300
24. Segunda Forma Normal
Pedido
numero cod_produto quant vl_unit subtotal
1001 1 1 100 100
1002 1 3 100 300
1003 2 2 150 300
Produto
codigo_produto nome preco
1 Enxugador de gelo 100
2 Desentortador de banana 150
25. Terceira Forma Normal
● Estar na segunda forma normal
● Nenhuma coluna não-chave depender de
outra coluna não-chave
26. Como obter a 3FN
● Identificar todos os atributos que são
funcionalmente dependentes de outros
atributos não chave
● Removê-los
27. a
Exemplo fora da 3 FN
Pedido
numero codigo_produto quant valor_unitario subtotal
1001 1 1 100 100
1002 1 3 100 300
1003 2 2 150 300
31. Instalando o MySQL
● No Windows:
● 1. Baixe o arquivo noinstall para Windows. No
momento em que escrevo esse tutorial o mais
recente é: mysql-noinstall-5.1.35-win32.zip
● 2. Descompacte esse arquivo para uma pasta
c:mysql
● 3. Abra um prompt de comando e vá até o
diretório bin, digite: cd mysqlbin
32. Instalando o MySQL
● 4. Inicie o MySQL. Ainda no prompt de
comando digite: mysqld --console
● 5. Pronto, o MySQL já está funcionando. Você
já pode se conectar a ele com a ferramenta
gráfica MySQL Query Browser. Nome de
usuário root e na senha deixar vazio.
33. DDL
Data Definition Language
CREATE | DROP DATABASE
CREATE | DROP | ALTER TABLE
CREATE | DROP | ALTER VIEW
CREATE | DROP INDEX
34. Tipos das Colunas
Tipo Tamanho decimais Unsigned zerofil unicode values
TINYINT x x x
SMALLINT x x x
MEDIUMINT x x x
INT x x x
INTEGER x x x
BIGINT x x x
REAL x x x x
DOUBLE x x x x
FLOAT x x x x
DECIMAL x x x x
NUMERIC x x x x
CHAR x x
VARCHAR x x
35. Tipos das Colunas
Tipo Tamanho decimais Unsigned zerofil unicode values
DATE
TIME
TIMESTAMP
DATETIME
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM x
Set x
41. Obtendo dados combinados
Cliente Telefone
cpf nome telefone_id cpf numero
1 Anderson 1 2 87654321
2 Renata 2 1 80000000
3 Lili 3 1 12345678
42. Left [outer] Join
SELECT c.cpf,nome, numero FROM Cliente c
left join Telefone t on c.cpf=t.cpf
cpf nome numero
1 Anderson 80000000
1 Anderson 12345678
2 Renata 87654321
3 Lili NULL
43. Right [outer] Join
SELECT c.cpf,nome, numero FROM Cliente c
Right join Telefone t on c.cpf=t.cpf
cpf nome numero
2 Renata 87654321
1 Anderson 80000000
1 Anderson 12345678
44. Natural Join
SELECT c.cpf,nome, numero FROM Cliente c
Natural join Telefone t
cpf nome numero
2 Renata 87654321
1 Anderson 80000000
1 Anderson 12345678