Baixe o app para aproveitar ainda mais
Prévia do material em texto
José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 1 1���� �������� ���� �� �� � ������������ ��������� ������� ������� José Maria Monteiro Universidade de Fortaleza monteiro@unifor.br 2���� �������� ���� �� �� � ����������� � ��� � � 1. Introdução aos Sistemas de Banco de Dados 2. Modelo de Entidades e Relacionamentos (MER) 3. O Modelo Relacional 4. Projeto de Bancos de Dados Relacionais 5. SQL 6. Acesso a Bancos de Dados 7. Restrições de Integridade 8. Técnicas Avançadas de Projeto de BD’s Relacionais (Normalização) � 3���� �������� ���� �� �� � ����������� � ��� � � 9. Introdução à Armazenamento e Indexação 10. Introdução ao Processamento de Consultas 11. Introdução ao Processamento de Transações 12. Introdução à Recuperação e Logging 13.Banco de Dados Orientados a Objetos (BDOO) 4���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Bibliografia Recomendada - 1. Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 2. Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 3. O’Neil, Patrick., O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 4. Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley. 5���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 1, 2Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 1O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 1Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 1Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 1. Tecnologia de Banco de Dados Capítulo/SeçãoLivroTópico 6���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 3, 4Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 6.1, 6.2, 6.3, 6.4O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann Nenhum capítulo específico para o tópico Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 2Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 2. Modelo Entidade- Relacionamento (MER) Capítulo/SeçãoLivroTópico José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 2 7���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 7, 9.3Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 2O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 1.4, 6.1Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 3Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 3. Modelo Relacional (MR) Capítulo/SeçãoLivroTópico 8���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 9Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley Nenhum capítulo específico para o tópico O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann Nenhum capítulo específico para o tópico Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 2.8Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 4. Projeto de Banco de Dados Relacionais Capítulo/SeçãoLivroTópico 9���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 8, 18.1Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 3O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 1.4Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 4Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 5. SQL Capítulo/SeçãoLivroTópico 10���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - Nenhum capítulo específico para o tópico Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 5O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann Nenhum capítulo específico para o tópico Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 4.12Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 6. Acesso à Banco de Dados Capítulo/SeçãoLivroTópico 11���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 7.2, 7.3 Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 7O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann Nenhum capítulo específico para o tópico Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 6Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 7. Restrições de Integridade Capítulo/SeçãoLivroTópico 12���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 14, 15Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 6.5 a 6.9O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann Nenhum capítulo específico para o tópico Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 7Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 8. Técnicas Avançadas de Projeto de Banco de Dados Relacionais Capítulo/SeçãoLivroTópico José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 3 13���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 5, 6Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 8O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 2, 3, 4Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 10Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 9. Introdução ao Armazenamento e Indexação Capítulo/SeçãoLivroTópico 14���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 18Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 9O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 6, 7Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação deSistemas de Bancos de Dados”. Editora Campus, 2001 12Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 10. Introdução ao Processamento de Consultas Capítulo/SeçãoLivroTópico 15���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 19, 20Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 10.1, 10.2, 10.3, 10.4, 10.5 O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 9, 10Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 13, 14Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 11. Introdução ao Processamento de Transações Capítulo/SeçãoLivroTópico 16���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 21Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 10.6, 10.7, 10.8, 10.9 O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 8Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 15Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 12. Introdução à Recuperação e Logging Capítulo/SeçãoLivroTópico 17���� �������� ���� �� �� � ����������� ��������� ������� ������� � - Guia Bibliográfico por Tópicos - 11, 12, 13Elsmari, R., Navathe, Shamkant B. “Fundamentals of Database Systems”. Third Edition, Addison-Wesley 4 O’Neil, Patrick, O’Neil, Elizabeth. “Database: Principles, Programming and Performance”. Second Edition, Morgan Kaufmann 8Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer. “Implementação de Sistemas de Bancos de Dados”. Editora Campus, 2001 15Silberschatz, A., Korth, H., Sudarshan, S. “Sistemas de Banco de Dados”, 3ª Edição, Makron Books 13. Banco de Dados Orientados a Objeto Capítulo/SeçãoLivroTópico 18���� �������� ���� �� �� � ����������� ���� ��� � �� �� � ���� ������� ������� � � � �� �� ��� � � Processamento de arquivo (anos 60 e 70) �Paradigma de processamento de dados �Cada aplicação �Definir e manter seus próprios dados Descrição de dados Programa 1 Descrição de dados Programa 2 Descrição de dados Programa 3 Arquivo B Arquivo A Arquivo C José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 4 19���� �������� ���� �� �� � ����������� ���� Redundância e inconsistência ���� Dificuldade de acesso aos dados ���� Isolamento dos dados ���� Problemas de integridade ���� Problemas de atomicidade ���� Anomalias de acesso concorrente ���� Problemas de segurança ���� ��� � �� �� � ���� ������� ������� � � � �� �� ��� � � Dados em Arquivos 20���� �������� ���� �� �� � ����������� � Tecnologia de banco de dados �Definição e gerenciamento centralizado de dados �Independência de dados �Alteração na organização lógica ou física dos dados não implicar na alteração de programas �Eliminar redundância de dados �Eliminar inconsistência de dados �Facilitar acesso a dados através de uma linguagem de consulta �Evitar inconsistências produzidas pelo acesso concorrente �Recuperar estado consistente do dados após situação de falha ���� ��� � �� �� � ���� ������� ������� � 21���� �������� ���� �� �� � ����������� � Tecnologia de banco de dados Programa 1 Programa 2 Programa 3 Descrição de Dados Banco de DadosSistema de Banco de Dados •Conjunto de dados inter-relacionados (banco de dados) •Componente de software (SGBD) •Acesso e modificação dos dados �Garantir uma visão abstrata dos dadosTornar transparente como os dados são armazenados e gerenciados ���� ��� � �� �� � ���� ������� ������� � 22���� �������� ���� �� �� � ����������� � Nível físico: descreve como os dados são armazenados � Nível lógico: descreve quais dados são armazenados e os relacionamentos entre eles � Nível de visualização: descreve partes de interesse do usuário/aplicação Sistemas de Bancos de Dados Usuário tem uma visão abstrata dos dados ���� ��� � �� �� � ���� ������� ������� � � � � � �� � � � � � � � � 23���� �������� ���� �� �� � ����������� Esquema Externo 1 Esquema Externo 2 Esquema Externo n Esquema Conceitual Esquema Interno (Banco de Dados armazenado) � �� ������ ����� ��� ������ � ��������� ��� ������ �� ���� ���� ��� � �� �� � ���� ������� ������� � � � �� � ��� �� � � � � �� � � � � � � 24���� �������� ���� �� �� � ����������� � Esquema Interno - Camada Interna �Descreve como os dados estão fisicamente armazenados �Exemplo �Organização de arquivo � seqüencial-indexado, hashing, seqüencial, heap �Alocação em disco � Contígua, lista encadeada, lista encadeada utilizando índice �Tipo de registro � Fixo, variável � Esquema Conceitual - Camada Conceitual �Descreve quais dados estão armazenados no banco de dados �Descreve os relacionamentos entre os dados armazenados � Esquema Externo - Camada Externa �Descreve parte do banco de dados �Simplificar a visão do usuário �“Ver” só o que interessa �Segurança ���� ��� � �� �� � ���� ������� ������� � � � �� � ��� �� � � � � �� � � � � � � José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 5 25���� �������� ���� �� �� � ����������� � Ocorrências (instâncias) �Coleção de informações armazenadas na base �Altamente mutáveis � Esquemas �Projeto ou estrutura da base - definição �Um esquema para cada nível de abstração � Esquema físico - nível interno � Esquema lógico - nível conceitual � Sub-esquemas ou esquemas de visualização - nível externo ���� ��� � �� �� � ���� ������� ������� � � � � ��� � � � � � � � � � � � � � 26���� �������� ���� �� �� � ����������� Habilidade de modificar o esquema físico sem causar redefinição dos programas de aplicação Modificações são necessárias para melhorar desempenho Habilidade de modificar o esquema lógico sem causar redefinição dos programas de aplicação Modificações são necessárias quando a estrutura lógica da base é alterada ���� ��� � �� �� � ���� ������� ������� � � �� � � � � � � � � � � � � � � � � 27���� �������� ���� �� �� � ����������� � Sistema de Bancos de Dados (SBD ou DBS) �Banco de Dados (BD ou DB) �Conjunto de dados relacionados �Sistema Gerenciador de Bancos de Dados (SGBD ou DBMS) �Componente de software �Acesso �Controle de Concorrência �Recuperação �Armazenamento ���� ��� � �� �� � ���� ������� ������� � � � � ��� �� � � 28���� �������� ���� �� �� � ����������� � Finalidade �garantir a especificação do esquema de um banco de dados �permitir consultas e atualizações sobre o banco de dados � Componentes �DDL - Data Description Language �Utilizada para especificar o esquema de um BD �Expressões da DDL � Interpretadas (compilados) gerando a especificação de um conjunto de tabelas � A especificação das tabelas é armazenada no catálogo do banco de dados �Exemplo (SQL) � create table Empregado (matr integer not null, nome varchar(35), salário real, primary key(matr)) ���� ��� � �� �� � ���� ������� ������� � � � �� � � � � � ! � � � � � � � � 29���� �������� ���� �� �� � ����������� � Componentes (cont.) �DML - Data Manipulation Language �Utilizada para permitir �Consultas sobre um BD � Exemplo (SQL) select nome from Empregado where salario > 7000 �Inserções em uma tabela � Exemplo (SQL) insert into Empregado values(123, “Bárbara”, 5000.00) �Remoções em uma tabela � Exemplo (SQL) delete from Empregado where matr=14 �Atualizar valores de atributos de uma tabela � Exemplo (SQL) update Empregado set salário=salário∗∗∗∗1.15 where salário<1500.00 DML Procedural - requera especificação de quais dados devem ser acessados e como devem ser acessados Nonprocedural - requer somente a especificação de quais dados devem ser acessados ���� ��� � �� �� � ���� ������� ������� � � � �� � � � � � ! � � � � � � � � 30���� �������� ���� �� �� � ����������� �SGBD �Processador de Consultas + Sistema de Armazenamento Processador de Consultas Compilador DML �Analisa sintaticamente e semanticamente comandos DML expressos em uma linguagem de consulta (ex. SQL) �Traduz estes comandos para uma das formas de representação interna de consultas (ex. álgebra relacional) Pré-Compilador DML �Traduz comandos DML em chamadas a procedimentos (rotinas) na linguagem hospedeira Interpretador DDL �Interpreta comandos DDL e os armazena no catálogo � Tabelas contendo meta-dados � Descrição do banco de dados � Esquema Mecanismo de Consultas �Responsável pela otimização e geração de planos de execução de consultas ���� ��� � �� �� � ���� ������� ������� � � � � ��� �� � � José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 6 31���� �������� ���� �� �� � ����������� �SGBD Sistema de Armazenamento Gerenciador de Transações �Controle de concorrência �Recuperação do banco de dados após falhas Gerenciador de Buffer �Responsável para recuperar objetos em disco e carregá-los na memória principal em forma de páginas � SGBD possui uma área de buffer em memória principal �Mapeamento: Bloco (disco) (buffer do SGBD) �Definição da política de alocação do buffer � MRU, LRU, FIFO, etc Página Gerenciador de Arquivo (File System) �Responsável pelo armazenamento físico em disco �Gerencia a alocação de espaço em disco ���� ��� � �� �� � ���� ������� ������� � � � � ��� �� � � 32���� �������� ���� �� �� � ����������� �BD �Arquivos de dados + Índices + Catálogo Arquivos de dados �Armazena os dados Índices �Estruturas de índices para os arquivos de dados Catálogo �Armazena esquema do banco de dados (meta-dados) �Nomes das tabelas �Atributos de cada tabela �Definição de índice para uma tabela, etc… �Armazena informações estatísticas �Exemplo � Cardinalidade de uma tabela �Utilizadas na otimização de consultas ���� ��� � �� �� � ���� ������� ������� � � � � ��� �� � � 33���� �������� ���� �� �� � ����������� EsquemaConsultaPrograma Aplicativo Gerenciador de Transações Mecanismo de Consultas Gerenciador de Buffer Gerenciador de Arquivo Compilador DML Pre-compilador DML � � ������� ����������� � ����������� ��������� �� � �� � � Código Objeto aplicativos Arquivos de dadosíndices Catálogo � DBAUsuário experienteProgramadores Interpretador DDL ���� ��� � �� �� � ���� ������� ������� � � � �� � ��� �� � � � " # ! � $� � 34���� �������� ���� �� �� � ����������� � Definição do esquema conceitual � Definição dos métodos de acesso e estruturas de armazenamento � Manutenção do esquema e da organização física dos dados � Definição da política de acesso aos dados � Especificação de restrições de integridade ���� ��� � �� �� � ���� ������� ������� � � � � � � �� �� �� � � � � ! � � � � � � � � %� ! � & � 35���� �������� ���� �� �� � ����������� � Programadores de aplicação � Usuários sofisticados � Usuários especializados em aplicações não- convencionais � Usuários de programas de aplicação ���� ��� � �� �� � ���� ������� ������� � � ' � � ( �� � � � ! � � � � � � � � � 36���� �������� ���� �� �� � ����������� � Modelos lógicos baseados em objetos �Modelo entidade-relacionamento �Modelo orientado a objeto � Modelos lógicos baseados em registros �Modelo relacional �Modelo Codasyl (rede) �Modelo hierárquico � Modelos físicos de dados Conjunto de ferramentas conceituais para descrever dados, seus relacionamentos, sua semântica e restrições de consistência ���� ��� � �� �� � ���� ������� ������� � � ) � � * � � � � � � José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 7 37���� �������� ���� �� �� � ����������� � Um modelo de dados é definido por três componentes Uma coleção de tipos de estrutura de dados �blocos de construção do banco de dados �Uma coleção de operadores �Podem ser aplicados a qualquer instância dos tipos de dados definidos em 1 �Uma coleção de regras de integridade �Definem o conjunto de estados consistentes do banco de dados �Definem o conjunto de transições consistentes de estado do banco de dados � Representar dados do mundo real �Capturar a semântica e incorporá-la em um banco de dados �Exemplo �Através do modelo relacional representar os dados de uma universidade ���� ��� � �� �� � ���� ������� ������� � � ) � � * � � � � � � 38���� �������� ���� �� �� � ����������� � Classificação de SBDs - Modelo de Dados �Sistema de Banco de Dados Relacional �Modelo Relacional �Tipo primitivo de dados � Relação (tabela) - Conjunto de tuplas (linhas) �Conjunto de Operadores � Álgebra Relacional � Cálculo Relacional �Restrições de integridade � Integridade de chave primária � Integridade referencial ���� ��� � �� �� � ���� ������� ������� � � � * � � ���� � � � � " �� �� � � � � ! � � � � � � � � � 39���� �������� ���� �� �� � ����������� � Classificação de SBDs - Modelo de Dados �Sistema de Banco de Dados Orientado a Objeto �Modelo orientado a objeto �Tipos primitivos � Objeto, conjunto, lista, string, integer, real �Restrições de integridade � Unicidade de Objeto e identidade de objeto � Hierarquia de classes � Herança - Uma classe herda as propriedades da superclasse � Comportamento de objetos de uma classe - Método �Sistema de Banco de Dados Objeto-Relacional �Modelo relacional + Modelo OO ���� ��� � �� �� � ���� ������� ������� � � � * � � ���� � � � � " �� �� � � � � ! � � � � � � � � � 40���� �������� ���� �� �� � ����������� � Classificação de SBDs - Arquitetura �Sistema de Banco de Dados Centralizados �Os componentes do SBD residem no mesmo host �Sistema de Banco de Dados Cliente-Servidor �Distribuição de funções do SGBD entre clientes e servidor �Sistema de Banco de Dados Paralelos �Distribuição do controle de funções do DBMS entre diversos sistemas computacionais �Sistema de Banco de Dados Distribuídos �Distribuição de dados através de diversos SBDs homogêneos �Sistema de Banco de Dados Heterogêneos �Distribuição de dados através de SBDs heterogêneos e autônomos �Sistema de banco de dados múltiplos (MDBS) �Sistema de banco de dados federados �Sistema de Banco de Dados Móvel �Distribuição de funções do SGBD entre clientes e servidor em ambientes de computação móvel ���� ��� � �� �� � ���� ������� ������� � � � * � � ���� � � � � " �� �� � � � � ! � � � � � � � � � 41���� �������� ���� �� �� � ����������� � Controle de acesso concorrente �Isolamento entre transações concorrentes � Tolerância a falhas �Atomicidade das operações �Persistência dos resultados das transações bem sucedidas Coleção de operações que realizam uma única função lógica em uma aplicação de banco de dados ���� ��� � �� �� � ���� ������� ������� � � # � �� � � � � � � � � � � � � � � + � � � 42���� �������� ���� �� �� � ����������� � Concorrência em um ambiente multiusuário �Entrelaçamento (interleaving) de operações �Operações de um programa podem ser executadas entre duas operações de outro programa �Alterações inconsistentes no banco de dados �DBMS precisa monitorar e controlar a execução concorrente de programas �Controle de Concorrência ���� ��� � �� �� � ���� ������� ������� � � � � �� *� � � � � � ��� � � � � José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 8 43���� �������� ���� �� �� � ����������� � ��� � � � Introdução aos Sistemas de Banco de Dados � Modelo de Entidades e Relacionamentos � Bancos de Dados Relacionais �O Modelo Relacional �Modelagem de Dados �Álgebra Relacional �Linguagem deManipulação e Consulta � Projeto de Bancos de Dados Relacionais � Projeto Lógico de Bancos de Dados � 44���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � � Modelo de dados MER �Não é implementado por nenhum SBD �Utilizado como modelo conceitual para projeto de BDs �Ferramenta para a modelagem de BDs �Proposto por P. Chen em 1976 �Princípio básico �Representar dados através Entidades Relacionamentos entre as entidades Atributos �Propriedades de entidades ou relacionamentos 45���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Entidade �Representação abstrata de um objeto do mundo real �Exemplos de entidades do mundo real �Objeto concreto �Um empregado, um carro, um estudante �Objeto abstrato �Uma empresa, uma conta bancária, uma disciplina �Conjunto de entidades (tipo de entidade) �Entidades que apresentam características semelhantes �Exemplo �Estudantes, Empregados, Contas 46���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Atributos de uma entidade �Propriedades que caracterizam uma entidade �Exemplos �Atributos de empregados �matrícula, nome, endereço, rg, cpf, data-nasc, salário, lotação, data-admissão �Atributos de estudantes �matrícula, nome, curso, rg, cpf, data-ingresso �Conjunto de entidades �Grupo de entidades que apresentam mesmo conjunto de atributos �A cada atributo de uma entidade deve estar associado um valor 47���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Atributos de uma entidade (cont.) �Um atributo pode ser ainda definido como �Uma função que associa um elemento do conjunto de entidades a um elemento de um conjunto de valores do atributo (domínio do atributo) � � 13 Conjunto de matrículas � � � � � Bárbara Conjunto de nomes � � � � � R. X, 9 Conjunto de endereços� � � �� � � � � � � Empregados matrícula nome endereço ∀∀∀∀Ei∈∈∈∈ Empregados Nome: Ei �������� nk , onde nk∈∈∈∈ conjunto nomes 48���� �������� ���� �� �� � ����������� �Atributos de uma entidade (cont.) �Atributos chave de uma entidade �Conjunto de atributos que identificam univocamente uma entidade �Seja f um atributo chave para um conjunto de entidades D, x∈∈∈∈D e f(x)=v, então �∀∀∀∀d∈∈∈∈D e d≠≠≠≠x, f(d)≠≠≠≠v �Exemplo �Matrícula é atributo chave para Estudante �Tipos de atributos �Atributo atômico �Atributo que não pode ser subdividido �Atributo composto �Atributo formado por vários atributos � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � endereço local cep cidade rua número José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 9 49���� �������� ���� �� �� � ����������� �Atributos de uma entidade (cont.) �Tipos de atributos �Atributo mono-valorado �Atributo para o qual está associado um único valor �Exemplo � Nome �Atributo multi-valorado �Atributo para qual podem estar associados vários valores �Função que associa um elemento do conjunto de entidades a um subconjunto de um conjunto de valores �Exemplo � Para o atributo telefone podem estar associados vários valores, como telefone residencial, comercial e celular �Atributo derivado �Atributo cujo valor poder derivado com base no valor de um outro atributo (atributo base) �Exemplo � Atributo idade pode ser derivado do atributo data-nasc � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � 50���� �������� ���� �� �� � ����������� �Relacionamento �Abstração que representa associações entre diferentes conjuntos de entidades �Exemplo �Pode-se definir um relacionamento que associa o empregado Bárbara com o departamento “Ciência da Computação” �Conjunto de relacionamentos (tipo de relacionamento) �Grupo de relacionamentos que representam o mesmo tipo de associação �Exemplo � Conjunto de relacionamentos lotação +Contém todos os relacionamentos entre empregado e .departamento �Seja R um conjunto de relacionamentos representando associações entre os conjuntos de entidade E1, E2, ... En, � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � 51���� �������� ���� �� �� � ����������� �Relacionamento (cont.) �Conjunto de relacionamentos (cont) �Seja R um conjunto de relacionamentos, representando associações entre os conjuntos de entidades E1, E2, ... En, então R ⊆ E1 x E2 x En �Seja r∈R, então r=(e1, e2, …, en), onde e1∈E1, e2∈E2, …, en∈En, �Exemplo �Considere o conjunto de relacionamentos lotação � lotação ⊆ Departamento x Empregado � (Bárbara, Ciência da Computação) ∈lotação �Papel (role) �Função que uma entidade desempenha no relacionamento �Exemplo �Papel de empregado � É lotado (Bábara é lotada em Ciência da Computação) �Papel de departamento � Lota (Ciência da Computação lota Bárbara) � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � 52���� �������� ���� �� �� � ����������� Agência_Conta-Cliente �Relacionamento (cont.) �Grau de Relacionamento �Número de entidades participantes no relacionamento �Relacionamento binário �Relacionamento de grau 2 �Exemplo �Relacionamento ternário �Relacionamento de grau 3 �Exemplo � Relacionamento Agência-Conta-Cliente � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � ��� � � � � � Cliente � � � � � � � Conta � �� � � � � � Agência 53���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Relacionamento (cont.) �Auto-relacionamento (relacionamento recursivo) �Relacionamento envolvendo um único conjunto de entidades �O conjunto de entidades apresenta diferentes papéis �Considere o seguinte cenário: �Cada departamento possui vários supervisores � responsáveis por um subconjunto de empregados do departamento �Modelagem do relacionamento entre empregado e supervisor � Um supervisor também é uma entidade do tipo Empregado � Relacionamento supervisiona Supervisiona � � � � Empregado � � 1 1 2 2 1 1 Empregado desempenha dois papéis - é-supervisionado-por (1) - é-supervisor-de (2) 54���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Relacionamento (cont.) �Atributos de relacionamento �Propriedades que descrevem um relacionamento �Exemplo �Considere o atributo data-lotação � Representa a data em que um empregado foi lotado em um determinado departamento � data-lotação é um atributo do relacionamento lotação �Considere o atributo nota na modelagem de dados da Unifor � Descreve a nota de um aluno em uma disciplina � nota é um atributo do relacionamento cursa � Cursa representa o relacionamento entre os conjuntos de entidades Estudante e Disciplina José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 10 55���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Restrições estruturais de relacionamentos �Cardinalidade de relacionamento �Indica o número de entidades que podem participar de um determinado relacionamento �Seja R um relacionamento binário entre os conjuntos de entidades A e B �A Cardinalidade de R deve ser uma das seguintes: � Um para um (1:1) � Uma entidade de A só pode estar associada a uma ..…entidade de B � Uma entidade de B só pode estar associada a uma ..…entidade de A � Um para muitos (1:N) � Uma entidade de A pode estar associada a qualquer ..…quantidade de entidades de B � Uma entidade de B só pode estar associada a uma ..…entidade de A � Muitos para um (N:1) � Uma entidade de A só pode estar associada a uma ..…entidade de B � Uma entidade de B pode estar associada a qualquer ..…quantidade de entidades de A 56���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Restrições estruturais de relacionamentos (cont.) �Cardinalidadede relacionamento (cont.) � Muitos para muitos (N:N) � Uma entidade de A pode estar associada a qualquer ..…quantidade de entidades de B � Uma entidade de B só pode estar associada a qualquer ..…quantidade de entidades de A �Exemplos �Cardinalidade do relacionamento lotação entre Departamento e Empregado �Cardinalidade do relacionamento cursa entre Estudante e Disciplina �Cardinalidade do auto-relacionamento supervisiona �Cardinalidade do relacionamento que modela o fato de que cada departamento da empresa possui um gerente 1:N N:N 1:N 1:1 57���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Restrições estruturais de relacionamentos (cont.) �Restrição de participação �Especifica a obrigatoriedade ou não de uma entidade e participar de um relacionamento com outra entidade �Participação total �A participação de um conjunto de entidades A é total em um relacionamento R, se toda entidade de A participa de pelo menos um relacionamento em R �Dependência existencial �Exemplo � Considere o relacionamento lotação, para o qual todo empregado deve estar lotado em algum departamento � A participação de Empregado em lotação é total �Participação parcial �A participação de um conjunto de entidades A é parcial em um relacionamento R, se apenas um subconjunto de entidades de A participa em R �Exemplo � Relacionamento cursa entre Estudante e Disciplina 58���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � �� � ! ( � �� � � �Entidade fraca �Entidade cuja existência depende de estar associada, via um relacionamento (relacionamento de identificação), com uma outra entidade (entidade forte) �Exemplo �Considere o relacionamento dependência entre os conjuntos de entidades Empregado e Dependente �Dependente contém os dependentes dos empregados da empresa �A existência de um dependente Bárbara �Depende da existência de um empregado André e que �Bárbara esteja relacionada a André através do relacionamento dependência �Uma entidade fraca é identificada �Por estar relacionada com uma entidade forte �Pelo atributo chave da entidade forte �Atributos da própria entidade fraca �Chave parcial 59���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � � Ferramenta de projeto �Capaz de capturar e representar graficamente toda estrutura lógica de um banco de dados �Utilizada para modelagem de BDs �Existem ferramentas �Fornecem uma interface gráfica para o desenvolvimento de DERs �A partir do DER especificado, geram o esquema do BD relacional �ERWin 60���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � � Notação Nome atributo ������� ������� ����� Conjunto de entidades Conjunto de entidades fracas Conjunto de relacionamentos (relacionamento) Relacionamento de identificação Atributo José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 11 61���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � � Notação Nome atributo ������� ������� ����� Atributo chave Nome atributo Atributo derivado Nome atributo* Nome atributo Nome atributo Nome atributo Atributo multivalorado Atributo composto 62���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � � Notação ������� ������� ����� E1 R E21 N Cardinalidade 1:N R E(min,max) Restrição estrutural departicipação de E em R E1 R E2 Participação total de E2 em R Nome atributo Atributo chave parcial de uma entidade fraca 63���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � � Exercício �Utilize o DER para modelar o BD para o seguinte cenário �A empresa X tem seus dados organizados da seguinte forma: �Os empregados estão lotados em diversos departamentos. Funcionários são diretamente chefiados por supervisores. É importante identificar o supervisor de cada funcionário �Todo funcionário deve estar lotado em um departamento. Nenhum funcionário pode estar lotado em mais de um departamento �Um departamento possui no mínimo 5 empregados, onde um deles é o gerente do departamento. �Os dependentes dos funcionários devem possuir como atributos: nome, data-nasc. A idade limite para ser dependente de um empregado é 18 anos �O salário de um empregado é calculado com base nos seus diversos vencimentos. �Para tipo de vencimento, existe uma descrição e o valor correspondente 64���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � ��������� (1,1) ��������� �� ������� (5,n) (1,n) �� � �� �� �� �� (0,n) ������ � � � ���� � � � ���� �� �� é-supervisionado é-supervisor Quando um departamento for participar de lotação, terá, no mínimo, cinco empregados (1,1) (0,n) (1,1) (0,n) matr nome dt_nasc dt_lotação dt_nasc idade Cod_venc descrição valor nome ��� � � (0,1) (0,1) 65���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � � � � � � , � ��������� n ��������� �� ������� 1 n �� � �� �� �� �� n ������ � � � ���� � � � ���� �� �� é-supervisionado é-supervisor n 1 n 1 matr nome dt_nasc dt_lotação dt_nasc idade Cod_venc descrição valor nome ��� � � 1 1 66���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especialização �Existem conjuntos de entidades compostos de subgrupos de entidades �Cada subgrupo apresenta propriedades diferentes dos outros subgrupos �Considere o conjuntos de entidades Empregado na modelagem dos dados de um universidade �Podemos identificar os seguintes subconjuntos dentro de Empregado �Professores � Titulação � Universidade de titulação � Regime de trabalho (DE, 40h, 20h) �Escriturários � Grau de instrução � Área de atuação (contador, secretária, etc…) �Engenheiros � Especialidade �Subconjuntos diferenciados por tipo de empregado José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 12 67���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especialização (cont.) �Definição �Processo de identificação de subgrupos de entidades dentro de um conjunto de entidades �Processo de especialização pode ser recursivo �Um único conjunto de entidades pode ser especializado por mais de uma característica de diferenciação (especialização) �No exemplo de Empregado em uma universidade �Especialização por tipo de empregado �Especialização por tipo de contrato � CLT � Serviços prestados �Um entidade deve pertencer às várias especializações �Os subgrupos identificados em um processo de especialização podem participar de relacionamentos que não se aplicam a todas entidades do conjunto de entidades de origem 68���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especialização (cont.) �Notação MER ��������� !��"����� ���� ���#� � � �� �� �� ISA titulação uni_tit regime_tr especialidadeGrau_ins área_atua is a (é um) Empregado is a Professor ou Empregado is a Escriturário ou Empregado is a Engenheiro 69���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especialização (cont.) �Herança de propriedades �Os subgrupos de entidades herdam todas as propriedades do conjunto de entidade de mais alto nível ��������� !��"����� ���� ���#� � � �� �� �� ISA titulação uni_tit regime_tr especialidadeGrau_ins área_atua nome dt_nasc matr 70���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especialização (cont.) �É realizada sobre um único conjunto de entidades �Identificar subgrupos �Ênfase nas diferenças entre entidades de um mesmosubconjunto de entidades �Através dos subgrupos mais especializados � Generalização �Processo de identificação de conjuntos de entidades que possuem características em comum �Mesmos atributos e participam de mesmos relacionamentos �Formação de um único conjunto de entidades de mais alto nível �É realizada sobre vários conjuntos de entidades �Identificar um conjunto de entidades de mais alto nível 71���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Generalização (cont.) �Ênfase nas similaridades entre diversos conjuntos de entidades �Redução de redundância de representação �Atributos compartilhados só serão representados no conjunto de entidades de nível mais alto �Não serão repetidos �Na prática �Generalização é o processo inverso da especialização �Duas estratégias que devem ser utilizadas �Especializar onde for necessário �Generalizar onde for possível 72���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especificação de restrições de generalização e especialização �Sejam E1, E2, …, En conjuntos de entidades de nível mais baixo que o conjunto de entidades E �Disjunção �∀ 0<i,j≤n, i≠j : Ei ∩ Ej = ∅ �Nenhuma entidade de E pode pertencer a mais de um subgrupo � E1 E2 En ISA ... ... José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 13 73���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Especificação de restrições de generalização e especialização �Completeza �Especifica se uma entidade de E tem que pertencer obrigatoriamente a um dos conjuntos de entidades de mais baixo nível ou não �Total � E=∪ Ei �Parcial �E ⊇ ∪ Ei n i=1 n i=1 74���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Agregação �Abstração que representa relacionamentos como entidades �Mecanismo utilizado para representar relacionamentos de relacionamentos �Exemplo �Considere a modelagem de dados em um banco BX. Clientes do BX estão relacionados a agência e conta �Estratégia 1 Agência Conta Cliente 1 n n 75���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Agregação (cont.) �Problemas na Estratégia 1 �Não representa a estrutura lógica que deve ser modelada �Relacionamento de cliente com o relacionamento agência-conta �Na prática, para acessar todas as contas de uma agência �Terão que ser acessadas todas triplas (agência,conta,cliente) �Uma conta pode pertencer a vários clientes � Vários acessos redundantes 76���� �������� ���� �� �� � ����������� � ��� ��� �� ��������� ��� � ������ � - � � ��� � � � � � . � � � � � � Agregação (cont.) �Utilizar o mecanismo de agregação n $� � � %� � �� %� �� n 1 n saldonum_contacod_ag nome gerenteender cod_cliente nome data-nasc ender CPF data_abertura 77���� �������� ���� �� �� � ����������� � ��� � � � Introdução aos Sistemas de Banco de Dados � Modelo de Entidades e Relacionamentos � Bancos de Dados Relacionais �O Modelo Relacional �Modelagem de Dados �Álgebra Relacional �Linguagem de Manipulação e Consulta � Projeto de Bancos de Dados Relacionais � Projeto Lógico de Bancos de Dados � 78���� �������� ���� �� �� � ����������� � ��� � � � Introdução aos Sistemas de Banco de Dados � Projeto de Bancos de Dados Relacionais � Bancos de Dados Relacionais �O Modelo Relacional �Modelagem de Dados �Álgebra Relacional �Linguagem de Manipulação e Consulta � Projeto Lógico de Bancos de Dados � José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 14 79���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � �� �� � � � � � � Proposto em 1970 por Codd �IBM � Consolidou-se como principal modelo de dados para aplicações comerciais � Modelo de dados para Bancos de Dados Relacionais � SBDs relacionais �DB2 (IBM) �Informix �ADABAS �Sybase �Oracle �SQL Server (Microsoft) 80���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � ��� �� � � � � � ! � � � � � � � , � * � � � * � � Um banco de dados relacional consiste �Um conjunto de tabelas �Relações � Tabelas �Conjunto de linhas �Tuplas � Linhas �Conjunto de colunas �Nome das colunas �Atributos ���� �� � �������������� � ����������������������������������������� ������������� � ����� �! "�# $ ������������� $ $ $ $ $ � � � ������������% # ����� �& "�� ������������� ' ' ' $ $ � ������������% ( � ����� �) "�# $ � ���������� ' ' ' $ # $ � � ������������# % ' ����� �* "�# $ ���������� ' ' + $ , $ �������������������������������������% , # ����� �- "�# $ ����������� $ $ $ $ � $ � Estudante 81���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Domínio �Conjunto de valores permitidos para um atributo �Valores são atômicos �Indivisíveis �Exemplo: Domínio do atributo matrícula � Conjunto de todos os valores válidos de matrícula �dom(A) denota o domínio do atributo A �Tipo de dados e formato �Utilizados para especificar um domínio �Exemplo: telefone � tipo char com formato (ddd)ddd-dddd � dom(telefone) representa o conjunto de valores atômicos válidos para o tipo char e formato especificado � O atributo Ai é um papel de D no esquema de R � Grau de R = número de Ai 82���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Esquema de relação �Utilizado para descrever uma relação �Representado por R(A1, A2, …, An), onde �R é nome de uma relação e �A1, A2, …, An uma lista de atributos 83���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Instância de Relação �Seja o esquema de relação R(A1, A2, …, An) �Um instância de relação (ou relação) para este esquema �r(R)={t1, t2, …, tk} �Cada ti representa uma n-tupla de n valores <v1, v2, …, vn>, onde cada vj ∈ dom(Aj), 0<j≤n �r representa a extensão para R �r contém os dados �R descreve os dados armazenados em r � Relação �Seja r uma relação com esquema R �r(R) ⊆ dom(A1) x dom(A2) x dom(A3) x … x dom(An) �r(R) é um subconjunto do produto cartesiano dos domínios dos atributos que definem R �cada tupla de r(R) relaciona valores dos vários domínios �r é uma relação (matemática) �r(R) representa um conjunto de tuplas 84���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Esquema de um banco de dados relacional �Conjunto de esquemas de relação mais um conjunto de restrições de integridade IC �S={R1, R2, …, Rn} e um conjunto de restrições de integridade IC � Instância de um banco de dados relacional �Seja o esquema S �Uma instância DB para o esquema S �DB={r1, r2, …, rn} , onde �Cada ri é uma instância de relação de Ri e �Cada ri satisfaz as restrições de integridade especificadas em IC � Exercício �Considere uma banco de dados relacional DBR com as relações Empregado e Departamento �Construa um esquema S e mostre uma possível instância para DBR José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 15 85���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Restrições do modelo relacional �Restrição de domínio �O valor de cada atributo A �Tem que ser um valor atômico de dom(A) �Restrição de Chave �Uma relação é definida como um conjunto de tuplas �Elementos de um conjunto são distintos entre si �Tuplas de uma relação têm que serem distintas entre si �Duas tuplas em uma relação não podem ter a mesma combinação de valores para seus atributos �Geralmente existe um subconjunto SC de atributos em um esquema de relação R �Todas as tuplas de qualquer instância r(R) apresentam uma combinação diferente de valores para os atributos de SC � ∀ ti, tj ∈ r 0<i,j≤n, i≠j : ti[SC]≠ tj[SC] �Super chave (superkey) 86���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Restrições do modelo relacional (cont.) �Restrição de Chave (cont.) �Super chave pode apresentar atributos redundantes �Empregado(matr,nome,ender,cpf) � matr e cpf são atributos da super chave � Apenas matr ou apenas cpf - condição necessária e suficiente para garantir a não existência de tuplas repetidas �Chave (key) �Super chave sem atributos redundantes �Para Empregado existem duas possíveis chaves � matr ou cpf �Chave candidata (candidate key) �Atributos da super chave que podem funcionar como chave da relação �Chave primária (primary key) �Chave candidata escolhida como chave da relação �Identifica tuplas em uma relação � Garante a unicidade de uma tupla na relação 87���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Restrições do modelo relacional (cont.) �Restrição de Integridade de Entidade �Especifica que nenhuma chave primária pode ter valor nulo (null) �Garante que a chave primária identifique tuplas em uma relação �Restrição de Integridade Referencial �Sejam dois esquemas de relação R e S �Um conjunto de atributos FK de um esquema de relação R é chave estrangeira (foreign key) em R se �Os atributos em FK têm o mesmo domínio que a chave primária PK de um outro esquema de relação S, e �Um valor de FK em uma tupla t1 de r(R) � Ou ocorre em como valor de PK para uma tupla t2 em s(S) t1[FK] = t2[PK] � ou é nulo Os atri buto s FK refe ren ciam S �& ��"��� � �����������' 88���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Restrições do modelo relacional (cont.) �Restrição de Integridade Referencial (cont.) �Exemplo: Considere o seguinte esquema de banco de dados Departamento(cod_depart, nome, ender) Empregado(matr, nome, ender, cpf, lotação) �Se lotação referenciar cod_depart, então lotação é chave estrangeira em Empregado �Deve ser garantido que o valor de lotação ou seja nulo ou referencie um valor existente em Departamento � Integridade referencial � Atualmente é garantida automaticamente pelos SGBD existente no mercado 89���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � � � � �� � ! ( � �� � � � Restrições do modelo relacional (cont.) �Restrição de Integridade Referencial (cont.) �Exemplo: Considere o seguinte esquema de banco de dados Departamento(cod_depart, nome, ender) Empregado(matr, nome, ender, cpf, lotação) Create table Departamento (cod_depart integer not null, nome varchar(30) not null, ender varchar(30), primary key (cod_depart)) Create table Empregado (matr integer not null, nome varchar(30) not null, ender varchar(30), cpf integer not null, lotação integer not null, primary key (matr), unique key (cpf), foreign key (lotação) references Departamento on delete cascade) 90���� �������� ���� �� �� � ����������� �Insere t em r(R) �Lista de valores �Pode violar: �Restrição de domínio �Restrição de chave �Integridade existencial �Integridade referencial �Tratamento �Rejeitar a inclusão �Solicitar novas informações Inclusão ���� ��� �� ��� � ��� � � � � � � + � � � � � �� *�/ � � � José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 16 91���� �������� ���� �� �� � ����������� �Exclui t em r(R) �Condição sobre valores de atributos �Pode violar: �Integridade referencial �Tratamento �Rejeitar a exclusão �Propagação em cascata �Mudar fk em R’ que referencia R Exclusão ���� ��� �� ��� � ��� � � � � � � + � � � � � �� *�/ � � � 92���� �������� ���� �� �� � ����������� �Modifica t[A1,A2,...,Ak] em r(R) �Condição sobre valores de atributos �Alguns SGBDs: update=delete+insert �Violação + tratamento: �Depende do atributo modificado �Domínio para qualquer atributo �PK = exclusão + inclusão �FK = verificar integridade referencial Modificação ���� ��� �� ��� � ��� � � � � � � + � � � � � �� *�/ � � � 93���� �������� ���� �� �� � ����������� � O resultado de uma operação �op(r’) → r’’ � Grupos de operações �Operações relacionais �Seleção; projeção; junção �Operações de conjunto �União; interseção; diferença; produto cartesiano �Operações especiais Coleção de operações usadas para manipular relações ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * � 94���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * � � Linguagem de consulta para bancos de dados relacionais ������� Consulta ������� � Coleção de operadores sobre relações � Desenvolvida por Codd � Linguagem procedimental � Operações básicas �Seleção (σ) �Projeção (Π) �União (∪) �Diferença (-) �Produto cartesiano (x) Operações unárias Operações binárias 95���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de seleção �Seleciona um subconjunto de tuplas de uma relação �Com base em um predicado �Notação �σP (r) �r é uma relação e �P representa um predicado (condição de seleção) �Predicados são construídos através de átomos �Átomos � t[Ai] θθθθ t[Ak] , t ∈ r e Ai e Ak são atributos de r. � t[Ai] θθθθ k, onde k é uma constante � O símbolo θθθθ denota um operador de comparação =, ≠≠≠≠, >, ≥≥≥≥, <, ≤≤≤≤ �Átomos podem ser conectados por ∧∧∧∧ (and), ∨∨∨∨ (or), ¬¬¬¬ (not) �Regras para construção de fórmulas �Todo átomo é uma fórmula �Se P1 e P2 são fórmulas � P1 ∧∧∧∧ P2, P1∨∨∨∨ P2 e ¬¬¬¬P1 também são fórmulas Os atributos devem possuir domínios iguais 96���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de seleção (cont.) �Exemplo �Considere a relação Empregado �Empregado(matr, nome, ender, cpf, salário, lotação) �Listar todos os empregados que ganham salário maior que 5000 � σsalário>5000 (Empregado) �Listar todos os empregados do departamento com código igual a 002 e que ganham salários maior que 5000 �Listar todos os empregados não lotados no departamento com código igual a 002 e que ganham salários entre 5000 e 10000 José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 17 97���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de seleção (cont.) �Propriedade da seleção �σθ1∧θ2(r) ⇔ σθ1(σθ2(r)) �σθ1(σθ2(r)) ⇔ σθ2(σθ1(r)) �Comutatividade da operação de seleção 98���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de Projeção �Seleciona um subconjunto de atributos de uma relação �Notação �ΠAi1, Ai2,…, Ain (r) �r é uma relação com esquema R(A1, A2, …, An) �{Ai1, Ai2, …, Ain} ⊆ {A1, A2, …, An} �Projeção de R sobre os atributos Ai1, Ai2, …, Ain �Exemplo �Listar o nome e salário de todos os funcionários �Πnome, salário (Empregado) �Listar nome e salário de todos os empregado que ganham salário maior que 9000 Projeção ����Filtro de atributos Seleção ���� Filtro de tuplas 99���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de União �Executa a união de duas relações compatíveis �Duas relações com esquemas R(A1, A2, …, An) e S(B1, B2, …, Bn) são compatíveis �Apresentam o mesmo número de atributos �dom(Ai)= dom(Bi), 0<i≤n �Notação �r ∪ s �Exemplo �Considere as seguintes relações �Empregado(matr, nome, ender, dt-nasc, cpf, salário, lotação) �Dependente(nome-dep, data-nasc, matr-resp) �Liste o nome e data de nascimento de todos os funcionários e dependentes existentes na empresa �Πnome, dt-nasc (Empregado) ∪ Πnome-dep, data-nasc (Dependente) 100���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * �� � * 1� � � � � + � � ! ( � �� � 2 � � Operação de Diferença �O resultado da operação r - s é uma relação que contém todas as tuplas de r que não pertencem a s �r e s são relações compatíveis �Exemplo �Considerando que na empresa só existam as relações Empregado e Dependente que referem-se a pessoas, execute a seguinte consulta. Listar nomes de empregados, desde que não existam dependentes com mesmo nome �Πnome (Empregado) - Πnome-dep (Dependente) 101���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de Produto Cartesiano �Sejam r e s relações com esquemas R(A1, A2, …, An) e S(B1, B2, …, Bm), respectivamente �Resultado da operação r x s é uma relação �T(r.A1, r.A2, …, r.An, s.B1, s.B2, …, s.Bm) �com n+m atributos �cada tupla de T é uma combinação entre uma tupla de r e uma tupla de s �t∈T ⇔ ∃v ∈ r e ∃u ∈ s, tal que t[Ai]=v[Ai], 0<i≤n, e t[Bj]=u[Bj], 0<j≤m �Se a cardinalidade de r é nr tuplas e a cardinalidade s é ns tuplas �A cardinalidade de T é nr∗ ns 102���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � ! ( � �� � 2 � � Operação de Produto Cartesiano (cont.) �Exemplo �Sejam r e s mostradas abaixo. Calcule r x s A B a1 b1 a1 b2 a2 b1 A B C a1 b1 c1 a2 b3 c3 a2 b1 c4 r.A r.B s.A s.B s.C a1 b1 a1 b1 c1 a1 b1 a2 b3 c3 a1 b1 a2 b1 c4 a1 b2 a1 b1 c1 a1 b2 a2 b3 c3 a1 b2 a2 b1 c4 a2 b1 a1 b1 c1 a2 b1 a2 b3 c3 a2 b1 a2 b1 c4 r s r x s José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 18 103���� �������� ���� �� �� � ����������� �r condição s = σcondição (r x s) �condição de junção é da forma �r.Ag θ s.Bi ∧ r.Ah θ s.Bk ∧...∧ r.Am θ s.BL � Para cada r.Ai θ s.Bj, dom(r.Ai) = dom(s.BJ) e θ∈{=, ≠≠≠≠, >, ≥≥≥≥, <, ≤≤≤≤} ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de junção theta (theta-join) �Sejam r e s relações com esquemas R(A1, A2, …, An) e S(B1, B2, …, Bm), respectivamente �O resultado da operação junção theta entre r e s é uma relação T(r.A1, r.A2, …, r.An, s.B1, s.B2, …, s.Bm) definida por �cada tupla de T é uma combinação entre uma tupla de r e uma tupla de s, sempre que a combinação satisfaça condição de junção 104���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de junção theta (cont.) �Exemplo �Sejam r e s mostradas abaixo. Calcule T= r s A B a1 b1 a1 b2 a2 b1 A B C a1 b1 c1 a2 b3 c3 a2 b1 c4 r.A r.B s.A s.B s.C a1 b1 a2 b3 c3 a1 b2 a1 b1 c1 a1 b2 a2 b3 c3 a1 b2 a2 b1 c4 a2 b1 a2 b3 c3 r s T r.B ≠≠≠≠ s.B 105���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de Junção de Igualdade (Equijoin) �Operação de junção theta, cujo operador de comparação é a igualdade (=) �Sejam r e s relações com esquemas R(A1, A2, …, An) e S(B1, B2, …, Bm), respectivamente �O resultado da operação junção de igualdade entre r e s é uma relação T(r.A1, r.A2, …, r.An, s.B1, s.B2, …, s.Bm)definida por �r condição s = σcondição (r x s) �condição de junção é da forma �r.Ag = s.Bi ∧ r.Ah = s.Bk ∧ … ∧ r.Am = s.BL � Para cada r.Ai=s.BJ, dom(r.Ai) = dom(s.BJ) 106���� �������� ���� �� �� � ����������� � Operação de Junção de Igualdade (cont.) �Exemplo �Considere as relações Departamento (d) e Empregado (e) mostradas abaixo. Calcule a seguinte junção de igualdade Departamento Empregado ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � ����� � ���������������������� �������. ������ ������������������� ��� �� ������ ��! " $ �������� � ����������������� ��/ ���� ��� ��& "# ��������� ���������������������� ��� ������ ��* ��� ��������% $ Departamento � ��� �����0 �������������� � �������� ��� � � ����� ��� � ������������� � 1 ���������� � �������+ $ $ $ ����������� � �����������- ��� 2 ��������% # ��������' $ $ $ ����������� �������������� �������������% ( � ��������$ $ $ ������������ �# �����������3 � � ���������# % ' ��������# $ $ ������������� �( ������������ �1 � �������% , # ���������% $ $ ������������ % $ �����������4 �� �����������# # # ���������+ $ $ ����������� # ( �����������& � ���������+ $ $ ���������% $ $ ����������� Empregado d.cod-dep=e.lotação 107���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de Junção de Igualdade (cont.) �Exemplo Para cada empregado, listar seu nome e o nome do departamento onde está lotado. ������ ����� ���������� � �������� ��� � � ����� ��� � � �����������- ��� 2 ����������% # �������' $ $ $ ����������� % $ ������������4 �� ������������# # # ��������+ $ $ ������������ # ( ������������& � ����������+ $ $ �������% $ $ ������������� ������������� � 1 ����������� � �������+ $ $ $ ������������� ��������������� ��������������% ( � ��������$ $ $ ������������� �# ������������3 � � # % ' ��������# $ $ ������������� �( ������������� �1 � ���������% , # ���������% $ $ ������������ �� ����� ��� ����������������� �� ���. ������ ������������������� ��� �� ������ ��! " $ �������� ������������������� ��� �� ������ ��! " $ �������� ������������������� ��� �� ������ ��! " $ �������� � ����������������� ��/ ���� ��� ��& "# ��������� � ����������������� ��/ ���� ��� ��& "# ��������� � ����������������� ��/ ���� ��� ��& "# ��������� ���������������������� ��� ������ ��* ��� ��������% $ Departamento Empregado d.cod-dep=e.lotação Πe.nome,d.nome (Departamento Empregado) d.cod-dep=e.lotação 108���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de Junção Natural (Natural Join) �Operação de junção de igualdade �Todos os com o mesmo nome nas duas relações �Participam obrigatoriamente da condição de junção � Envolvidos no operador de comparação (=) �Aparecem só uma vez na relação resultado �Sejam r e s relações com esquemas �R(A1, A2, …, An, B1, B2, …, Bi) e S(B1, B2, …, Bi, C1, C2, …, Cm), respectivamente �O resultado da operação junção natural entre r e s é uma relação T(r.A1, r.A2, …, r.An,B1, B2, …, Bi,s.C1, s.C2, …,s.Cm) definida por �r condição s = σcondição (r x s) �condição de junção é da forma �r.B1 = s.B1 ∧ r.B2 = s.B2 ∧ … ∧ r.Bi = s.Bi �Notação �r s José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 19 109���� �������� ���� �� �� � ����������� � Operação de Junção Natural (cont.) �Exemplo �Considere as relações Departamento (d) e Empregado (e) mostradas abaixo. Calcule a seguinte junção de igualdade Departamento Empregado ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � ����� � ���������������������� �������. ������ ������������������� ��� �� ������ ��! " $ �������� � ����������������� ��/ ���� ��� ��& "# ��������� ���������������������� ��� ������ ��* ��� ��������% $ Departamento � ��� �����0 �������������� � �������� ��� � � ���� ����� ������������� � 1 ���������� � �������+ $ $ $ ����������� � �����������- ��� 2 ��������% # ��������' $ $ $ ����������� �������������� �������������% ( � ��������$ $ $ ������������ �# �����������3 � � ���������# % ' ��������# $ $ ������������� �( ������������ �1 � �������% , # ���������% $ $ ������������ % $ �����������4 �� �����������# # # ���������+ $ $ ����������� # ( �����������& � ���������+ $ $ ���������% $ $ ����������� Empregado 110���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de Junçãode Igualdade (cont.) �Exemplo ������ ����� ���������� � �������� ��� � � � �����������- ��� 2 ����������% # �������' $ $ $ % $ ������������4 �� ������������# # # ��������+ $ $ # ( ������������& � ����������+ $ $ �������% $ $ ������������� � 1 ����������� � �������+ $ $ $ ��������������� ��������������% ( � ��������$ $ $ �# ������������3 � � # % ' ��������# $ $ �( ������������� �1 � ���������% , # ���������% $ $ �� ����� ��� ����������������� �� ���. ������ ������������������� ��� �� ������ ��! " $ �������� ������������������� ��� �� ������ ��! " $ �������� ������������������� ��� �� ������ ��! " $ �������� � ����������������� ��/ ���� ��� ��& "# ��������� � ����������������� ��/ ���� ��� ��& "# ��������� � ����������������� ��/ ���� ��� ��& "# ��������� ���������������������� ��� ������ ��* ��� ��������% $ Departamento Empregado 111���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de Semi-Junção (Semi-join) �Definida por r s = ΠR (r s)θθθθθθθθ � Operação de Interseção �O resultado da operação r ∩ s é uma relação que contém todas as tuplas de r e que pertencem a s �r e s são relações compatíveis �O resultado de r ∩ s é definido por �r ∩ s= r - (r-s) �θ representa uma condição de junção qualquer 112���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de divisão �Sejam r e s relações com esquemas R(A1, A2, …, An, B1, B2, …, Bm) e S(B1, B2, …, Bm), respectivamente �Resultado da operação r ÷ s �É uma relação T(A1, A2, …, An), onde, para uma tupla v pertencer a T, todos os valores de v precisam aparecer em R em associação com toda tupla de S �Exemplo 1 A B C a1 b1 c1 a1 b3 c1 a1 b3 c2 a1 b3 c3 a2 b2 c3 r C c1 c2 c3 s A B a1 b3 r ÷ s 113���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de divisão (cont.) �Exemplo 2 A B C a1 b1 c1 a1 b3 c1 a2 b3 c1 a2 b3 c2 a2 b1 c1 a2 b1 c2 r C c1 c2 s A B a2 b3 a2 b1 r ÷ s �Exemplo 3 �Considere a relação r do exemplo 2 e a relação s abaixo. Calcule r ÷ s B C b3 c1 s A a1 a2 r ÷ s 114���� �������� ���� �� �� � ����������� � Operação de divisão (cont.) �Sejam r e s relações com esquemas R(A1, A2, …, An, B1, B2, …, Bm) e S(B1, B2, …, Bm), respectivamente �R-S=T(A1, A2, …, An) �Resultado da operação da divisão de s por r é definido por �r ÷ s = ΠR-S(r) - ΠR-S( (ΠR-S(r) x s) - ΠR-S,S(r) ) ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � ����� �� ����� ��������������� (�� �����������������������ΠΠΠΠ�)�*�+����,�����-��� �������������.�!���� ��,� ��������� �������������������������������#,���������������� � ����,���� ����� ����,�����-��� ������#������ ����������������������.� ���� �/��� �"����������� ��0�� �������������� � � ������� Atributos de r podem aparecer em qualquer ordem José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 20 115���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � � � � + � � � � ��. � � 2 � � Operação de divisão (cont.) �Exemplo �Considere as tabelas Emp-Desc(matr,cod-desc) e Desconto(cod-desc,valor,descrição), onde �A tabela Emp-Desc relaciona os empregados com os diversos descontos que é obrigado a pagar matr Cod-desc 11 2 11 3 15 1 15 2 15 3 17 2 Emp-Desc Exercício: Utilizando a definição de divisão, mostrar passo a passo como é encontrado os empregados que têm descontados de seu salário todos os tipos de descontos possíveis Cod-desc Valor descrição 1 10 IR 2 8 INSS 3 5 seguro Desconto 116���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Operações sobre bancos de dados relacional �Não pertencentes ao conjunto de operações da álgebra relacional convencional � Operação de Atribuição (assignment) �Às vezes, é importante escrever uma expressão da álgebra relacional em diferentes partes �Atribuir resultados das partes a relações temporárias �Notação �:= �←←←← �Exemplo �rel1← ΠR-S((ΠR-S(r) x s) - ΠR-S,S(r)) �rel2←ΠR-S(r) �resultado= rel1 - rel2 117���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Funções Agregadas � Funções aplicadas sobre uma coleção de valores do banco de dados � sum �Retorna o somatório dos valores de uma coleção � avg �Retorna a média dos valores de uma coleção �max �Retorna o maior valor de uma coleção de valores �min �Retorna o menor valor de uma coleção � count �Retorna o número de elementos de uma coleção � distinct �Algumas vezes, torna-se necessário eliminar repetições para o cálculo das funções agregadas �Concatena-se a palavra distinct após o nome da função 118���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Funções Agregadas (cont.) �Exemplos �Considere a relação �Empregado(matr, nome, ender, salário, cpf, lotação) � matr é a chave primária de Empregado �Encontre o número de empregados lotados no departamento 001 �count(Πmatr(σlotação=001 (Empregado))) �Encontre o maior salário da empresa �max(Πsalário(Empregado)) �Encontre o salário médio da empresa �avg-distinct(Πsalário(Empregado)) �Encontre a quantidade de salários distintos no departamento 001 �count-distinct(Πsalário(σlotação=001 (Empregado))) �Encontre o primeiro e segundo maiores salários da empresa 119���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Operação de Junção Externa (outer-join) �Considere as seguintes relações �Vendedor(matr, nome, ender, salário, cpf, lotação) �Vendas(matr-vend,cod-item,quantidade, pr-venda) �Considere a seguinte consulta �Listar o histórico de vendas de cada vendedor �Esquema do resultado � Res(matr,nome,cod-item,quantidade,pr-venda) �ΠRes(Vendedor Vendas) �Consulta com perda de informação �Não aparecerão no resultado � Vendedores que não efetuaram vendas �Definir uma operação que evite esta perda de informação �Outer join � Adcionar tuplas extras ao resultado de uma junção natural 120���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Operação de outer-join (cont.) �Tipos �Junção externa à esquerda (left outer join) �Junção externa à direita (right outer join) �Junção externa completa (full outer join) �left outer join �Notação �A B �Calcula o resultado da junção de A com B �Adiciona ao resultado da junção � Tuplas da relação à esquerda (A) que não satisfazem a condição de junção � Atribui valores nulos aos atributos não definidos para estas tuplas José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 21 121���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Operação de outer-join (cont.) �left outer join (cont.) �Considere as seguintes relações �Vendedor(matr, nome, salário) �Vendas(matr,cod-item,qtde, pr-venda) �Listar o histórico de vendas de cada vendedor matr nome salário 11 Bárbara 5000 14 André 7000 15 Sofia 3000 17 Caio 500 19 Lucas 700 21 Camila 900 Vendedor matr cod-item qtde pr-venda 11 72727 160 2.00 11 545 50 15.50 14 545 87 15.50 21 13 10 8.75 Vendas 122���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Operação de outer-join (cont.) �left outer join (cont.) �Listar o histórico de vendas de cada vendedor �Vendedor Vendas matr nome salário cod-item qtde pr-venda 11 Bárbara 5000 72727 160 2.00 11 Bárbara 5000 545 50 15.50 14 André 7000 545 87 15.5015 Sofia 3000 Null Null Null 17 Caio 500 Null Null Null 19 Lucas 700 Null Null Null 21 Camila 900 13 10 8.75 123���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � 0 * � � � , � * � � � * 1� � �� � � � � � � + � � 2 � � Operação de outer-join (cont.) �right outer join �Notação �A B �Calcula o resultado da junção de A com B �Adiciona ao resultado da junção � Tuplas da relação à direita (B) que não satisfazem a condição de junção � Atribui valores nulos aos atributos não definidos para estas tuplas �full outer join �Notação �A B �Calcula o resultado da junção de A com B �Adiciona ao resultado da junção � Tuplas das relações A e B que não satisfazem a condição de junção � Atribui valores nulos aos atributos não definidos para estas tuplas 124���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � � Desenvolvido por Codd � Notação para definir a informação desejada através das propriedades de uma consulta � Não há a especificação de um procedimento para a obtenção da informação � Linguagem não procedimental � Notação � t ∈ r � a tupla t pertence à relação r � t[A] � valor da tupla t sobre o atributo A � Consulta em Cálculo Relacional � {t | P(t)} �O conjunto de todas tuplas t, tal que o predicado (fórmula) P é verdade para t 125���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � � Fórmulas são construídas através de átomos � Átomos �t ∈ r, onde t é variável do tipo tupla e r uma relação (não é permitida a utilização do operador ∉) �s[Ai] θ t [Bk], s e t são variáveis do tipo tupla. Ai e Bk representam atributos sobre os quais s e t estão definidas respectivamente. �O símbolo θ denota um operador de comparação ( �=, ≠≠≠≠, >, ≥≥≥≥, <, ≤≤≤≤ Os atributos devem possuir domínios cujos elementos possam ser comparados por θ �s[Ai] θ K ,onde K é uma constante 126���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � � Átomos podem ser conectados pelos operadores lógicos ∧∧∧∧ (and), ∨∨∨∨(or), ¬¬¬¬ (not) � Regras para construção de fórmulas � Todo átomo é uma fórmula �Se P1 e P2 são fórmulas, então P1 ∧∧∧∧ P2, P1∨∨∨∨ P2, ¬¬¬¬P1, ¬¬¬¬P2 e P1 ����P2também são fórmulas �P1 ����P2 (P1 implica P2) �Se P1 é verdade então P2 necessariamente é �Equivalente � ¬¬¬¬P1 ∨∨∨∨ P2 �Se P é uma fórmula e r uma relação, então (∃t∈r) (P(t)) é uma fórmula � Quantificador existencial �Se P é uma fórmula e r uma relação, então (∀t∈r) (P(t)) é uma fórmula �Quantificador universal Existe pelo menos uma tupla de r para a qual P(t) é verdade P(t) é verdade para todas as tuplas de r José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 22 127���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � �Exemplos Considere as seguintes relações Departamento(cod_depart, nome, ender) Empregado(matr, nome, ender, cpf, lotação) Consulta C1: Nome e salário dos empregados que ganham mais que 5000 C1: {e[nome],e[salário] | e ∈ Empregado ∧∧∧∧ e[salário]>5000 } Consulta na Álgebra Relacional: Πnome, salário (σsalário>5000 (Empregado)) 128���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � Consulta C2: Nome e salário dos empregados que trabalham no departamento ‘Informática’ C2: {e[nome],e[salário] | e ∈ Empregado ∧∧∧∧ ((∃d)(d ∈ Departamento ∧∧∧∧ d[nome]=´DC´ ∧∧∧∧ d[cod_dep]=e[lotacao]))} Consulta C3: Nome dos empregados que não possuem dependentes C3: {e[nome] | e ∈ Empregado ∧∧∧∧ ((∀ p) (¬¬¬¬((p ∈ Dependente) ∧∧∧∧(e.matr=p.matr)))} 129���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � � Expressões seguras Ck: {e | ¬¬¬¬(e ∈ Empregado)} �Retorna um conjunto infinito de tuplas � Domínio de uma expressão �Valores que aparecem como constantes ou que existem em alguma tupla referenciada (mencionada) na expressão �Dom(e ∈ Empregado ∧∧∧∧ e[salário]>5000) 5000 mais todos os valores de tuplas pertencentes a Empregado �A expressão é segura se os valores que aparecem no seu resultado pertencem ao domínio da expressão 130���� �������� ���� �� �� � ����������� ���� ��� �� ��� � ��� � � ( *� � * , � * � � � * � �Exemplo Dom(¬¬¬¬ (e ∈ Empregado)) � Valores de tuplas pertencentes a Empregado {e | ¬¬¬¬(e ∈ Empregado)} � Tem como resultado tuplas que não pertencem a Empregado � (¬¬¬¬(e ∈ Empregado)) não é segura � Padrão para expressividade relacional (completeza relacional) �Uma forma de representação é relacionalmente completa se permite a definição de qualquer resultado de consulta definida por uma expressão de cálculo relacional � Emprego no processo de otimização � P1 ∧∧∧∧ (P1∨∨∨∨ P2) ⇔ P1 131���� �������� ���� �� �� � ����������� % ��5 � 6�� ������� ������� � 3 � � � � Análise de Requisitos Projeto Conceitual Projeto Lógico (mapeamento de modelo de dados) Projeto Físico Requisitos de dados Esquema Conceitual (MER) Esquema Conceitual representado no modelo de dados do SGBD Mini-mundo (mundo real) Análise Funcional Projeto (Software) Implementação Independente do SGBD Específico para cada SGBD Implementação Estruturas de armazenamento e caminhos de acesso (índices) Expressões DDL e carga do BD 132���� �������� ���� �� �� � ����������� % ��5 � 6�� ������� ������� � 3 � � � � � Análise (especificação) de requisitos �Projetista de banco de dados deve realizar entrevista com usuários prospectivos do banco de dados �Entender e documentar �Requisitos de dados � Projeto conceitual �Com base nos requisitos de dados �Criar um esquema conceitual para o banco de dados �Modelo de dados conceitual � MER � Construir um DER � Projeto lógico �Com base no DER definido na fase anterior �Criar um diagrama relacional �Representação gráfica de um esquema relacional José Maria Monteiro 9/8/2005 Fundamentos de Bancos de Dados 23 133���� �������� ���� �� �� � ����������� % ��5 � 6�� ������� ������� � 3 � � � � � Projeto Físico �Definir estruturas de armazenamento �Como e onde devem ser armazenadas as tabelas �Uma tabela em um arquivo �Várias tabelas em um único arquivo �Definir caminhos de acesso �Definir índices �Definir tipo de índice �Ordenado � Primário � Secundário �Hash �Utilizar critérios de performance �Específico por SGBD � Implementação �Com base no DR definido na fase 3 e as estruturas de armazenamento e caminhos de acesso definidos na fase anterior �Criar o banco de dados �Expressões DDL �Carregar o BD 134���� �������� ���� �� �� � ����������� � Ferramentas CASE �Modelagem ER gráfica �Geração automática de esquema (DDL) � Algoritmo de mapeamento �Sete passos % ��5 � 6�� ������� ������� � ) � � � � � � � ) � , � � � � ! � � � � � � � , � * � � � * � 135���� �������� ���� �� �� � ����������� % ��5 � 6�� ������� ������� � ) � � � � � � � ) � , � � � � ! � � � � � � � , � * � � � * � � Diagrama relacional (DR) �Ferramenta gráfica utilizada para representar um esquema de banco de dados relacional � A partir de um DER, pode-se construir um DR como descrito a seguir �Passo 1 �Para cada conjunto de entidades E, deve ser criada uma tabela como todos os atributos de E �Escolher uma chave candidata para ser a chave primária da tabela �Apenas os componentes atômicos de atributos compostos devem ser incluídos �Notação de tabela no DR Nome da Tabela 136���� �������� ���� �� �� � ����������� % ��5 � 6�� ������� ������� � ) � � � � � � � ) � , � � � � ! � � � � � � � , � * � � � * � �Passo 2 �Para cada relacionamento binário 1:1 entre os conjuntos de entidades E1 e E2 �Escolher uma das tabelas, por exemplo E2, e incluir como chave estrangeira em E2 a chave primária da outra tabela (E1) � Critério de escolha >> Entidade com participação total no relacionamento �Atributos de relacionamentos
Compartilhar