Banco de Dados
Colégio Singular
Curso Profissionalizante:
Informática
2015
AGENDA
2
Armazenamento de Informações
Principais Tipos de Banco de Dados
Banco de Dados Relacional
Terminologia do Banco de Dados
Relacionando Várias Tabelas
Tipos de Relacionamentos
Introdução aos comandos SQL
Atividade
Banco de Dados Relacional
Armazenamento de Informações
Armário de Arquivo;
Planilhas Eletrônicas;
Banco de Dados;
–
3
Relação entre “Biblioteca” e “Banco de Dados”.
Banco de Dados Relacional
Principais Tipos de Banco de Dados
4
Hierárquico;
De Rede;
Relacional;
Relacional de Objeto;
Banco de Dados Relacional
Banco de Dados Tradicional
-
Programas da
aula
Arquivo da
aula
Alunos
Professor
Curso
Inscrição
Secretaria
Programas de
contabilidade
Arquivo de
contabilidade
Alunos
Funcionários
Mensalidades
Financeiro
Departamento de
Contabilidade
Programas de
esportes
5
Departamento de
Esportes
Arquivo de
esportes
Atletas
Inf. Acad.
Equipes
Financeiro
Banco de Dados Relacional
-
Programas da
aula
Secretaria
Programas de
contabilidade
Departamento de
Contabilidade
Sistema de
gerenciamento
de banco de
dados
Alunos
Curso
Inscrição
Funcionários
Mensalidades
Financeiro
Time
Informações
Acadêmica
Programas de
esportes
6
Departamento de
Esportes
Banco de Dados Relacional
Conceito de Banco de Dados Relacional
Dr. E. F. Codd Propôs o modelo relacional para banco de
dados em 1970;
Ele é a base para o RDBMS
(Relational Database Management System / Sistema de gestão de bases de dados relacionais );
O modelo relacional é composto de
7
Um conjunto de Objetos ou relações que armazenam dados;
Um conjunto de Operadores para agir sobre as relações;
Integridade de dados para precisão e consistência.
Banco de Dados Relacional
Definição e um Banco de dados Relacional
Banco de Dados Relacional é um conjunto
de relações ou tabelas de duas
dimensões.
8
Banco de Dados Relacional
Terminologia do Banco de Dados Relacional
Elementos da Tabela:
CODIGO
0000969
0000971
0000972
0000973
0000974
0001480
0001481
0001482
0001483
0001484
0001485
9
CPF
99943898499
99995278635
99991468728
36151736999
99994399912
99999343978
99961714275
99975487381
99991293393
99975517221
99999694294
NOME
JUCELINO PEREIR
ELSO DO COSTA
FRANCISCO TEIXE
DIVINO SILVA
RENATO COSTA
JOSE LUIZ
ROBERTO TEIXEIRA
MARINA DOS SANTOS
JOSE OTAVIANO
REINALDO FERREIRA
MARCIO DE ALMEIDA
TIPO_PESSOA
M
M
M
J
F
M
M
F
M
M
M
EST_CIVIL
C
D
S
O
S
C
C
C
C
C
S
COD_END
00009690
00009710
00009720
00009731
00009740
00014800
00014811
00014820
00014830
00014840
00014850
Banco de Dados Relacional
Terminologia do Banco de Dados Relacional
Dado x Informação
Dado: Conjunto de símbolos e sinais. Tudo que é captado pelos sentidos.
Informação: É a interpretação de um conjunto de dados. É o dado
transformado com um significado específico.
10
Banco de Dados Relacional
Terminologia do Banco de Dados
1-Linha (Identificada por chave primária, para impedir
linhas duplicadas);
2-Coluna, valor chave;
3-Coluna que não é valor chave;
4-Coluna, chave estrangeira;
5-Campo;
6-Campo nulo.
11
Banco de Dados Relacional
Terminologia do Banco de Dados Relacional
Elementos da Tabela:
Linha
CODIGO
0000969
0000971
0000972
0000973
0000974
0001480
0001481
0001482
0001483
0001484
0001485
12
Campo
CPF
99943898499
99995278635
99991468728
36151736999
99994399912
99999343978
99961714275
99975487381
99991293393
99975517221
99999694294
Coluna , valor chave.
Campo nulo
NOME
JUCELINO PEREIR
ELSO DO COSTA
FRANCISCO TEIXE
DIVINO SILVA
RENATO COSTA
JOSE LUIZ
ROBERTO TEIXEIRA
MARINA DOS SANTOS
JOSE OTAVIANO
REINALDO FERREIRA
MARCIO DE ALMEIDA
TIPO_PESSOA
M
M
M
J
F
M
M
F
M
M
M
Coluna que não é um valor chave.
EST_CIVIL
C
D
S
O
S
C
C
C
C
C
S
COD_END
00009690
00009710
00009720
00009731
00009740
00014800
00014811
00014820
00014830
00014840
00014850
Colunadechave
estrangeira.
Banco
Dados
Relacional
Relacionando Várias Tabela
13
Cada Linha de dados de uma tabela é identificada
com exclusividade por uma PK (Primary Key, Chave
primaria);
É possível relacionar dados de várias tabelas por
meio de FK’s (Foreing Keys, Chaves estrangeiras).
Banco de Dados Relacional
Tipos de relacionamentos
Um para Muitos;
Um para Um;
Muitos para Muitos
(Livro x LivroAutor x Autor).
14
Banco de Dados Relacional
Tipos de Relacionamentos
15
Banco de Dados Relacional
Tipos de Relacionamentos
16
Banco de Dados Relacional
Normalização de Tabelas
Normalização é um processo a partir do qual se aplicam regras a todas as
tabelas do banco de dados com o objetivo de evitar falhas no projeto, como
redundância de dados e mistura de diferentes assuntos numa mesma tabela.
Ao projetar um banco de dados, se temos um modelo de entidades e
relacionamentos e a partir dele construirmos o modelo relacional seguindo
as regras de transformação corretamente, o modelo relacional resultante
estará, provavelmente, normalizado. Mas, nem sempre os modelos que nos
deparamos são implementados dessa forma e, quando isso acontece, o
suporte ao banco de dados é dificultado.
Em ambos os casos, é necessário aplicar as técnicas de normalização, ou
para normalizar (segundo caso citado), ou apenas para validar o esquema
criado (primeiro caso citado). Aplicando as regras descritas a seguir, é possível
garantir um banco de dados mais íntegro, sem redundâncias e inconsistências.
Banco de Dados Relacional
Normalização de Tabelas
1FN – Um agrupamento de dados somente estará na 1FN se
não houver atributo ou conjunto de atributos em relação de
ocorrência.
2FN – Um agrupamento de Dados somente estará na 2FN se
os atributos não identificadores forem completamente
dependentes do(s) atributos(s) identificador(es).
3FN – Um agrupamento de dados somente estará na 3FN se
não houver relação de dependência entre os atributos não
identificadores.
Banco de Dados Relacional
Normalização de Tabelas
1FN - 1ª Forma Normal: Todos os atributos de uma tabela devem ser
atômicos, ou seja, a tabela não deve conter grupos repetidos e nem atributos com mais de
um valor. Para deixar nesta forma normal, é preciso identificar a chave primária da tabela,
identificar a(s) coluna(s) que tem(êm) dados repetidos e removê-la(s), criar uma nova
tabela com a chave primária para armazenar o dado repetido e, por fim, criar uma relação
entre a tabela principal e a tabela secundária. Por exemplo, considere a tabela Pessoas a
seguir.
PESSOAS = {ID+ NOME + ENDERECO + TELEFONES}
Ela contém a chave primária ID e o atributo TELEFONES é um atributo multivalorado e,
portanto, a tabela não está na 1FN. Para deixá-la na 1FN, vamos criar uma nova tabela
chamada TELEFONES que conterá PESSOA_ID como chave estrangeira de PESSOAS e
TELEFONE como o valor multivalorado que será armazenado.
PESSOAS = { ID + NOME + ENDERECO }
TELEFONES = { PESSOA_ID + TELEFONE }.
Banco de Dados Relacional
Normalização de Tabelas
2FN - 2ª Forma Normal: Antes de mais nada, para estar na 2FN é preciso
estar na 1FN. Além disso, todos os atributos não chaves da tabela devem depender
unicamente da chave primária (não podendo depender apenas de parte dela). Para deixar
na segunda forma normal, é preciso identificar as colunas que não são funcionalmente
dependentes da chave primária da tabela e, em seguida, remover essa coluna da tabela
principal e criar uma nova tabela com esses dados. Por exemplo, considere a tabela
ALUNOS_CURSOS a seguir.
ALUNOS_CURSOS = { ID_ALUNO + ID_CURSO + NOTA + DESCRICAO_CURSO }
Nessa tabela, o atributo DESCRICAO_CURSO depende apenas da chave primária
ID_CURSO. Dessa forma, a tabela não está na 2FN. Para tanto, cria-se uma nova tabela
chamada CURSOS que tem como chave primária ID_CURSO e atributo DESCRICAO
retirando, assim, o atributo DESCRICAO_CURSO da tabela ALUNOS_CURSOS.
ALUNOS_CURSOS = {ID_ALUNO + ID_CURSO + NOTA}
CURSOS = {ID_CURSO + DESCRICAO}
Banco de Dados Relacional
Normalização de Tabelas
3FN - 3ª Forma Normal: Para estar na 3FN, é preciso estar na 2FN. Além
disso, os atributos não chave de uma tabela devem ser mutuamente independentes e
dependentes unicamente e exclusivamente da chave primária (um atributo B é
funcionalmente dependente de A se, e somente se, para cada valor de A só existe um
valor de B). Para atingir essa forma normal, é preciso identificar as colunas que são
funcionalmente dependentes das outras colunas não chave e extraí-las para outra tabela.
Considere, como exemplo, a tabela FUNCIONARIOS a seguir.
FUNCIONARIOS = { ID + NOME + ID_CARGO + DESCRICAO_CARGO }
O atributo DESCRICAO_CARGO depende exclusivamente de ID_CARGO (atributo não chave)
e, portanto, deve-se criar uma nova tabela com esses atributos. Dessa forma, ficamos com as
seguintes tabelas:
FUNCIONARIOS = { ID + NOME + ID_CARGO }
CARGOS = { ID_CARGO + DESCRICAO }
Banco de Dados Relacional
Normalização de Tabelas
Como exercício, normalize a tabela EMPREGADOS a seguir:
Banco de Dados Relacional
Tipos de dados
Tipos de dados definem os tipos de informação que podem ser inseridos em
um campo. Os tipos suportados por um banco de dados podem variar de
SGBD para SGBD, seguem os principais tipos encontrados na maior parte dos
gerenciadores:
Tipo
INT
Números inteiros. Existem outros tipos de números inteiros de acordo
com o gerenciador utilizado.
FLOAT
Números reais. Permitem armazenar todo tipo de número não inteiro.
Existem outros tipos de números reais de acordo com o gerenciador
utilizado.
CARACTER
CHAR
(NÚMERO)
Caracter. Permite a inclusão de dados alfanuméricos com tamanho prédefinido. O número de caracteres é definido entre os parênteses.
CARACTER
VARIÁVEL
VARCHAR
(NÚMERO)
Caracter. Permite a inclusão de dados alfanuméricos. O número de
caracteres é definido entre os parênteses, porém o número de bytes
utilizados pelo campo é de acordo com o dado inserido.
INTEIRO
REAL
DATA
23
Abreviação Genérica Descrição
BOOLEANO
DATE
Data. Existem diversos tipos de datas de acordo com o gerenciador
utilizado.
BOOLEAN
Armazena um bit de informação, utilizado para verdadeiro ou falso.
Banco de Dados Relacional
Instruções SQL
24
DML(Data Manipulation Language)
DDL(Data Definition Language)
Controle de Transações
DCL (Data Control Language)
Banco de Dados Relacional
Instruções SQL
DML(Data Manipulation Language)
–
–
–
–
–
Select;
Insert;
Update;
Delete;
Merge.
Selecionar/Recuperar Dados, informar novas linhas, alterar linhas
existentes e excluir linhas desnecessárias das tabelas do banco
de dados.
25
Banco de Dados Relacional
Instruções SQL
DDL(Data Definition Language)
–
–
–
–
–
–
Create;
Alter;
Drop;
Rename;
Truncate;
Comment.
Possibilita que o profissional, configure, altere e remova estruturas
de dados nas tabelas .
26
Banco de Dados Relacional
Instruções SQL
Controle de Transações
–
–
–
Commit;
Rollback;
SavePoint;
Gerencia as alterações realizadas por instruções DML. Permite o
agrupamento das alterações de dados de acordo com transações
lógicas.
27
Banco de Dados Relacional
Instruções SQL
DCL(Data Control Language)
–
–
Grant;
Revoke.
Administra, concedendo ou retirando acessos ao banco de dados
e as estruturas nele contidas.
28
Banco de Dados Relacional
Introdução aos Comandos SQL
Versão do Banco
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| version()
| CURRENT_DATE |
+--------------+--------------+
| 3.22.20a-log | 1999-03-19
|
+--------------+--------------+
1 row in set (0.01 sec)
Para sair do MySql
mysql> QUIT (não necessita de ponto e vírgula)
29
Banco de Dados Relacional
Introdução aos Comandos SQL
O mysql como uma calculadora simples
mysql> SELECT 2+2, (4+1)*5;
+-------------+---------+
| 2+2
| (4+1)*5 |
+-------------+---------+
| 4
| 25
|
+-------------+---------+
Cancelar a Consulta digite “\c”
mysql> SELECT
-> USER()
-> \c
mysql>
30
Banco de Dados Relacional
Introdução aos Comandos SQL
Múltiplas instruções em uma única linha
mysql> SELECT VERSION(); SELECT NOW();
+--------------+
| VERSION()
|
+--------------+
| 3.22.20a-log |
+--------------+
+---------------------+
| NOW()
|
+---------------------+
| 1999-03-19 00:15:33 |
+---------------------+
31
Banco de Dados Relacional
Introdução aos Comandos SQL
Quais Bancos de Dados existem no Servidor
mysql> SHOW DATABASES;
+---------| Database
+---------| mysql
| test
| tmp
+----------
+
|
+
|
|
|
+
Criando um Banco de Dados
mysql> CREATE DATABASE menagerie;
( Case sensitive )
Utilizando um Banco de dados
mysql> USE menagerie;
32
Banco de Dados Relacional
Introdução aos Comandos SQL
Visualizando as Tabelas;
mysql> show tables;
Criando uma Tabela;
CREATE TABLE nome_tabela
( nome_campo_1
, nome_campo_2
, ... nome_campo_n
);
tipo_1
tipo_2
tipo_n
PRIMARY KEY
NOT NULL
DEFAULT ‘SP’ (PADRÃO)
ou
33
CREATE TABLE nome_tabela
( nome_campo_1
tipo_1
, nome_campo_2
tipo_2
NOT NULL (REQUIRED)
, ... nome_campo_n tipo_n
, PRIMARY KEY (nome_campo_1,...)
);
Banco de Dados Relacional
Introdução aos Comandos SQL
Criando uma Tabela;
CREATE TABLE TB_CLIENTES
( COD_CLIENTE INT(10)
, NOME
VARCHAR(80)
, DT_CADASTRO DATE
, STATUS
CHAR(1)
, CREDITO
FLOAT(12,2)
);
NOT
NOT
NOT
NOT
NOT
NULL PRIMARY KEY
NULL
NULL
NULL DEFAULT ‘1’
NULL
ou
CREATE TABLE TB_CLIENTES
( COD_CLIENTE
INT(10)
, NOME
VARCHAR(80)
, PRIMARY KEY (COD_CLIENTE)
);
34
NOT NULL
NOT NULL
Banco de Dados Relacional
Introdução aos Comandos SQL
Auto Incremento
Para definir um campo como auto-incremento, devemos inserir
AUTO_INCREMENT na frente do campo determinado. Automatiza o
código chave primária de uma tabela;
CREATE TABLE TB_CLIENTES
( COD_CLIENTE
INT(10)
, NOME
VARCHAR2(80)
, PRIMARY KEY (COD_CLIENTE)
);
NOT NULL
NOT NULL
AUTO_INCREMENT
Visualizar a descrição de uma tabela;
mysql> describe TB_CLIENTES;
Ou
mysql> desc TB_CLIENTES;
35
Banco de Dados Relacional
Introdução aos Comandos SQL
Chave Estrangeira
Tem como finalidade estabelecer as relações entre duas ou mais tabelas de um
Banco de Dados. A chave estrangeira referencia o campo que é chave primária
de outra tabela.
FOREIGN KEY (Campo1, Campo2, Campo3 ...)
REFERENCES Nome_Tabela2 (Nome_Chave);
CREATE TABLE TB_CLIENTES
( COD_CLIENTE INT(10)
NOT NULL AUTO_INCREMENT
, NOME
VARCHAR(100)
NOT NULL
, COD_END
INT(10)
, PRIMARY KEY (CODIGO)
, FOREIGN KEY (COD_END) REFERENCES TB_ENDERECO (COD_END)
);
36
Banco de Dados Relacional
Introdução aos Comandos SQL
Alterando Tabelas
Após criada uma tabela no banco de dados, podemos alterar sua estrutura com
o uso da cláusula ALTER TABLE. Deve-se notar que esta alteração é sempre
sobre a estrutura da tabela, e não sobre os dados da tabela. A alteração da
tabela pode correr de duas formas:
ADD – Acrescenta um novo campo na tabela.
MODIFY – Altera as propriedades de um campo já existente
SINTAXE do comando ALTER TABLE:
mysql> ALTER TABLE Nome_Tabela
[ADD Nome_Campo Nova_Regra];
37
Banco de Dados Relacional
Introdução aos Comandos SQL
ADD
A cláusula ADD adiciona um novo campo na tabela, momento onde devemos
definir seu tipo da mesma forma como fazemos ao criar um campo em uma nova
tabela.
ALTER TABLE TB_CLIENTES
ADD tel_comercial INT;
ALTER TABLE TB_CLIENTES
ADD nome_mae VARCHAR(60);
38
Banco de Dados Relacional
Introdução aos Comandos SQL
ADD
Para que um campo seja inserido antes ou depois de um determinado campo de
nossa tabela, utilizar a seguinte sintaxe:
ALTER TABLE Nome_Tabela
ADD Nome_Campo Nova_Regra [FIRST|AFTER] Campo_Determinado;
Ao inserir FIRST, o novo campo será criado antes do campo escolhido da tabela,
se utilizar AFTER, depois.
ALTER TABLE TB_CLIENTES
ADD nome_mae VARCHAR(60) AFTER Nome;
39
Banco de Dados Relacional
Introdução aos Comandos SQL
ADD
Alguns gerenciadores também utilizam a cláusula ADD COLUMN ao invés de
somente ADD. Podemos também utilizar ADD para adicionar por exemplo uma
chave primária em uma tabela.
ALTER TABLE TB_CLIENTES
ADD PRIMARY KEY(Nome);
Para eliminar uma coluna da tabela, utilizar a seguinte sintaxe:
ALTER TABLE Nome_Tabela
DROP nome_campo;
Alguns gerenciadores também utilizam a cláusula DROP COLUMN ao invés de
somente DROP.
40
Banco de Dados Relacional
Introdução aos Comandos SQL
MODIFY
Para modificar as propriedades de um campo em uma tabela, utilizar a cláusula
MODIFY. Segue a sintaxe para alteração do campo nome, aumentando seu
tamanho para 100.
ALTER TABLE TB_CLIENTES
MODIFY nome(100);
Com a cláusula MODIFY, também poderá ser utilizada para alterar tipo de um
campo. Como exemplo, segue a sintaxe para alteração do campo nome, de
Char para VarChar :
ALTER TABLE TB_CLIENTES
MODIFY nome VARCHAR(100);
41
Banco de Dados Relacional
Introdução aos Comandos SQL
REMOVENDO TABELA
A cláusula DROP TABLE exclui definitivamente a tabela qualquer dentro de um
banco de dados.
DROP TABLE nome_tabela;
Ao excluir uma tabela que possui relacionamento com outras tabelas, o SGBD
retornará erro. Neste caso se realmente for necessário excluir uma tabela, devese fazer as alterações necessárias em todas as tabelas relacionadas.
42
Banco de Dados Relacional
Introdução aos Comandos SQL
Inserindo Dados
Inserir dados em uma tabela, significa preencher uma linha de determinada
tabela com dados correspondentes aos tipos determinados naquela tabela. Esta
inserção de dados deve seguir as regras de integridade da tabela.
INSERT INTO Nome_Tabela VALUES (valor 1, valor2, valor3,...);
Os valores valor1 , valor2, etc..., seguem a ordem dos campos da tabela, sendo
utilizado valor vazio (' ') ou “null” para campos que não necessitem de
preenchimento. Dados de tipo numérico podem ser escritos sem a necessidade
de aspas simples. Dados do tipo caracter (como char e varchar2), devem ser
escritos entre aspas simples.
INFORMAR OS CAMPOS PARA EVITAR ERROS:
INSERT INTO TB_CLIENTES (CODIGO, NOME, CPF_CNPJ)
VALUES (null, 'José Pereira', 27227227211);
43
Banco de Dados Relacional
Introdução aos Comandos SQL
Selecionando Dados;
A instrução SELECT é usada para recuperar informações de uma tabela.
SELECT (o que mostrar)
FROM (de qual tabela)
WHERE (condições para satisfazer)
Select * from tabela; (O Asterisco apresenta todos os campos)
Select cod_registo
, nome
from TB_CLIENTES;
Ou
44
Select
,
from
where
cod_registo
nome
TB_CLIENTES
cod_registo = 08;
Banco de Dados Relacional
Introdução aos Comandos SQL
Selecionando Dados;
Para criar uma instrução Select utilizando duas tabelas, relacionar a chave
primária de uma com a chave estrangeira da outra;
45
Select
,
,
from
,
WHERE
tb_funcionarios.cod_registo
tb_funcionarios.nome
tb_cargos.descricao
TB_FUNCIONARIOS
TB_CARGOS
tb_funcionarios.cod_cargo = tb_cargos.cod_cargo
Select
,
from
,
WHERE
AND
tb_cargos.descricao
tb_funcionarios.nome
TB_FUNCIONARIOS
TB_CARGOS
tb_funcionarios.cod_cargo = tb_cargos.cod_cargo
tb_funcionarios.cod_cargo = 08;
Banco de Dados Relacional
Introdução aos Comandos SQL
Selecionando Dados;
Para facilitar a referencia para as tabelas, é possível a utilização de um “alias”,
funciona como um apelido para encontrar o nome da tabela (apenas dentro do
bloco SQL);
46
Select
,
,
from
,
WHERE
fun.cod_registo
fun.nome
car.descricao
TB_FUNCIONARIOS fun
TB_CARGOS
car
fun.cod_cargo = car.cod_cargo
Select
,
from
,
WHERE
AND
car.descricao
fun.nome
TB_FUNCIONARIOS
fun
TB_CARGOS
car
fun.cod_cargo = car.cod_cargo
fun.cod_cargo = 08;
Banco de Dados Relacional
Introdução aos Comandos SQL
Ordenação de Dados
–
O exemplo abaixo ordena os dados de acordo com a coluna data_cadastro.
Select
,
,
from
ORDER BY
–
47
nome
uf
data_cadastro
TB_CLIENTES
data_cadastro ;
Para ordenar os dados utilizando duas ou mais colunas como critério basta
separar os campos por “ , “.
Select
,
,
from
ORDER BY
,
nome
uf
data_cadastro
TB_CLIENTES
uf
data_cadastro ;
Banco de Dados Relacional
Introdução aos Comandos SQL
Alterando dados de uma tabela;
A instrução UPDATE é usada para altera as informações de uma tabela.
UPDATE (qual tabela alterar)
SET (o campo que irá receber a alteração) = (O novo conteúdo)
WHERE (condições para satisfazer);
UPDATE TB_CLIENTES
SET nome
= ‘Rodrigo F. Prata’
WHERE cod_registo = 1;
48
Banco de Dados Relacional
Introdução aos Comandos SQL
Removendo Dados;
Para remover os dados de uma tabela utilizar a cláusula DELETE.
DELETE FROM Nome_Tabela
[WHERE condição ];
O comando Delete pode ser realizado sem o WHERE. Neste caso todas as
linhas da tabela determinada serão excluídas. Utilizar WHERE quando for
necessário eliminar os registros que obedeçam certa condição.
DELETE FROM TB_CLIENTES;
Ou
DELETE FROM TB_CLIENTES
WHERE cod_registo = 1;
49
Banco de Dados Relacional
Download

Banco de Dados Relacional [Modo de Compatibilidade]