Banco de Dados Relacional

Propaganda
Banco de Dados
Colégio Singular
Curso Profissionalizante:
Informática
2016
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 (COD_CLIENTE)
, FOREIGN KEY (COD_END) REFERENCES TB_ENDERECO (COD_END)
);
36
Banco de Dados Relacional
Download