Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Banco de Dados II Prof. Marcos Miguel marcos.a.miguel@gmail.com http://marcosmiguel.com 2 Prof. Marcos Miguel - MBI BDII(Banco de Dados II) 2 ¨ OBJETIVO ¤ Mostrar e definir os conceitos relativos à criação e organização de Sistemas de Bancos de Dados. Fazer com que o aluno desenvolva habilidades necessárias para a utilização da linguagem de consulta SQL. Possibilitar ao aluno o entendimento da manipulação, criação e gerenciamento de um banco de dados. 3 Prof. Marcos Miguel - MBI BDII(Banco de Dados II) 3 ¨ HABILIDADES ¤ Desenvolver a habilidade para a implementação de banco de dados, manipulação de dados através da linguagem SQL e gerenciamento de um Banco de Dados ¨ COMPETÊNCIAS ¤ Compreender o funcionamento de Sistemas Gerenciador de Banco de Dados, desenvolver a capacidade de implementar, manipular e gerenciar um Banco de Dados ¨ 4 Prof. Marcos Miguel - MBI CONTEÚDO PROGRAMÁTICO 4 ¨ Unidade 1- LINGUAGEM SQL (Structured Query Language) ¤ 1.1. Histórico ¤ 1.2. Conceitos ¤ 1.3. Linguagem ¤ 1.4. Modelo de Exemplo (MER, DTR e SQL) ¤ 1.5. DDL (Data Definition Language) ¤ 1.6. DML (Data Manipulation Language) ¤ 1.7. DCL (Data Control Language) ¤ 1.8. Stored Procedures ¤ 1.9. Triggers ¤ 1.10. Seqüências 5 Prof. Marcos Miguel - MBI CONTEÚDO PROGRAMÁTICO 5 ¨ Unidade 2. PROJETO FÍSICO ¤ 2.1. Estrutura geral do SGBD ¤ 2.2. Regras de integridade ¤ 2.3. Gerência de Transação e controle de concorrência ¤ 2.4. Implementação e criação do script do banco de dados (MySQL e PostgresSQL) ¤ 2.5. Indexação 6 Prof. Marcos Miguel - MBI CONTEÚDO PROGRAMÁTICO 6 ¨ Unidade 3. AMBIENTE DE BANCO DE DADOS ¤ 3.1. Modelo de Transação ¤ 3.2. Log do Banco de Dados ¤ 3.3. Controle de Concorrência ¤ 3.4. Recuperação de Paradas e Falhas ¤ 3.5. Segurança e Integridade ¨ Unidade 4. TÓPICOS ESPECIAIS ¤ 4.1 Tendências das novas tecnologias em Banco de Dados ¤ 4.2 Tipos de Banco de Dados (Híbrido, Orientado a Objeto, Distribuídos) 7 Prof. Marcos Miguel - MBI Bibliografia 7 ¨ ELMASRI, Ramez e NAVATHE, Shamkant B. Fundamentals of Database System. Third Edition. Ed. Addison-Wesley, 2000. ¨ KORTH, H. F. e SILBERSCHATZ, A. Sistemas de Banco de Dados. Terceira edição, São Paulo, Ed. McGraw Hill, 1999. ¨ HEUSER, Carlos Alberto. Projeto de Banco de Dados. Porto Alegre. Ed. Sagra Luzzato, 1998. 8 Prof. Marcos Miguel - MBI Bibliografia auxiliar 8 ¨ DATE, C. J. Introdução a sistemas de bancos de dados. 8.ed. Rio de Janeiro: Campus, 2004. ¨ STEZER, Valdemar W.. Banco de Dados, São Paulo, Ed. Edgar Blucher, 1986. ¨ PERIÓDICOS: Revista SQL Magazine, DevMedia. 9 Prof. Marcos Miguel - MBI Avaliações 9 ¨ V1 – 25/09/2013 ¨ V2 – 27/11/2013 ¨ VT – 20/11/2013 * Apresentação do Trabalho ¨ 2ā chamada (V1 e V2) - 04/12/2013 ¨ VS - 11/12/2013 10 Prof. Marcos Miguel 10 Conceitos Introdutórios 11 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 11 ¨ Matematicamente falando, uma tabela (relação) é um conjunto - um conjunto de linhas. ¨ No modelo relacional temos o BD representado como uma coleção de tabelas. Quando queremos manipular (recuperar) dados, em geral o resultado nos é apresentado como uma tabela, derivada de alguma forma de outras tabelas. ¨ A álgebra relacional é um conjunto de operações sobre as relações. 12 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 12 ¨ OPERAÇÕES TRADICIONAIS ¤ UNION (UNIÃO) R S: Retorna uma tabela que inclui todas as tuplas que estão ou em R ou em S, ou em ambas. Tuplas duplicadas são eliminadas. 13 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 13 ¨ OPERAÇÕES TRADICIONAIS ¤ INTERSECTION (INTERSEÇÃO) 14 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 14 ¨ OPERAÇÕES TRADICIONAIS ¤ SET DIFFERENCE (DIFERENÇA) 15 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 15 ¨ OPERAÇÕES TRADICIONAIS ¤ CARTESIAN PRODUCT (PRODUTO CARTESIANO) 16 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 16 ¨ OPERAÇÕES ESPECIAIS ¤ PROJECT (PROJEÇÃO) 17 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 17 ¨ OPERAÇÕES ESPECIAIS ¤ SELECT (SELEÇÃO) 18 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 18 ¨ OPERAÇÕES ESPECIAIS ¤ DIVISION (DIVISÃO) ¨ R1 ÷ R2: A operação de divisão tem tabelas como operandos. Os nomes das colunas (e os respectivos domínios) da tabela R2 (C2) devem estar contidos dentro dos nomes das colunas (e respectivos domínios) da tabela R1 (C1). A tabela resultante tem como nomes de colunas e domínios aqueles que aparecem duas em R1 mas não aparecem em R2 (C1 - C2). Para que uma linha apareça no resultado é necessário que sua concatenação com cada linha da tabela R2 apareça também na tabela R1. Exemplo: Todos os fornecedores das peças 'P2' e 'P4' R3 = Fornecimento ÷ Temp Divide Fornecimento by Temp over CodPeça giving R 19 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 19 ¨ OPERAÇÕES ESPECIAIS ¤ JOIN 20 Prof. Marcos Miguel - MBI ÁLGEBRA RELACIONAL 20 ¨ OPERAÇÕES ESPECIAIS ¤ JOIN cont… ¨ Estamos trabalhando com join baseado em igualdade de valores de diferentes tabelas (EQUIJOIN). Mas poderíamos ter join com qualquer expressão booleana ("maior que", "menor que", "não igual", etc). Esta operação genérica de junção é chamada THETAJOIN. ¨ Uma operaçao de EQUIJOIN também é representada com a seguinte sintaxe: ¨ Onde listaR e listaS indicam os nomes das colunas das tabelas R e S cujos valores serão comparados um a um para fazer a junção. A segunda coluna é eliminada em cada um dos pares que são comparados, ja ́ que os valores são idênticos. R = R1 * (A),(A) R2 ¨ Um EQUIJOIN em que com os nomes das colunas sejam iguais é chamado NATURAL JOIN. Neste caso, o nome das colunas não precisam ser especificados. R = R1 * R2 21 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 21 ¨ Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é a linguagem de pesquisa declarativa padrão para banco de dados relacional (base de dados relacional). Muitas das características originais do SQL foram inspiradas na álgebra relacional. ¨ Histórico ¤ SEQUEL (Structured English Query Language) - Centro de Pesquisa San Jose da IBM (Projeto System R) n Rapidamente surgiram vários "dialectos" desenvolvidos por outros produtores. Essa expansão levou à necessidade de ser criado e adaptado um padrão para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987. ¤ SQL 1 (SQL-86): Padrão ISO/ANSI. Não havia cláusula para especificar chave; modificado em 1989 ¤ SQL 2 (SQL-92): Implementa conexão cliente/servidor ¤ SQL 3: Em fase de aprovação; implementa o Modelo Orientado a Objeto 22 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 22 ¨ Conceitos ¤ Tabela (table) n Equivale à relação, no Modelo Relacional ¤ Linha (row) - registros n Equivale à tupla, no Modelo Relacional ¤ Coluna (column) n Equivale aos atributos da relação, no Modelo relacional 23 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 23 ¨ Tipos de dados (data type) ¤ Caracter n CHAR(n) ou CHARACTER(n) n VARCHAR(n) ou CHARACTER VARYING(n) ou CHAR VARYING(n) ¤ Numérico n SMALLINT, INTEGER n FLOAT, DOUBLE PRECISION n NUMERIC(precision, scale), DECIMAL(precision,scale) ¤ Datas n DATE n TIME n TIMESTAMP ¤ BLOB (Binary Large Objects) 24 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 24 ¨ Domínios (domain) ¤ Determina os valores possíveis para colunas. Domínios normalmente são definidos antes da criação das tabelas, para que possam ser usadas por estas ¨ Restrições (constraint) ¤ Condições necessária para manter a integridade dos dados ¨ Visões (view) ¤ Uma tabela cujo conteúdo é derivado de outras tabelas 25 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 25 ¨ Banco de dados (database) ¤ Conjunto de tabelas, domínios, restrições, visões, etc ¨ Esquema (schema) ¤ O conceito de uma esquema SQL foi definido com o SQL2 para agrupar tabelas e outros elementos que pertençam a mesma aplicação. Um esquema é identificado por um nome, um identificador do usuário ou conta que possui o esquema e descritores de cada elemento do esquema. ¨ Catálogo (catalog) – Dicionário de dados ¤ Em SQL2 um catálogo é uma coleção nomeada de esquemas em um ambiente SQL. Pode ser entendido com um BD do sistema, que pode ser consultado, contendo: informações sobre as tabelas, visões, direitos de acesso, identificações dos usuários, etc. Sua forma exata é uma característica de cada sistema e não da SQL 26 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 26 ¨ Linguagem ¤ Mais que uma linguagem de consulta, a SQL oferece funções para DEFINIÇÃO, MANIPULAÇÃO e CONTROLE dos dados de um Banco de dados. ¤ DDL (Data Definition Language) n CREATE: criação de novas estruturas n ALTER: alteração de estruturas existentes § DROP: remoção de estruturas ¤ DML (Data Manipulation Language) n INSERT: Inserção de registros n DELETE: remoção de registros n UPDATE: atualização de registros n SELECT: Seleção (consulta) de registros ¤ DCL (Data Control Language) n GRANT: concessão de direitos de acesso a tabelas e visões n REVOKE: revogação de direitos de acesso a tabelas e visões 27 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 27 ¨ Exemplo 28 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 28 ¨ Exemplo 29 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 29 ¨ DDL (Data Definition Language) 30 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 30 ¨ DDL (Data Definition Language) 31 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 31 32 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 32 33 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 33 34 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 34 35 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 35 36 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 36 37 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 37 38 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 38 39 Prof. Marcos Miguel - MBI SQL-STRUCTURED QUERY LANGUAGE 39 Caso de uso 40 Caso de uso 41 Caso de uso 42 DDL – Banco de Dados Matricula 43 DDL – Banco de Dados Matricula 44 DDL – Banco de Dados Matricula 45 DDL - Foreign Key ¨ Criar ¨ Deletar 46 46 DML – SQL ¨ Insert único registro ¨ Insert múltiplos registros 47 47 DML – SQL ¨ Delete - único registro ¨ Delete - múltiplos registros 48 Cuidado! Esta ação apaga todos os registros da tabela 48 DML – SQL ¨ Update – único registro ¨ Update – múltiplos registros 49 49 DML – SQL ¨ Select - único registro ¨ Select - múltiplos registros 50 50 ¨ Select ¤ Inner join ¤ Left join DML – SQL 51 51 DML – SQL ¨ Select – Funções ¤ Count - Conta o total de registros ¤ Min – Calcula o menor valor de uma campo 52 52 DML – SQL ¨ Select – Funções ¤ Max – Calcula o maior valor de uma campo ¤ AVG – Calcula a média dos valores de um campo 53 53 DML – SQL ¨ Select – Funções ¤ SUM – Soma os valores de um campo 54 54 DML – SQL ¤ Select – Funções n Like – manipulação de Strings n “%” - Busca zero ou mais caracteres n “%miguel” -> todos os caracteres terminados com “miguel” n “miguel%” -> todos os caracteres começados com “miguel” 55 55 DML – SQL ¤ Select – Funções n Like n “_” - desconsidera o caracter n “_x” -> todos os caracteres desconsiderando o primeiro 56 Linha Inicial Máximo de linhas 56 DML – SQL ¨ Select – Funções ¤ Left – retorna os primeiros caracteres à esquerda de uma string ¤ Rigth – retorna os últimos caracteres à direita de uma string 57 57 Cláusula GROUP BY ¨ Na grande maioria dos casos, as funções de agregação são usadas em cálculos baseados em grupos de linhas da tabela. A cláusula GROUP BY é usada para dividir as linhas de uma tabela em subgrupos menores. ¨ O SQL recupera cada grupo de linhas de acordo com os valores da(s) expressão(ões) especificada(s) na cláusula GROUP BY. 58 58 Cláusula GROUP BY ¨ A cláusula GROUP BY devera ́ vir sempre após a cláusula WHERE (ou após a cláusula FROM quando não existir WHERE). ¨ Quando a cláusula GROUP BY é utilizada, é possível combinar resultados individuais com funções de grupo na cláusula SELECT, desde que aqueles resultados individuais sejam usados no GROUP BY. 59 59 Cláusula GROUP BY ¨ Exemplo: ¤ Conta o total de pessoas utilizando a primeira letra do alfabeto ¨ Obs: ¤ Quando usar GROUP BY todas as colunas que são usadas no SELECT mas não são usadas na função de grupo devem ser incluídas na clausula GROUP BY. ¤ Usando a cláusula WHERE pode-se selecionar as linhas antes de agrupá-las. 60 60 Cláusula GROUP BY com Having ¨ A cláusula WHERE não pode ser usada para restringir funções de grupo. Assim, o exemplo seguinte não é válido: ¨ Os grupos definidos pela cláusula GROUP BY podem ser filtrados pela cláusula HAVING. 61 61 Cláusula GROUP BY com Having ¨ Exemplo: ¤ Total de pessoas agrupados por nome e filtrado com having para as pessoas iniciadas com a letra “m”. 62 62 Processamento SQL ¨ O processamento da instrução SQL pode ser visto da seguinte forma: n É feito o produto cartesiano das tabelas envolvidas; n São selecionadas as linhas da tabela que obedecem ao critério da cláusula WHERE; n São criados grupos de linhas que contenham valores idênticos nas colunas do GROUP BY; n São selecionados os grupos que atendem ao critério da cláusula HAVING; n É feita a classificação do resultado pelos valores das colunas da cláusula ORDER BY; n É feita a projeção sobre as colunas especificadas no SELECT. 63 63 Subqueries ¨ Subqueries são comandos SELECT utilizados em condições de cláusulas WHERE ou HAVING, para prover resultados que são utilizados para completar a consulta principal. ¨ Uma subquery que retorna apenas uma linha como resultado é chamada "single-row subquery". Caso mais de uma linha seja retornada, a subquery é chamada "multiple- row subquery". 64 64 Subqueries ¨ Os operadores = , > , >= , < , <= e <> podem ser usados em comparações com "single-row subqueries". Os operadores IN, ANY e ALL são usados em "multiple-row subqueries". ¨ Exemplo: ¤ Listar o Aluno com o maior ID 65 65 Subqueries ¨ Operadores ANY e ALL ¤ Quando a subquery retornar mais de um valor, os operadores ANY e ALL podem ser utilizados para compatibilizar o resultado da subquery com o tipo do operador de comparação. ¨ Essa condição será verdadeira quando <campo> for maior que qualquer um dos resultados da subquery. 66 66 Subqueries ¨ Operadores ANY e ALL ¤ Essa condição será verdadeira quando <campo> for menor que qualquer um dos resultados da subquery ¤ Essa condição será verdadeira quando <campo> for maior que todos os resultados da subquery. ¤ Essa condição será verdadeira quando <campo> for menor que todos os resultados da subquery. 67 67 Subqueries ¨ Operadores ANY e ALL ¤ Exemplo: Busca todas as pessoas em que o id seja maior que qualquer resultado no subselect 68 Tabela Aluno 68 Subqueries ¨ Operadores IN e NOT IN ¤ Verifica se o dado faz parte ou não da lista fornecida. A lista pode ser formada por valores retornados por uma subquery. ¤ Exemplo: n Busca todas as pessoas que estejam na tabela de professor 69 69 Operadores de Conjuntos ¨ Como o resultado de um query é um conjunto de linhas você pode realizar operações de conjuntos entre queries. n UNION : União entre os resultados das queries; n INTERSECT : Interseção entre os resultados das queries; n MINUS : Subtração entre os resultados das queries. ¨ A operação de união permite reunir os resultados de duas consultas distintas em um só resultado. Equivale à operação de União da Álgebra Relacional. A operação de união elimina as linhas duplicadas. 70 70 Operadores de Conjuntos ¨ Exemplo: ¤ Unificar os resultados da seleção das tabelas de professor e aluno. 71 71 Operadores EXISTS e NOT EXISTS ¨ EXIST: retorna “verdadeiro” se uma determinada subquery retornar ao menos uma linha e “falso” caso contrário. ¨ NOT EXIST: retorna o resultado contrário do operador EXIST. ¤ Exemplo: Selecionar todas as pessoas que sejam alunos. 72 72 Visões (views) ¨ Uma visão na terminologia SQL é uma tabela que é derivada de outras tabelas. Uma visão não precisa existir fisicamente. Por isso, pode ser considerada como uma tabela virtual, isto é, uma tabela que realmente não existe como tal, mas sim como derivação de uma ou mais tabelas básicas. ¨ A definição da visão fica armazenada no dicionário de dados; esta definição mostra como ela é derivada das tabelas básicas. ¨ O objetivo básico no uso de visões é restringir o acesso a certas porções dos dados por questões de segurança, além de pré-definir certas consultas através de tabelas virtuais que poderão ser utilizadas por outras consultas. 73 73 Visões (views) ¨ Exemplo: ¤ Visão que retornar os professores cadastrados no banco de dados 74 74 Visões (views) ¨ DROP VIEW 75 75 Links úteis Prof. Marcos Miguel 76