Structured Query Language (SQL) Ambiente Simplificado de um SGBD 2 1
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 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 2
Arquitetura de Três-Esquemas 5 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 3
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 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 4
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 Tipos de Dados (4 GB) (4 GB) 10 5
Modelo Utilizado 11 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 6
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 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 7
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 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 8
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 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 9
Linguagem de Definição de Dados (DDL) CREATE VIEW <nome-de-visão> [ (lista-de-colunas) ] AS <comando-de-seleção> [WITH CHECK OPTION] CREATE VIEW Empregados_Sede AS SELECT (Nome, Endereco, Sexo, Data-nasc) FROM EMPREGADO Atualização (INSERT, UPDATE, DELETE) de visão: A query não pode conter join, ou seja, deve ser baseada apenas em uma tabela. A query deve conter todas as colunas nott null da tabela referenciada. A query não pode conter operadores de conjunto: UNION, EXCEPT e INTERSECT. A query não pode conter o operador DISTINCT. A query não pode conter funções de agregação. A query não pode conter GROUP BY. 19 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 10
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 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 11
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 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 12
FIM 13