O documento descreve os principais conceitos relacionados a bancos de dados e Sistemas Gerenciadores de Banco de Dados (SGBDs), incluindo características dos SGBDs, esquemas, instâncias e estado do banco de dados, arquitetura de três esquemas, independência de dados, linguagens de SGBD como SQL, e exemplos de modelagem de dados usando o modelo entidade-relacionamento.
3. Características dos SGBDs
Natureza auto-contida de um sistema de banco de dados:
metadados armazenados num catálogo ou dicionário de dados.
Independência entre programas e dados:
estrutura dos arquivos de dados armazenada no catálogo
separadamente dos programas de acesso.
Abstração de dados:
representação conceitual dos dados através de modelos de dados.
Suporte de múltiplas visões de dados:
diferentes perspectivas ou visões de usuários.
Suporte a transações:
compartilhamento de dados e processamento multiusuário.
3
4. Esquemas, Instâncias e Estado do BD
Esquema: descrição do banco de dados. É definido durante o projeto de
banco de dados e não se espera que seja alterado freqüentemente.
Estado ou Instância: composto pelos dados do banco de dados em um
determinado momento.
4
6. Arquitetura de Três-Esquemas
Tem por objetivo separar o usuário da aplicação do
banco de dados físico.
É organizada em três níveis:
Nível Interno: descreve a estrutura de armazenamento
físico do banco de dados.
Nível Conceitual: descreve a estrutura de todo o banco de
dados para a comunidade de usuários.
Nível Externo ou Visão: cada esquema externo descreve a
parte do banco de dados que um dado grupo de usuários
tem interesse e oculta o restante do banco de dados
desse grupo.
A maioria dos SGBDs não separa completamente os
três níveis, mas suporta essa arquitetura de alguma
forma. 6
7. Independência de Dados
Consiste da capacidade de mudar o esquema em
um nível do sistema de banco de dados sem que
ocorram alterações do esquema no próximo nível
mais alto.
Independência lógica de dados: é a capacidade de
alterar o esquema conceitual sem mudar o
esquema externo ou os programas.
Independência física de dados: é a capacidade de
alterar o esquema interno sem mudar o esquema
conceitual.
7
8. Linguagens de SGBD
Durante o desenvolvimento do sistema R, pesquisadores da IBM
desenvolveram a linguagem SEQUEL, primeira linguagem de acesso
para Sistemas Gerenciadores de Banco de Dados Relacionais.
ISO e ANSI lançou em 1986 a primeira versão do padrão da
linguagem SQL, o SQL-86.
A linguagem passou por aperfeiçoamentos em 1989 e, em 1992, foi
lançada a SQL-92 ou SQL2.
Um novo padrão, chamado de SQL-99 ou SQL3 foi lançado no ano de
2000. Foi o primeiro padrão a estender a linguagem para permitir a
utilização de tipos de dados complexos e a incorporar características
da orientação a objetos.
Após uma grande revisão do padrão SQL3 foi lançada a SQL:2003.
Nesta verão foi adicionada uma nova parte ligada ao tratamento de
XML.
8
9. Linguagens de SGBD
Linguagem de Definição de Dados (DDL):
usada para especificar o esquema conceitual.
Linguagem de Definição de Armazenamento (SDL):
usada para especificar o esquema interno, mas na maioria dos
SGBDs a DDL é usada para definir este esquema.
Linguagem de Definição de Visões (VDL):
usada para especificar as visões dos usuários e os seus
mapeamentos para o esquema conceitual, mas na maioria dos
SGBDs a DDL é usada para definir ambos os esquemas, o
conceitual e o externo.
Linguagem de Manipulação de Dados (DML):
usada para manipular os dados em um banco de dados. As
manipulações típicas são a recuperação, inserção, remoção e
modificação dos dados.
9
12. Modelo Utilizado
Pessoa (CPF, Nome, Sexo)
Piloto (CPF, Cart_Trab)
CPF Referencia Pessoa
Passageiro(CPF, Dieta)
CPF Referencia Pessoa
Voo(Numero, Data, P_CPF)
CPF Referencia Piloto
Reserva(V_Numero, P_CPF)
V_Numero Referencia Voo
P_CPF Referencia Passageiro
Telefone(Numero, P_CPF)
CPF Referencia Pessoa
12
13. Linguagem de Definição de Dados (DDL)
Criação de Tabelas:
CREATE TABLE NOME_TABELA(
COL1 TIPO_COLUNA [NOT NULL],
COL1 TIPO_COLUNA [NOT NULL],
COL1 TIPO_COLUNA [NOT NULL]
)
13
14. Linguagem de Definição de Dados (DDL)
Na criação de tabelas, é possível especificar vários
tipos de restrições:
Chave Primária: PRIMARY KEY ;
Chave Estrangeira: FOREIGN KEY;
Chave Alternativa (ou alternada): UNIQUE;
Restrição de Domínio: CHECK.
Pode-se atribuir nomes às restrições de
integridade:
CONSTRAINT NOME_RESTRIÇÃO TIPO RESTRIÇÃO.
14
15. Linguagem de Definição de Dados (DDL)
CREATE TABLE Pessoa(CPF VARCHAR(11) NOT NULL,
Nome VARCHAR(30) NOT NULL UNIQUE,
Sexo VARCHAR(1) NOT NULL,
PRIMARY KEY (CPF));
CREATE TABLE Piloto(CPF VARCHAR(11) NOT
NULL,
Cart_Trab VARCHAR(13) NOT NULL UNIQUE ,
PRIMARY KEY (CPF),
FOREIGN KEY (CPF)
REFERENCES Pessoa (CPF));
15
16. Linguagem de Definição de Dados (DDL)
CREATE TABLE Passageiro(CPF VARCHAR(11) NOT NULL
CONSTRAINT PK_PASSAGEIRO PRIMARY KEY
CONSTRAINT FK_PESSOA REFERENCES Pessoa (CPF),
Dieta VARCHAR(1) CHECK (Dieta IN(‘S’, ‘N’)));
CREATE TABLE Voo(Numero Numeric NOT NULL
CONSTRAINT PK_VOO PRIMARY KEY,
Data Date NOT NULL,
TIPO VARCHAR2(15) DEFAULT ‘NACIONAL’,
P_CPF VARCHAR(11) NOT NULL
CONSTRAINT FK_PILOTO REFERENCES Piloto (CPF));
16
17. Linguagem de Definição de Dados (DDL)
Deleção de item referenciado:
... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)
REFERENCES Piloto (CPF)
ON DELETE RESTRICT ); -- impede a exclusão (default)
... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)
REFERENCES Piloto (CPF)
ON DELETE SET NULL); -- transforma o valor em nulo
... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)
REFERENCES Piloto (CPF)
ON DELETE CASCADE ); -- exclui a linha da tabela
17
18. Linguagem de Definição de Dados (DDL)
Criação de uma tabela com linhas de outra:
CREATE TABLE Pessoa_Nova
AS SELECT CPF, Nome, Sexo
FROM Pessoa;
18
19. Linguagem de Definição de Dados (DDL)
CREATE VIEW <nome-de-visão> [ (lista-de-colunas) ]
AS <comando-de-seleção>
CREATE VIEW Empregados_Sede
AS SELECT (Nome, Endereco, Sexo, Data-nasc)
FROM EMPREGADO
19
20. Linguagem de Definição de Dados (DDL)
Alteração de Tabelas:
Incluir novas colunas em uma tabela;
Excluir colunas existentes em uma tabela;
Adicionar a definição de uma restrição em uma tabela;
Excluir a definição de uma restrição existente em uma
tabela;
Modificar uma coluna.
20
21. Linguagem de Definição de Dados (DDL)
CREATE TABLE Reserva(V_Numero Numeric NOT NULL,
P_CPF VARCHAR(11) NOT NULL);
CREATE TABLE Telefone(Numero VARCHAR(15) NOT NULL,
P_CPF VARCHAR(11) NOT NULL,
PRIMARY KEY (Numero, P_CPF),
FOREIGN KEY (P_CPF)
REFERENCES Pessoa(CPF));
21
22. Linguagem de Definição de Dados (DDL)
ALTER TABLE Telefone
ADD COLUMN TIPO VARCHAR2(5) DEFAULT ‘FIXO’ NOT NULL;
ALTER TABLE Telefone
DROP COLUMN Tipo;
ALTER TABLE TELEFONE
ADD CONSTRAINT TIPO_TELEFONE
CHECK (TIPO IN(‘Fixo’, ‘Movel’));
ALTER TABLE TELEFONE
DROP CONSTRAINT TIPO_TELEFONE;
ALTER TABLE TELEFONE
MODIFY (TIPO VARCHAR2(5));
-- para diminuir tamanho a coluna precisa estar vazia.
22
23. Linguagem de Definição de Dados (DDL)
ALTER TABLE Reserva
ADD CONSTRAINT PK_RESERVA PRIMARY KEY (V_Numero, P_CPF);
ALTER TABLE Reserva
ADD CONSTRAINT FK_RESERVA_VOO FOREIGN KEY (V_Numero)
REFERENCES Voo (Numero);
ALTER TABLE Reserva
ADD CONSTRAINT FK_RESERVA_PASSAGEIRO FOREIGN KEY (P_CPF)
REFERENCES Passageiro (CPF);
ALTER TABLE Reserva ENABLE CONSTRAINT
FK_RESERVA_PASSAGEIRO;
ALTER TABLE Reserva DISABLE CONSTRAINT
FK_RESERVA_PASSAGEIRO;
23
24. Linguagem de Definição de Dados (DDL)
Renomear Tabela:
Não é um comando SQL:2003.
RENAME Pessoa TO Pessoa_Nova; -- Oracle
RENAME TABLE Pessoa TO Pessoa_Nova;
Deletar Tabela (estrutura):
DROP TABLE Pessoa;
24