Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados Modelagem de dados - Modelo Entidade Relacionamentos (MER) Modelagem de dados1 Francisco Antonio de Sousa xsousa@yahoo.com.br Modelos de Banco de Dados Modelo de (Banco de) Dados : descrição das informações que estão armazenadas em um banco de dados. 2 Modelo de Dados = descrição formal da estrutura de um banco de dados Modelos de Banco de Dados Modelo Conceitual 4 Modelo Conceitual = modelo de dados abstrato, que descreve a estrutura de um banco de dados de forma independente de um SGBD particular Modelos de Banco de Dados Modelo Conceitual Também conhecido como Modelo Lógico com Base em Objetos; Registra que dados podem aparecer no banco de dados, mas não registra como estes dados estão armazenados a nível de SGBD; Existem vários técnicas de modelagem conceitual: Abordagem Entidade-Relacionamento; e Abordagem orientada a objetos. 5 Modelos de Banco de Dados Diagrama Entidade-Relacionamento (DER) 6 Cliente CidadeMora Endereço Nome Código Código MODELO ENTIDADE – RELACIONAMENTO (MER) Modelo Entidade-Relacionamento Modelo Entidade - Relacionamento = Percepção de que o mundo real é formado por um conjunto de objetos chamados entidades e pelo conjunto dos relacionamentos entre estes objetos. 9 Modelo Entidade-Relacionamento A abordagem ER foi criada em 1976 por Peter Chen; Considerada padrão para modelagem conceitual; Maior capacidade semântica; os aspectos semânticos do modelo se referem a tentativa de representar o significado dos dados; O modelo de dados desta abordagem é o MER, representado graficamente por um DER. 10 Modelo Entidade-Relacionamento O MER é fundamentado em três conceitos básicos: Conjunto de Entidades; Conjunto de Relacionamentos; e Atributos das Entidades. 11 Modelo Entidade-Relacionamento Entidade 12 Entidade = conjunto de objetos da realidade modelada, sobre os quais deseja-se manter informações no banco de dados Modelo Entidade-Relacionamento Entidade Uma entidade pode ser concreta (pessoa, livro), ou pode ser abstrata (empréstimo, viagem de férias ou um conceito); Instância de uma entidade: um objeto da coleção (ocorrência da entidade); Graficamente representada através de um retângulo que contém o nome da entidade. Exemplo: 13 Pessoa Departamento Modelo Entidade-Relacionamento Relacionamento 14 Relacionamento = conjunto de associações entre entidade Relacionamento Mostra a associação entre as instâncias das entidades. Exemplo: saber quais pessoas estão associadas a quais departamentos em uma organização. Representado graficamente através de um losango, ligado por linhas aos retângulos que representam as entidades que participam do relacionamento. Modelo Entidade-Relacionamento15 Modelo Entidade-Relacionamento Relacionamento - Diagrama de Ocorrências 18 Entidade DEPARTAMENTO p3 p2 p4 p5 Entidade PESSOA Relacionamento Atuam p1,d1 p1 p2,d1 p5,d3 d1 d2 d3 Modelo Entidade-Relacionamento Relacionamento - Auto-Relacionamento Papel da Entidade: define que função uma instância da entidade cumpre dentro de uma instância do relacionamento. 19 PESSOA CASAMENTO esposamarido Modelo Entidade- Relacionamento Relacionamento - Auto-Relacionamento 20 p3 p2 p4 p5 p1,p3 p1 p2,p4 marido esposa marido esposa p5,p4 Modelo Entidade- Relacionamento Relacionamento - Cardinalidade 21 Cardinalidade ( mínima, máxima) de entidade em relacionamentos = número (mínimo, máximo) de ocorrências de entidade associadas a uma ocorrência da entidade em questão através do relacionamento Modelo Entidade- Relacionamento Relacionamento - Cardinalidade Máxima 22 DEPARTAMENTO PESSOALotação 1 n PESSOA CASAMENTO esposamarido 1 1 Modelos de Banco de Dados Diagrama Entidade-Relacionamento (DER) 23 Cliente CidadeMora/Tem Endereço Nome Código Código_CID (1,1)(0,N) Código_CID Chave Primaria (PK) – Primary Key Chave Estrangeira (FK) – Foreign Key Modelo Entidade- Relacionamento Relacionamento - Cardinalidade Máxima As cardinalidades máximas expressam quantas instâncias de uma entidade podem estar associadas, via relacionamento, a uma instância de outra entidade. 24 Modelo Entidade- Relacionamento Relacionamento - Cardinalidade Mínima representa o número mínimo de ocorrências de entidade que são associadas a uma ocorrência de uma entidade através de um relacionamento; duas cardinalidades mínimas: 0 e 1. cardinalidade mínima 1 - denominada obrigatória; cardinalidade mínima 0 - denominada opcional. 25 Modelo Entidade- Relacionamento Relacionamento - Cardinalidade Mínima Representada junto à cardinalidade máxima 26 ALUNO CURSOInscrição (0,n) (1,1) Modelo Entidade- Relacionamento Atributo 27 Atributo = dado que é associado a cada ocorrência de uma entidade ou de um relacionamento Modelo Entidade- Relacionamento Atributo Representação gráfica: Na prática, atributos não são representados graficamente. 28 Cliente CidadeMora Endereço Nome Código Código Tipos de Atributos Simples (Não possui características especiais) Compostos (Possui Itens Menores) Multivalorado (Mais de uma informação) * Determinante (Chave Primária) ____ 30 Modelo Entidade-Relacionamento Identificando Entidades Um avião a jato, um cavalo puro-sangue, um livro de ficção, uma garrafa térmica, uma chave da porta de entrada, o lápis preto, sua borracha usada, os computadores da rede, o disquete, um quadro- negro, sua máquina de escrever. O cachorro dobermann do vizinho, a mesa de trabalho, o telefone sobre a mesa, a mala que transporta seus pertences, as camisas da mala, os dois vidros de compota da cozinha, uma carteira de dinheiro, sua agenda de compromissos, os elefantes do circo, seu automóvel novo, etc.. 31 Modelo Entidade-Relacionamento32 CONJUNTO (ENTIDADE) OBJETOS QUE PERTENCEM AO CONJUNTO Meios de Transporte O avião, o automóvel Animais O cavalo, os elefantes, o cachorro Utensílios Domésticos A garrafa, a mesa, o telefone, os vidros de compota Utensílios Escolares O livro, o lápis, a borracha, o quadro, o disquete Equipamentos Os computadores, a máquina de escrever Pertences Pessoais A chave, a mala, as camisas, a carteira, a agenda Com um nível de abstração maior: Modelo Entidade-Relacionamento33 CONJUNTO (ENTIDADE) OBJETOS QUE PERTENCEM AO CONJUNTO Produtos O avião, o automóvel, os computadores, a máquina de escrever Animais O cavalo, os elefantes, o cachorro Utensílios A garrafa, a mesa, o telefone, os vidros de compota, o livro, o lápis, a borracha, o quadro, o disquete, a chave, a mala, as camisas, a carteira, a agenda Com um nível de abstração mais generalista: Modelo Entidade-Relacionamento34 Com um nível de abstração extremamente especializado: CONJUNTO (ENTIDADE) OBJETOS QUE PERTENCEM AO CONJUNTO Aviões Todos os t ipos de avião observados individualmente Automóveis Todos os t ipos de automóveis individualmente Cachorros Todos os t ipos de cachorros observados , independentemente de sua raça Modelo Entidade-Relacionamento Identificando Entidades 35 MARIA PEDRO ANA MARTA EDUARDOANTONIO Identificando Entidades 36 PESSOAS Modelo Entidade-Relacionamento 37 ⚫ Identificando Entidades SPORTAGE ONIX CIVIC FOCUS STRADA HB20 Modelo Entidade-Relacionamento 38 ⚫ Identificando Entidades AUTOMÓVEIS Modelo Entidade-Relacionamento Relacionamentos - Identificando 39 “Eduardo é proprietário de um HB20” PESSOA AUTOMÓVELPROPRIETÁRIA EDUARDO HB20PROPRIETÁRIO Instância Modelo Entidade-Relacionamento Relacionamentos - Caracterizando Nem toda PESSOA é proprietária de um AUTOMÓVEL Um AUTOMÓVEL pode pertencer a uma PESSOA, ou não Algumas PESSOAS têm mais de um AUTOMÓVEL Se um AUTOMÓVEL pertence a uma PESSOA ele não pertenceráa mais ninguém 40 PESSOA AUTOMÓVELPROPRIETÁRIA (0, (0,n)1) Modelo Entidade-Relacionamento 41 ⚫ Identificando Entidades CASA FLAT CABANA APARTAMENTO RANCHO Modelo Entidade-Relacionamento 42 ⚫ Identificando Entidades IMÓVEIS Modelo Entidade-Relacionamento 43 ⚫ Relacionamentos “Eduardo mora em um Rancho” PESSOA IMÓVEL MORA EDUARDO RANCHO MORA Instância Modelo Entidade-Relacionamento 44 ⚫ Relacionamentos - Caracterizando ⚫ Toda PESSOA utiliza um, e somente um IMÓVEL para morar ⚫ Um IMÓVEL nem sempre será utilizado por uma PESSOAS ⚫ Um IMÓVEL pode ser utilizado por uma ou mais PESSOAS PESSOA IMÓVEL MORA (1,1)n)(0, Modelo Entidade-Relacionamento Relacionamentos 45 “Eduardo possui um HB20 e um Onix e mora em um Rancho com sua família” PESSOA IMÓVEL MORA AUTOMÓVELPROPRIETÁRIA (1,1)(0,n) (0,n) (0,1) Modelo Entidade-Relacionamento Exercícios - DER – Aquecimento (Hands in the Mass) 1. Um aluno realiza vários trabalhos. Um trabalho é realizado por um ou mais alunos. 2. Um diretor dirige no máximo um departamento. Um departamento tem no máximo um diretor. 3. Um autor escreve vários livros. Um livro pode ser escrito por vários autores. 4. Um treinador treina muitas equipes. Uma equipe só pode ser treinada por um treinador. 5. Um cliente realiza várias encomendas. Uma encomenda diz respeito apenas a um cliente. 6. Um entregador de pizza entrega muitas encomendas por dia. Um cliente realiza muitas encomendas. Uma encomenda pode ter vários produtos 7. Um mecânico conserta vários carros. Um carro pode ser consertado por vários mecânicos. 46 Exercícios - RPG RPG é a sigla inglesa de Role-Playing Game, que em português significa "jogo de interpretação de personagens", é um gênero de videogames. Consiste em um tipo de jogo no qual os jogadores desempenham o papel de um personagem fictício. Imaginando que um Jogo teria os jogadores e cada um deles poderia interpretar somente um Personagem. Um personagem pode ser interpretado por somente um jogador. Monte o modelo de dados para atender a situação acima. 47 Exercício – Shopping Azul Zeca o “camelô” e não o “camelo”. possui um estabelecimento comercial alternativo no Shopping Azul. Zeca´s Shopping é uma loja especializada na venda de produtos importados trazidos diretamente da fronteira para o cliente. Ocasionalmente ocorre indisponibilidade de alguns produtos por conta de algumas apreensões da PF,e caso os Zeca´s Clients procure um item indisponível, ele pode encomendar pagando antecipadamente e retirando quando o “baguio” chegar. Faça a modelagem de dados que atenda a empresa (idônea) acima. 48 Faça a Modelagem de dados com: Entidades, chaves primarias e estrangeiras e relacionamentos. Criar o Banco, as tabelas e carregar os dados Dona Maria, possui uma loja de venda de bolos, doces, quitutes e guloseimas. Para fabricar seus produtos dona maria usa os ingredientes (em um bolo utiliza- se vários ingredientes com quantidades diferentes). DM possui um site onde seus clientes fazem as suas encomendas, e pagam com cartão de credito. Os clientes da DM possuem uma pontuação de acordo com suas compras (R$ 1,00 = 1 ponto). Para a entrega das encomendas DM usa um Motoboy, ou os correios. 49 Exercises – Hard Level Draw an ER diagram (Chen) for the following scenario. Remember to use the extended ER concepts if necessary. Write down all constraints that cannot be modeled in ER in text form. You have to model a soccer database for the European Championship 2012. There are teams that are identified by their country. Each team consists of a number of players having different positions. A team can have 2-3 goalies, 8-9 defence, 8-9 midfield and 4-5 offence players. A player is only allowed to have exactly one position. Each player is identified by its player-pass- id (ppid). Furthermore, for each player its name, birthday, age, several telephone numbers (mobile, home, …), number of games he played for his country, and the club he is currently playing for is stored. In addition, for goalies also the number of shutouts and the total number of goals against them are stored. Each team participates in a game, identified by an id and having a score. A game takes place in a stadium at a specific date. Each stadium is identified by its name, is located in a city and has a certain capacity. Furthermore, it has a number of seats, identified by a block, row-number and seat-number. Of course, the capacity has to be equal to the number seats in the stadium. 50 Identificadores de Entidade Cada entidade deve possuir um identificador; Pode ser um ou mais atributos, cujos valores servem para distinguir uma ocorrência de outra dentro da mesma entidade; 51 Cliente Endereço Código Nome Modelo Entidade-Relacionamento Exemplo de Identificador com mais de um atributo. 52 PRATELEIRAS Capacidade Número da Prateleira Número do Corredor Modelo Entidade-Relacionamento Identificador com atributos de outra entidade, com quem tem um relacionamento (relacionamento identificador) Entidade Fraca: entidade somente existe quando relacionada a outra entidade; utiliza como parte de seu identificador entidades relacionadas. 53 Cliente DEPENDENTEMora Nome NomeCódigo Número (0,n)(1,1) Código Modelo Entidade-Relacionamento Propriedades de um identificador de entidade: Deve ser mínimo: caso seja retirado um atributo do identificador, a ocorrência não consegue mais ser identificada. Ex: Código do Cliente e Nome. Deve possui apenas um identificador: em caso de mais de uma opção para identificador escolher uma. Ex: código do cliente e RG. 54 Modelo Entidade-Relacionamento Entidades Associativas Em que data ocorreram as consultas ? Qual foi o motivo da consulta ? Que diagnóstico foi elaborado para a consulta em questão ? 55 MÉDICO PACIENTEconsulta (0,n)(1,n) Modelo Entidade-Relacionamento MÉDICO Código Nome Endereço Telefone Paciente DataCon Diagnóstico 01 Luis XXXX 9999 Carlos 12/03/17 XXXXXXX 01 Luis XXXX 9999 Ana 12/03/17 XXXXXXX 01 Luis XXXX 9999 Carlos 20/03/16 XXXXXXX 02 Luisa YYYY 8888 Angela 17/02/17 XXXXXXX 02 Luisa YYYY 8888 Paula 10/04/17 XXXXXXX 03 Manoel ZZZZ 2222 Carlos 28/07/17 XXXXXXX PACIENTE Código Nome Endereço Telefone Médico DataCon Diagnóstico 01 Ana YYYY 8888 Luis 12/03/17 XXXXXXX 02 Angela WWW 7777 Luisa 17/02/17 XXXXXXX 03 Carlos XXXX 9999 Luis 12/03/17 XXXXXXX 03 Carlos XXXX 9999 Manoel 28/07/17 XXXXXXX 03 Carlos XXXX 9999 Luis 20/03/16 XXXXXXX 04 Paula ZZZZ 2222 Luisa 10/04/17 XXXXXXX 56 Modelo Entidade-Relacionamento Entidades Associativas IMAGINE: Deseja-se criar uma Entidade para armazenar medicamentos e que medicamentos foram prescritos por um médico, para um paciente em uma determinada consulta. 57 MÉDICO PACIENTEconsulta (0,n)(1,n) MEDICAMENTO Modelo Entidade-Relacionamento Entidades Associativas Consegue-se a informação de que médico prescreveu determinado medicamento, mas que paciente o recebeu ?? 58 MÉDICO PACIENTEconsulta (0,n)(1,n) MEDICAMENTO(0,n) (0,n) receita Modelo Entidade-Relacionamento Entidades Associativas Consegue-se a informação de que paciente recebeu determinado medicamento, mas que médico o prescreveu ?? 59 MÉDICO PACIENTEconsulta (0,n)(1,n) MEDICAMENTO (0,n) (0,n) recebe Modelo Entidade-Relacionamento Entidades Associativas Não é possível associar dois relacionamentos, logo....60 MÉDICO PACIENTEconsulta (0,n)(1,n) MEDICAMENTO prescrito (0,n) (0,n) Modelo Entidade-Relacionamento Entidades Associativas 61 MÉDICO PACIENTECONSULTA (0,n)(1,n) MEDICAMENTO prescrito (0,n) (0,n) Modelo Entidade-Relacionamento Entidades Associativas 62 MÉDICO PACIENTE (0,n)(0,n) MEDICAMENTO prescrito (0,n) (0,n) CONSULTArealiza faz (1,1) (1,1) Modelo Entidade-Relacionamento 63 CÓDIGO NOME ENDERECO TELEFONE 01 Luis XXXX 9999 02 Luisa YYYY 8888 03 manoel ZZZZ 2222 MÉDICO CÓDIGO NOME ENDERECO TELEFONE 01 Ana YYYY 8888 02 Angela WWWW 7777 03 Carlos XXXX 9999 04 Paula ZZZZ 2222 PACIENTE MÉDICO PACIENTE DATACONS DIAGNOSTICO Luis Carlos 12/03/17 XXXXXX Luis Ana 12/03/17 XXXXXX Luis Carlos 20/03/16 XXXXXX Luisa Ângela 17/02/17 XXXXXX Luisa Paula 10/04/17 XXXXXX Manoel Carlos 28/07/17 XXXXXX CONSULTA Modelo Entidade-Relacionamento 64 Avalie o Modelo de dados para o problema do Medico, Medicamento e Paciente e corrija se achar conveniente MÉDICO PACIENTE (0,n)(0,n) MEDICAMENTO prescrito (0,n) (0,n) CONSULTArealiza faz (1,1) (1,1) Modelo Entidade-Relacionamento 65 Desenvolva o DER para a questão abaixo: Uma empresa de Turismo, trabalha com excursões e fretamento de seus ônibus e vans. O fretamento pode ser feito por uma empresa, solicitando um onibus para determinado trajeto em uma data e horario especifico. Os veículos são conduzidos por motoristas da empresa (ou terceirizados). A empresa promove também excursões para o publico em geral. Modele um banco de dados que atenda a necessidade acima. Mais Exercícios..... 66 Desenvolva o DER para a seguinte situação: Um cliente solicitou um projeto para a criação de um app (aplicativo mobile) que tenha a seguinte característica: - Permitir o cadastramento de lojas (bar, restaurantes, lanches) que poderão cadastrar seus cardápios de produtos. Os produtos são separados por categoria (bebidas, lanches, pizzas). - As lojas precisam ter obrigatoriamente a cidade e o bairro onde estão situadas. - Os clientes podem fazer seus pedidos via smartphones que serão registrados para a loja - A loja entrega os pedidos usando entregadores - Os clientes pagam seus pedidos usando o cartão de credito. Exercício – Aplicativo (App) 67 Normalização Com o surgimento e o aperfeiçoamento do sistema relacional na década de 70, várias regras foram definidas para a simplificação de tabelas, recebendo o nome de formas normais. Cada uma destas regras apresenta um critério de adequação, e o processo de adequação de tabelas a estas regras práticas chama-se normalização. Normalização ⚫ O que é? A normalização é uma metodologia para projeto de BDs relacionais, uma vez que sugere uma organização de dados em tabelas. Assim sendo, a normalização é uma ferramenta para projeto lógico de BDs relacionais. Normalização ⚫ Qual o objetivo? ⚫ O objetivo desta técnica é evitar problemas de redundância e anomalias de atualização, que podem estar presentes em uma relação. Normalização Como funciona? A solução para resolver estes problemas é a decomposição de uma relação em uma ou mais relações, com base na aplicação de certas regras de normalização (formas normais). Esta proliferação de relações nem sempre é ideal do ponto de vista de performance, devendo ser balanceado vantagens e desvantagens antes da efetivação dos resultados de uma forma normal (FN). Formas Normais Existem, ao todo, cinco formas normais, porém, se diz que ao passar pela terceira forma normal, a maioria dos bancos já estará normalizado. Exercício-Exemplo Tabela não normalizada CódProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAl LSC001 Novo Desenv. Sistema de Estoque 2146 3145 6126 1214 8191 João Silvio José Carlos Mário A1 A2 B1 A2 A1 4 4 9 4 4 1/11/16 2/11/16 3/10/16 4/10/16 1/11/16 24 24 18 18 12 PAG02 Manuten ção Sistema de RH 8191 4112 6126 Mário João José A1 A2 B1 4 4 9 1/05/17 4/01/17 1/11/17 12 24 12 Esquema de tabelas relacionais: Proj (codproj, tipo, descr, (codemp, nome, cat, sal, dataini, tempal)) ⚫ O parêntese apresenta aninhamento de tabelas. ⚫ No caso de tabelas aninhadas, as colunas sublinhadas indicam a coluna ou grupo de colunas que servem para distinguir diferentes linhas da tabela aninhada referente a uma linha da tabela de seu nível externo. ⚫ Assim, a coluna CodProj distingue as linhas (cada uma referente a um projeto) da tabela PROJ. Já a coluna CodEmp, serve para distinguir diferentes linhas de empregado dentro do grupo referente a um projeto. Passagem à primeira forma normal (1FN) •Diz-se que uma tabela está na primeira forma normal, quando ela não contém tabelas aninhadas. •O próximo passo da normalização consta da transformação do esquema de tabela não normalizada em um esquema relacional na primeira forma normal. •Portanto, a passagem à primeira forma normal consta da eliminação das tabelas aninhadas eventualmente existentes. Como passar para 1FN Para transformar um esquema de tabela não- normalizada em um esquema da 1FN há duas alternativas: • Construir uma única tabela com redundância de dados. • Construir uma tabela para cada tabela aninhada. Construir uma única tabela com redundância de dados. Cria-se uma tabela na qual os dados das linhas externas à tabela aninhada são repetidos para cada linha da tabela aninhada. No caso que estamos analisando seria o seguinte: PROJEMP (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAl). Neste caso, os dados aparecem repetidos para cada linha de empregados. Passagem à segunda forma normal (2FN) A passagem à segunda forma normal objetiva eliminar um certo tipo de redundância de dados. Uma tabela encontra-se na segunda forma normal quando, além de encontrar-se na primeira forma normal, cada coluna não chave depende da chave primária completa. Uma tabela que não se encontra na segunda forma contém dependências funcionais parciais, ou seja, contém colunas não chave que dependem apenas de uma parte da chave primária. Uma tabela encontra-se na 2FN quando, além de estar na 1FN, não contém dependências parciais. Construir uma tabela para cada tabela aninhada. Cria-se uma tabela referente a própria tabela que está sendo normalizada e uma tabela para cada tabela aninhada. O resultado seria o seguinte: PROJ(CodProj, Tipo, Descr) PROJEMP (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl). Ao se decompor desta forma, em duas tabelas, as relações entre as informações podem ser perdidas. Dependência funcional ⚫ Dependência funcional:Dizemos que determinada coluna é dependente funcionalmente de outra coluna desde que a primeira coluna determine a existência da segunda. Por exemplo, salário é dependente funcionalmente de código do funcionário. Isso ocorre já que, sem funcionário não há salário. ⚫ Dependência parcial: Uma dependência funcional parcial ocorre quando uma coluna depende apenas de parte da chave primária composta. ⚫ Portanto, toda tabela que está na 1FN e que possui apenas uma coluna como chave primária já está na 2FN. ⚫ O mesmo aplica-se para uma tabela que contenha apenas colunas chave primária. No exercício -passar para 2FN ⚫ A tabela PROJEMP deve ser examinada para procurar dependências parciais, pois possui uma chave primária composta. ⚫ As colunas Nome, Cat e Sal dependem, cada uma, apenas da coluna CodEmp. ⚫ As colunas nome, categoria funcional e salário são determinados somente pelo código do empregado. Porém, DataIni e TempAl dependem da chave primária completa. Como passar para 2FN Para passarmos o esquema PROJ e PROJEMP para a segunda forma normal, vamos dividir a tabela PROJEMP em duas tabelas: PROJ: (CodProj, Tipo, Descr) PROJEMP: (CodProj, CodEmp, DataIni, TempAl) EMP: (CodEmp, Nome, Cat, Sal) Exemplo -Resultado - 2FN Resumo – passos 2FN ⚫ A passagempara a segunda forma normal obedece a alguns passos importantes: 1) Copiar para a 2FN cada tabela que tenha chave primária simples ou que não tenha colunas além da chave. 2) Para cada tabela com chave primária composta e com pelo menos uma coluna não chave: a)Criar na 2FN uma tabela com as chaves primárias da tabela na 1FN. b)Para cada coluna não chave fazer a seguinte pergunta: A coluna depende de toda chave ou de apenas parte dela? Resumo – passos 2FN Caso a coluna dependa de toda a chave completa na 2FN (a coluna DataIni e TempAl) → Criar a coluna correspondente na tabela com a chave completa na 2FN. Caso a coluna dependa apenas de parte da chave (as colunas, nome, sal e cat da tabela ProjEmp) → Criar, caso ainda não existir, uma tabela na 2FN que tenha como chave primária a parte da chave que é determinante da coluna em questão (tabela EMP). Criar a coluna dependente dentro da tabela na 2FN (Colunas nome, sal e Cat). Passagem à terceira forma normal (3FN) A passagem à terceira forma normal objetiva eliminar um outro tipo de redundância. Vamos supor que o salário do funcionário seja determinado pela sua categoria funcional. Neste caso, a informação de que salário é pago à uma categoria funcional está representado redundantemente na tabela. As categorias funcionais se repetirão, tantas vezes quantos empregados estiverem em uma categoria. A passagem à 3FN objetiva eliminar este tipo de redundância de dados. 3FN ⚫ Uma tabela encontra-se na 3FN quando, além de estar na 2FN, toda coluna não chave depende diretamente de chave primária, isto é, quando não há dependências funcionais transitivas ou indiretas. ⚫ Uma dependência funcional transitiva ou indireta acontece quando uma coluna não chave primária depende funcionalmente de outra coluna ou combinação de colunas não chave primária. Dependência transitiva Dependência transitiva: Uma dependência funcional transitiva ocorre quando uma coluna, além de depender da chave primária da tabela, depende de outra coluna ou conjunto de colunas da tabela. 3FN PROJ(CodProj, Tipo, Descr) PROJEMP: (CodProj, CodEmp, DataIni, TempAl) EMP: (CodEmp, Nome, Cat) CAT(Cat, Sal) Resultado 3FN Resumo 2FN para 3FN 1) Para tabelas com duas ou mais colunas não chave. a) Criar uma tabela no esquema 3FN com a chave primária da tabela em questão. b) Para cada coluna não chave fazer a seguinte pergunta: “a coluna depende de alguma outra coluna não chave” Caso a coluna dependa apenas da chave: Copiar a coluna para a tabela 3FN. Caso a coluna depender da outra coluna: Criar, caso ainda não exista, uma tabela no esquema na 3FN que tenha como chave primária a coluna da qual há a dependência indireta. Copiar a coluna dependente para a tabela criada. A coluna determinante deve permanecer também na tabela original. Considerações importantes ⚫ Para a maioria dos documentos e arquivos, a decomposição até a 3FN é suficiente para obter um esquema de banco de dados correspondente ao documento. ⚫ Existem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. ⚫ A grande maioria dos bancos de dados estarão normalizados até a terceira forma normal. ⚫ A normalização pode apresentar alguns problemas um deles é o exagero na hora de normalizar as tabelas ⚫ Excesso de normalização leva à lentidão nas consultas e relatórios. CASE STUDIO 2.25 Desenvolva o DER: A seguir é descrito um conjunto de informações a ser armazenada num Banco de Dados do departamento pessoal de uma empresa. ➢ A empresa tem um conjunto de departamentos; ➢ Cada departamento tem um conjunto de funcionários, um conjunto de projetos e um conjunto de escritórios; ➢ Cada funcionário tem um histórico funcional (conjunto de funções que o funcionário teve). Para cada função, o funcionário tem um histórico salarial (conjunto de salários que recebeu enquanto designado naquela função); ➢ Cada escritório tem um conjunto de telefones. O modelo deve conter as seguintes informações: ➢ Para cada departamento: número do departamento (único), orçamento e o número de funcionários relativo ao gerente do departamento (único). ➢ Para cada funcionário: número de funcionário (único), número do projeto atual, número de escritório e número de telefone; ainda, título de cada função que teve, além da data e do salário relativo a cada salário que recebeu na função. ➢ Para cada projeto: número de projeto (único) e orçamento. ➢ Para cada escritório: número de escritório (único), área em metros e números (únicos) de telefones neste escritórios. 93 Exercícios – Departamento Pessoal (3FN) Generalização/Especialização Imagine um ambiente hospitalar: MÉDICOS PACIENTES QUARTOS SALAS DE CIRURGIA Cada conjunto destes possuirá diversos elementos associados a ele e isso indicará a criação de entidades no modelo. 94 Modelo Entidade-Relacionamento Generalização/Especialização Suponha que os MÉDICOS são divididos em categorias: MÉDICOS RESIDENTES MÉDICOS EFETIVOS Cada uma dessas categorias, além de características comuns, possui atributos distintos Especialidade, Nome do Médico, Local de atuação, Tempo de Permanência, Data de Efetivação, Data de Início da Residência, Nome do Orientador, Data de avaliação Prevista, Tempo de Experiência na Função 95 Modelo Entidade-Relacionamento Generalização/Especialização ATRIBUTO MÉDICO RESIDENTE MÉDICO EFETIVO Especialidade X Nome do Médico ` X X Local de Atuação X Tempo de Permanência X Data de Efetivação X Data de Início da Residência X Nome do Orientador X Data de Avaliação Prevista X Tempo de Experiência na Função X X 96 Modelo Entidade-Relacionamento Generalização/Especialização 97 MÉDICO MÉDICO RESIDENTE MÉDICO EFETIVO Generalização Especialização Modelo Entidade-Relacionamento Generalização/Especialização Através deste conceito é possível atribuir propriedades particulares a um subconjunto das ocorrências (especializadas) de uma entidade genérica. Herança de propriedades: cada ocorrência da entidade especializada possui, além de seus próprios atributos e relacionamentos, também as propriedades da entidade “mãe”, a entidade generalizada. 98 Modelo Entidade-Relacionamento Generalização/Especialização No DER, o símbolo é um triângulo; 99 PESSOA PESSOA FÍSICA PESSOA JURÍDICA Nome Código CNPJCPF Sexo CIDADE (0,n)(1,1) Modelo Entidade-Relacionamento Generalização/Especialização Pode ser classificada em dois tipos: Parcial : nem toda ocorrência da entidade genérica possui uma ocorrência correspondente em uma entidade especializada. Total : para cada ocorrência da entidade genérica existe sempre uma ocorrência em uma das entidades especializadas. 100 Modelo Entidade-Relacionamento Generalização/Especialização - Parcial 101 FUNCIONÁRIO MOTORISTA SECRETÁRIA p Indica que nem todo FUNCIONÁRIO é MOTORISTA ou SECRETÁRIA Tipo de funcionário Modelo Entidade-Relacionamento 102 ⚫ Generalização/Especialização - Total CLIENTE PESSOA FÍSICA PESSOA JURÍDICA t Indica que todo CLIENTE é ou PESSOA FÍSICA ou PESSOA JURÍDICA Modelo Entidade-Relacionamento Generalização/Especialização - Especialização Única 103 FUNCIONÁRIO SECRETÁRIA p cargo de funcionário Modelo Entidade-Relacionamento Generalização/Especialização - Especializações Múltiplas 104 VEÍCULO VEÍCULO TERRESTRE VEÍCULO AQUÁTICO AUTOMÓVEL VEÍCULO ANFÍBIO BARCO Modelo Entidade-Relacionamento Generalização/Especialização Podem ser: Mutuamente exclusivas: sempre que uma ocorrência de um entidade generalizada pertencer a somente uma entidade especializada. Não (Mutuamente) Exclusivas: uma ocorrência da entidade generalizada pode pertencer a mais de um subconjunto ( entidade especializada).105 Modelo Entidade-Relacionamento Generalização/Especialização - Mutuamente Exclusiva 106 VEÍCULO TREM AUTOMÓVELAVIÃO Modelo Entidade-Relacionamento 107 ⚫ Generalização/Especialização - Não Exclusiva PESSOA PROFESSOR FUNCIONÁRIOALUNO Modelo Entidade-Relacionamento Generalização/Especialização - Quando Utilizar ??? Regra 1 : Existe algum atributo que seja aplicável a somente uma entidade especializada e não a todas? Regra 2 : Existe algum relacionamento que seja aplicável a somente uma entidade especializada e não a classe generalizada ? Regra 3 : Não estaremos “poluindo” o modelo com a inserção de detalhes desnecessários? 108 Modelo Entidade-Relacionamento Generalização/Especialização - Quando Utilizar ??? Situação em que a especialização deve ser explicitada Situação em que a especialização pode ser explicitada 109 Regra 1 e Regra 2 Regra 3 Modelo Entidade-Relacionamento Aspectos Temporais Pode ser necessário manter um histórico de alteração das informações no Banco de Dados. Podem ser: atributos cujos valores se modificam ao longo do tempo; relacionamentos que se modificam ao longo do tempo. 110 Modelo Entidade-Relacionamento Aspectos Temporais: modificação nos valores de atributos 111 EMPREGADO salário Banco de Dados contém apenas o salário atual EMPREGADO SALÁRIO data valor (0,n) (1,1) Banco de Dados contém a história dos salários Modelo Entidade-Relacionamento Aspectos Temporais: modificação nos relacionamentos 112 EMPREGADO DEPARTAMENTO (1,1) (1,n) EMPREGADO DEPARTAMENTO data inicial (1,n) (1,n) trabalha trabalha data final Banco de Dados contém apenas a alocação atual Banco de Dados contém o histórico de alocações Modelo Entidade-Relacionamento Atributos Opcionais e Multivalorados Atributo Opcional: nem toda ocorrência da entidade possui um valor para um determinado atributo; Atributo Multivalorado: um atributo pode possui mais de um valor associado a ele. 113 Modelo Entidade-Relacionamento Atributos Opcionais 114 EMPREGADO nome tipo de empregado código CREA CRM Num. Carteira habilitação(0,1) (0,1) (0,1) EMPREGADO MOTORISTA MÉDICO ENGENHEIRO Num. Carteira habilitação CREACRM (0,1)(0,1) nome código t Modelo Entidade-Relacionamento Atributos Multivalorados 115 EMPREGADO nome dependentecódigo (0,n) EMPREGADO nome código DEPENDENTE nome (o,n) (1,1) Modelo Entidade-Relacionamento Atributos Opcionais e Multivalorados 116 Tentar restringir-se ao uso de atributos OBRIGATÓRIOS e MONOVALORADOS Modelo Entidade-Relacionamento Verificação do Modelo Modelo deve ser correto: livre de erros sintáticos e semânticos; Modelo deve ser completo: verificar se todos os dados que devem ser obtidos do banco de dados estão presentes e se todas as manipulações sobre o banco de dados podem ser executadas sobre o modelo; Modelo deve ser livre de redundâncias: atributos e relacionamentos. 117 Modelo Entidade-Relacionamento Notações Peter Chen (acadêmica) Engenharia de Informações (James Martin) MERISE (notação européia) 118 Modelo Entidade-Relacionamento Modelo Entidade- Relacionamento Notações : Engenharia de Informações (James Martin) relacionamentos representados por linhas; denominação do relacionamento em forma de verbo; notação para cardinalidade máxima e mínima é gráfica. 119 • cardinalidade (mínima, máxima) é 1 • cardinalidade mínima é 0 • cardinalidade máxima é n Cargo Funcionário (1,1) (0,N) lotação Cargo Funcionário é ocupado por ocupa Modelo Entidade- Relacionamento Notações : Merise Utilizada na França; Relacionamento representado por uma elipse; 120 Cargo Funcionário (1,1) (0,N) lotação Cargo Funcionário (1,1) lotação (0,N) Associativa Participativa Exercício... Vem_Q_Tem Um estacionamento de veículos, trabalha com compra e venda de autos. O proprietário do estabelecimento também aceita trabalhar com Consignação (veículos de terceiro que ele somente revende). As vezes um possível cliente procura o local em busca de um automóvel especifico, e caso não haja o veiculo disponível é anotado o desejo do cliente para futuras consultas. Construa um diagrama Entidade/Relacionamentos para o projeto. 121 MODELO RELACIONAL Modelo Relacional123 Banco de Dados Relacional = consiste em uma coleção de tabelas ou relações, cada uma das quais com um nome único. Modelo Relacional Tabelas Conjunto não ordenado de linhas (tuplas); Cada linha é composta por uma série de campos (valor de atributo); Cada campo é identificado por um nome de campo (nome de atributo); O conjunto de campos iguais da tabela formam uma coluna 124 Modelo Relacional125 Coluna (atributo) nome do campo (nome do atributo) linha (tupla) valor do campo (valor do atributo) ... ... ...... N o Matrícula Nome End. Residencial Cargo 01 João Av. 9 de julho,140 Diretor 02 José Rua das Flores, 35 Gerente 03 Maria Al. Casa Branca, 110 Escriturário 05 Modelo Relacional Chaves Identificam as linhas de uma tabela e permitem o relacionamento entre linhas de várias tabelas. Podem ser: Chaves primárias; Chaves estrangeiras; e Chaves alternativas. 126 Modelo Relacional Chaves - Chave Primária É uma coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela. Podem ser: Chaves únicas; ou Chaves compostas. 127 Modelo Relacional128 C ó di goEm p N o me C ó di go Dept o E 3 P a u lo D 1 E 1 Lu c ia na D 2 E 2 An t o n io D 1 E 4 Lu c ia D 3 Chave Única C ó di goEm p Nu mDe pe nd No me Ti po E 1 0 1 Lu i s Fi l h o E 1 0 2 Mar ta E spo sa E 2 0 1 An a E spo sa E 2 0 2 C ar l o s Fi l h o Chave Composta Modelo Relacional Chaves - Chave Estrangeira É uma coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela. Permite a implementação do relacionamento em um banco de dados relacional 129 Modelo Relacional130 C ó di goEm p N o me C ó di go Dept o E 3 P a u lo D 1 E 1 Lu c ia na D 2 E 2 An t o n io D 1 E 4 Lu c ia D 3 C o di go Dept o N o me D 1 C om pra s D 2 V en da s D 3 E n ge nha r i a Chave Estrangeira Modelo Relacional Chaves - Chave Estrangeira Restrições: Quando for incluída uma nova linha na tabela que contém a chave estrangeira; Quando for alterado o valor da chave primária referenciada pela chave estrangeira; Quando for alterado o valor de uma chave estrangeira; Quando for excluída uma linha da tabela que contém a chave primária referenciada pela chave estrangeira; 131 Modelo Relacional Chaves - Chave Estrangeira dentro da própria tabela 132 C o di goEm p N o me C o di go Dept o C o dEmp Ge re n t e E 3 P e dro D 1 _ _ E 2 Lu c a s D 1 E 3 E 1 M ar i s a D 3 E 3 Chave estrangeira referencia chave primária na própria tabela Modelo Relacional Chaves - Chave Alternativa Quando mais de uma coluna podem servir para distinguir uma linha das demais, uma é escolhida chave primária e as demais são denominadas chaves alternativas. 133 C o di goEm p N o me C o di go Dept o C P F E 3 P e dro D 1 1 3 2 . 12 1 . 33 1 -2 0 E 2 Lu c a s D 1 8 7 6 . 34 6 . 23 5 -9 0 E 1 M ar i s a D 3 3 1 2 . 69 2 . 45 1 -7 8 Chave alternativa Modelo Relacional Domínios Conjunto de valores ( alfanuméricos, numéricos...) que os campos de uma determinada coluna podem assumir. Ex: números de salas de aula [o conj.de números de 1 a 150, inteiros do formato 999] nomes de alunos [o conj.de nomes possíveis de pessoas, formato A(50)] códigos de disciplinas [o conj.de 3 letras seguidos de um traço e de 3 dígitos; formato AAA-999] 134 Modelo Relacional Domínios Podem ser: obrigatórios : não são admitidos valores vazios para as colunas. Opcionais : podem aparecer valores vazios para as colunas. Normalmente, chaves primárias são obrigatórias. 135 Modelo Relacional Restrições de Integridade 136 Integridade dos dados de um Banco de Dados = os dados refletem corretamente a realidade representada pelo banco de dados e são consistentes entre si Modelo Relacional Restrições de Integridade Regras de consistência de dados que é garantida pelo próprio SGBD: Integridade de Domínio; Integridade de Vazio; Integridade de Chave; e Integridade Referencial. 137 Modelo Relacional Restrições de Integridade Integridade de Domínio: especificam que o valor de um campo deve obedecer a definição dos valores admitidos para a coluna. Integridade de Vazio: através deste tipo de restrição é especificado se os campos de uma coluna podem ou não ser vazios ( se a coluna é obrigatória ou opcional). 138 139 Modelo Relacional ⚫ Restrições de Integridade ⚫ Integridade de Chave: trata-se da restrição que define que os valores da chave primária e alternativa devem ser únicos. ⚫ Integridade Referencial: define que os valores dos campos que aparecem em uma chave estrangeira devem aparecer na chave primária da tabela referenciada. 140 Modelo Relacional ⚫ Restrições de Integridade ⚫ Restrições Semânticas: não são automaticamente controladas pelo SGBD; o programador deve escrever procedimentos que garantam tais integridades. Ex: ⚫ Um empregado não pode ter um salário maior que seu superior imediato; Modelo Relacional Especificação de Banco de Dados Relacional Chamada de Esquema do Banco de Dados, deve conter no mínimo: Tabelas que formam o banco de dados; Colunas que as tabelas possuem; e Restrições de integridade. 141 Modelo Relacional Esquema do Banco de Dados NOMETABELA (nomes das colunas) <nome da coluna ch. estrangeira> referencia <nome da tabela> Ex: DEPARTAMENTO (CodigoDepto, Nome) EMPREGADO (CodigoEmp, Nome, CodigoDepto) CodigoDepto referencia DEPARTAMENTO 142 Mapeamento entre Modelos 143 Engenharia Reversa de BD Relacional Projeto Lógico de BD Relacional Modelo ER ( nível conceitual) Modelo Relacional ( nível lógico) Mapeamento ER - Relacional Regras: obter um banco de dados que permita a eficiência das instruções de consulta e alteração do banco; e obter um banco de dados simplificado, no que diz respeito ao desenvolvimento e manutenção das aplicações. 144 Mapeamento ER - Relacional Para isso: Evitar junções: ter os dados necessários a uma consulta em uma única linha; Diminuir o número de chaves: Cliente (CodCliente, Nome, Endereço, CEP,Telefone) Ou Cliente (CodCliente, Nome) ClienteEnder (CodCliente, Endereco, CEP, Telefone) Evitar campos opcionais : CGC – Nome Fantasia CPF - RG 145 Mapeamento ER - Relacional Passos para a transformação de um modelo ER para o modelo Relacional: tradução inicial de entidades e respectivos atributos; tradução de relacionamentos e respectivos atributos; tradução de generalizações - especializações 146 Mapeamento ER - Relacional Mapeamento das Entidades Cada entidade é traduzida para uma tabela. Cada atributo da entidade define uma coluna da tabela. Os atributos identificadores da entidade correspondem às colunas que compõem a chave primária da tabela. 147 CLIENTE Código NomeData Nascimento Endereço Esquema Relacional Correspondente: Pessoa ( CodCliente, Nome, Endereço, DataNasc) Mapeamento ER - Relacional Mapeamento dos Nomes de atributos Nomes de Colunas devem ser curtos; Nomes de colunas não devem conter espaços em branco; Não é necessário utilizar o nome da tabela para compor o nome de uma coluna, com exceção da chave primária. Exemplo: Nome do Cliente NomeCliente Nome Codigo do Cliente Codigo CodigoCliente CodCliente CodigoCli 148 Mapeamento ER - Relacional Mapeamento do Relacionamento Identificador (Entidade Fraca) Cliente (CodigoCli, Nome) Autorizado (CodigoCli, Numero, Nome) 149 Cliente AUTORIZADOpossui Nome NomeCódigo Número (0,n)(1,1) Mapeamento ER - Relacional 150 GRUPO EMPRESA EMPREGADODEPENDENTE nome código número da empresa nome nome número do empregado número do dependente nome (1,n) (1,n) (0,n) (1,1) (1,1) (1,1) Grupo ( CodGrupo, Nome) Empresa ( NumEmpresa, CodGrupo, Nome) Empregado ( NumEmpreg, NumEmpresa, CodGrupo, Nome) Dependente ( NumDepend, NumEmpreg, NumEmpresa, CodGrupo, Nome) Mapeamento ER - Relacional Mapeamento dos Relacionamentos : determinado pelas cardinalidades mínima e máxima das entidades envolvidas nos relacionamentos. Três possibilidades: tabela própria : relacionamentos n para n; coluna (s) adicional (is) dentro de uma das tabelas : relacionamentos n para 1 ou 1 para n; e fusão das tabelas relacionadas em uma só : relacionamentos 1 para 1. 151 Mapeamento ER - Relacional Mapeamento Relacionamentos – 1:1 quando as duas entidades tem participação opcional Inserção dos atributos em uma das tabelas 152 HOMEM MULHER NomeCódigo (0,1)(0,1) Código Nome Data Regime Casamento Mapeamento ER - Relacional Mapeamento Relacionamentos – 1:1 Dentro da Entidade Mulher Mulher ( CodigoMul, Nome CodigoHom, Data, Regime) CodigoHom referencia Homem Homem (CodigoHom, Nome) Criar uma tabela para Casamento Mulher ( CodigoMul, Nome Homem (CodigoHom, Nome) Casamento (CodigoMul, CodigoHom, Data, Regime) CodigoMul referencia Mulher CodigoHom referencia Homem 153 Mapeamento ER - Relacional Mapeamento Relacionamentos – 1:1 quando uma entidade tem participação opcional e a outra obrigatória Fusão das tabelas correspondentes as duas entidades 154 CORRENTISTA CARTÃO MAGNÉTICO NomeCódigo (0,1)(1,1) Código Data Expedição possui Mapeamento ER - Relacional Mapeamento Relacionamentos – 1:1 Todos os atributos em uma só tabela (Correntista) Correntista (CodCorrent, Nome, CodCartao, DataExp) Manter as duas tabelas Correntista (CodCorrent, Nome) Cartao (CodCartao, DataExp, CodCorrent) CodCorrent referencia Correntista 155 156 Mapeamento Relacionamentos – 1:1 Fusão das tabelas correspondentes às duas entidades Mapeamento ER - Relacional CONFERENCIA COMISSÃO NomeCódigo (1,1)(1,1) Endereco Nome Organizada por Data Todos os atributos em uma só tabela (Conferência) Conferência (CodConf, Nome, Data, EnderComisOrg) 157 Mapeamento Relacionamentos – 1:1 Mapeamento ER - Relacional DIRETOR DEPARTAMENTO NomeCódigo (1,1)(1,1) Codigo Nome Dirige ? 158 Mapeamento Relacionamentos – 1:n Adição de colunas à uma das tabelas Edifício (CodigoEdif, Endereço) Apartamento (CodigoEdif, NumeroAp, AreaAp) CodigoEdif referencia Edificio Mapeamento ER - Relacional EDIFÍCIO APARTAMENTOS EndereçoCódigo (0,n)(1,1) Número Área contém 159 Mapeamento Relacionamentos – 1:n Adição de colunas à uma das tabelas Cliente (CodigoCli, Nome) Venda (NumNotaF, Data, CodigoCli) CodigoCli referencia Cliente Mapeamento ER - Relacional CLIENTE VENDA NomeCódigo (0,n)(1,1) Número da Nota Fiscal Data contém 160 Mapeamento Relacionamentos – n:n Criação de um tabela própria para o relacionamento Medico (CRM, Nome) Paciente (CodPaciente, Nome) Consulta (CRM, CodPaciente, Data, Hora, Diagnostico) CRM referencia Medico CodPaciente referencia Paciente Mapeamento ER - Relacional MEDICO PACIENTE NomeCRM (1,n)(1,n) Código Nome atende Data Hora Diagnóstico 161 Mapeamento de Generalização - Especialização Duas alternativas: uso de um única tabela para toda a hierarquia de generalização-especialização; ou uso de uma tabela para cada entidade. Mapeamento ER - Relacional 162 Uma única tabela para toda a hierarquia A Chave primária é correspondente ao identificador da entidade mais genérica; Caso não exista, criar uma coluna TIPO, para identificar o tipo de ocorrência que está sendo representada em cada linha; Uma coluna para cada atributo da entidade genérica;Colunas referentes aos relacionamentos dos quais participa a entidade genérica (se necessário); Colunas para todos os atributos das entidades especializadas (opcionais); e Colunas referentes aos relacionamentos dos quais participa cada entidade especializada (se necessário e opcionais). Mapeamento ER - Relacional 163 Mapeamento ER - Relacional EMPREGADO ENGENHEIROMOTORISTASECRETÁRIA Codigo Nome Tipo Carteira de Habilitação PROJETO participa CREA DEPARTAMENTO Codigo Nome trabalha Codigo Nome (1,n) (1,1) p (0,n) (o,n) RAMO ENGENHARIA atua (1,1) (0,n) Codigo Nome Mapeamento ER - Relacional Empregado (CodEmpreg, Nome, Tipo, CartHabil, CREA, CodDepto, CodRamo) CodDepto referencia Departamento CodRamo referencia Ramo Departamento (CodDepto, Nome) Projeto (CodProjeto, Nome) Ramo (CodRamo, Nome) Participação (CodEmpreg, CodProjeto) CodEmpreg referencia Empregado CodProjeto referencia Projeto 164 165 Uma tabela para cada entidade especializada Empregado (CodEmpreg, Nome, Tipo, CodDepto) CodDepto referencia Departamento Motorista (CodEmpreg, CartHabil) CodEmpreg referencia Empregado Engenheiro (CodEmpreg, CREA, CodRamo) CodEmpreg referencia Empregado CodRamo referencia Ramo Departamento (CodDepto, Nome) Projeto (CodProjeto, Nome) Ramo (CodRamo, Nome) Participação (CodEmpreg, CodProjeto) CodEmpreg referencia Empregado CodProjeto referencia Projeto Mapeamento ER - Relacional 166 Eliminação da Entidade Genérica OutrosEmpreg (CodEmpreg, Nome, Tipo, CodDepto) CodDepto referencia Departamento Motorista (CodMotor, Nome, CartHabil, CodDepto) CodDepto referencia Departamento Engenheiro (CodEngen, Nome, CREA, CodRamo, CodDepto) CodDepto referencia Departamento CodRamo referencia Ramo Departamento (CodDepto, Nome) Projeto (CodProjeto, Nome) Ramo (CodRamo, Nome) Participação (CodEngen, CodProjeto) CodEngn referencia Engenheiro CodProjeto referencia Projeto Mapeamento ER - Relacional Engenharia Reversa de MR167 Engenharia Reversa de BD Relacional Projeto Lógico de BD Relacional Modelo ER ( nível conceitual) Modelo Relacional ( nível lógico) Engenharia Reversa de MR Etapas: Identificação das ENTIDADES correspondentes a cada TABELA Definição de RELACIONAMENTOS 1:n e 1:1 Definição de ATRIBUTOS Definição de IDENTIFICADORES de entidades e relacionamentos 168 169 ⚫ Identificação das ENTIDADES correspondentes a cada TABELA ⚫ Uma tabela pode corresponder a: ⚫ uma entidade; ⚫ um relacionamento n:n; ou ⚫ uma entidade especializada. ⚫ O que define qual das situações acima ocorre é a composição da chave primária da tabela. Engenharia Reversa de MR 170 ⚫ Regras para identificar o tipo de tabela: ⚫ Regra 1- a chave primária é composta por mais de uma chave estrangeira: a tabela implementa um relacionamento n:n ⚫ Regra 2 - Toda chave primária é uma chave estrangeira: a tabela implementa uma especialização ⚫ Regra 3 - Outras situações - quando a chave não for composta por diversas chaves estrangeiras ( regra 1) ou toda a chave primária for uma chave estrangeira (regra 2) a tabela representa uma entidade Engenharia Reversa de MR 171 Engenharia Reversa de MR Empregado (CodEmpreg, Nome, Tipo, CodDepto) CodDepto referencia Departamento Dependente (CodEmpreg, NumeroDepend, Nome) CodEmpreg referencia Empregado Motorista (CodEmpreg, CartHabil) CodEmpreg referencia Empregado Engenheiro (CodEmpreg, CREA, CodRamo) CodEmpreg referencia Empregado CodRamo referencia Ramo Departamento (CodDepto, Nome) Projeto (CodProjeto, Nome) Ramo (CodRamo, Nome) Participação (CodEmpreg, CodProjeto,Função) CodEmpreg referencia Empregado CodProjeto referencia Projeto Engenharia Reversa de MR Relacionamento n:n - chave primária composta por mais de uma chave estrangeira Participação (CodEmpreg, CodProjeto, Função) CodEmpreg referencia Empregado CodProjeto referencia Projeto 172 PARTICIPAÇÃO 173 ⚫Especialização - Toda chave primária é uma chave estrangeira Motorista (CodEmpreg, CartHabil) CodEmpreg referencia Empregado Engenheiro (CodEmpreg, CREA, CodRamo) CodEmpreg referencia Empregado CodRamo referencia Ramo Engenharia Reversa de MR MOTORISTA ENGENHEIRO 174 ⚫Outras Situações - Entidade Empregado (CodEmpreg, Nome, Tipo, CodDepto) CodDepto referencia Departamento Departamento (CodDepto, Nome) Projeto (CodProjeto, Nome) Ramo (CodRamo, Nome) Dependente (CodEmpreg, NumeroDepend, Nome) CodEmpreg referencia Empregado Engenharia Reversa de MR EMPREGADO DEPARTAMENTO PROJETO RAMO DEPENDENTE 175 Engenharia Reversa de MR MOTORISTA ENGENHEIRO EMPREGADO 176 ⚫ Identificação de RELACIONAMENTOS 1:n OU 1:1 ⚫ Quando a chave estrangeira não se enquadra nas Regras 1(relacionamento n:n) e 2 (especialização) da identificação de entidades, esta chave estrangeira identifica um relacionamento 1:n ou um relacionamento 1:1 Empregado (CodEmpreg, Nome, Tipo, CodDepto) CodDepto referencia Departamento Engenheiro (CodEmpreg, CREA, CodRamo) CodEmpreg referencia Empregado CodRamo referencia Ramo Engenharia Reversa de MR Engenharia Reversa de MR177 MOTORISTA ENGENHEIRO EMPREGADO DEPARTAMENTO RAMO PROJETO PARTICIPAÇÃO DEPENDENTE 178 ⚫ Identificação de ATRIBUTOS ⚫ Para cada coluna de uma tabela, que não seja Chave Estrangeira, é definido um atributos na entidade/relacionamento correspondente à tabela. Engenharia Reversa de MR 179 EMPREGADO ENGENHEIROMOTORISTA Codigo Nome Tipo Carteira de Habilitação PROJETO participação CREA DEPARTAMENTO Codigo Nome trabalha Codigo Nome (1,n) (1,1) (0,n) (o,n) RAMO atua (1,1) (0,n) Codigo Nome Engenharia Reversa de MR Função DEPENDENTE Numero Nome possui (1,1) (0,n) 180 ⚫ Identificação de IDENTIFICADORES de Entidades ⚫ Regras: ⚫ Coluna da chave primária que não é chave estrangeira: toda coluna que faz parte da chave primária e que não é chave estrangeira corresponde a um atributo identificador da entidade; ⚫ Coluna da chave primária que é chave estrangeira: toda coluna que é chave primária e que é chave estrangeira corresponde a um identificador externo da entidade. Isto identifica uma entidade fraca. Engenharia Reversa de MR Engenharia Reversa de MR181 EMPREGADO ENGENHEIROMOTORISTA Codigo Nome Tipo Carteira de Habilitação PROJETO participação CREA DEPARTAMENTO Codigo Nome trabalha Codigo Nome (1,n) (1,1) (0,n) (o,n) RAMO atua (1,1) (0,n) Codigo Nome Função DEPENDENTE Numero Nome possui (1,1) (0,n) 182 MANIPULAÇÃO DOS DADOS Manipulação dos Dados Linguagens de Consulta permitem a manipulação e recuperação de dados em bancos de dados; linguagens orientadas a conjuntos e não a registros; classificadas em procedurais e não-procedurais. Linguagens Matemáticas utilizadas como referência Álgebra Relacional; e Cálculo Relacional. 183 Álgebra Relacional Linguagem de Consulta procedural: especificação de quais dados são desejados e como chegar até eles Coleção de operadores que têm uma ou duas relações (tabelas) de entrada e produzem uma relação de saída; Consiste de: Operações da teoria dos conjuntos; Operações específicas para banco de dados relacionais unárias e binárias. 184 Álgebra Relacional Operações da Teoria dos Conjuntos: União ( ) Interseção ( ) Diferença ( – ) Produto Cartesiano ( X ) Operações Relacionais Unárias Seleção ( ) Projeção ( ) Operações Relacionais Binárias Junção ( ) Divisão ( ÷ ) Renomear ( ) Atribuição ( ) 185 Álgebra Relacional Seleção () Operação relacional unária; Seleciona tuplas que satisfaçam um determinado predicado; Representada graficamente pela letra grega minúscula sigma (); O predicado (condição) aparece subscrito a ; O argumento da relação (tabela pesquisada) é representado entre parênteses; condição (relação) 186 187 ⚫ Seleção - condição (relação) Exemplo: Considere a tabela abaixo MÉDICO Especialidade = ´Pediatria´ (MÉDICO) Álgebra Relacional Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M4 Carla Pediatria 30 188 ⚫ Seleção - condição (relação) Exemplo: Especialidade=´Pediatria´ ^ Idade<35 (MÉDICO) Álgebra Relacional Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 Cod_Medico Nome Especialidade Idade M4 Carla Pediatria 30 189 ⚫ Seleção () - Operadores Utilizados ⚫ Comparação ⚫ = : igual ⚫ : diferente ⚫ >, > : maior e maior ou igual ⚫ < , < : menor e menor ou igual ⚫ Conectivos ⚫ ^ : e ⚫ : ou Álgebra Relacional 190 ⚫ Projeção () ⚫ Operação relacional unária; ⚫ Seleciona apenas os atributos especificados de uma determinada relação (tabela); ⚫ Representada graficamente pela letra grega pi (); ⚫ Os atributos desejados como resultado aparecem subscrito a ; ⚫ O argumento da relação (tabela pesquisada) é representado entre parênteses; lista de atributos (relação) Álgebra Relacional 191 ⚫ Projeção - lista de atributos (relação) Exemplo: Considere a tabela abaixo MÉDICO Nome, Especialidade (MÉDICO) Álgebra Relacional Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 Nome Especialidade Luis Carlos Pediatria Ana Maria Cardiologia João Pedro Oftalmologia Carla Pediatria 192 ⚫ Projeção - lista de atributos (relação) Exemplo: Considere a tabela abaixo MÉDICO Especialidade = ´Pediatria´ (MÉDICO) Álgebra Relacional Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M4 Carla Pediatria 30 193 ⚫ Projeção - lista de atributos (relação) Exemplo: Especialidade = ´Pediatria´ (MÉDICO) Cod_Medico, Nome, idade ( Especialidade = ´Pediatria´ (MÉDICO)) Álgebra Relacional Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M4 Carla Pediatria 30 Cod_Medico Nome Idade M1 Luis Carlos 35 M4 Carla 30 194 ⚫ União ( ) ⚫ Operação da teoria dos conjuntos; ⚫ Realiza a união de duas relações, selecionando as tuplas que aparecem em uma ou ambas as relações; ⚫ As duas relações precisam ser compatíveis para a união, ou seja: ⚫ mesmo número de colunas; ⚫ colunas correspondentes com o mesmo tipo; relação1 relação2 Álgebra Relacional 195 ⚫ União - relação1 relação2 Exemplo: Considere a tabela MÉDICO Considere a tabela CONSULTA Álgebra Relacional Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 196 ⚫ União - relação1 relação2 Exemplo: Deseja-se obter o código dos médicos que são pediatras e dos médicos que têm consulta marcada no dia 14/05/2015 Cod_Medico ( Especialidade = ´Pediatria´ (MÉDICO)) Cod_Medico ( Data_Cons = ´14/05/2015´ (CONSULTA)) Álgebra Relacional Cod_Medico M1 M4 Cod_Medico M1 M2 197 ⚫ União - relação1 relação2 Exemplo: Deseja-se obter o código dos médicos que são pediatras e dos médicos que têm consulta marcada no dia 14/05/2015 Cod_Medico ( Especialidade = ´Pediatria´ (MÉDICO)) U Cod_Medico ( Data_Cons = ´14/05/2015´ (CONSULTA)) U = Álgebra Relacional Cod_Medico M1 M4 Cod_Medico M1 M2 Cod_Medico M1 M2 M4 198 ⚫ Interseção () ⚫ Operação da teoria dos conjuntos; ⚫ Realiza a interseção de duas relações, selecionando as tuplas que aparecem em ambas as relações; ⚫ As duas relações precisam ser compatíveis para a interseção, ou seja: ⚫ mesmo número de colunas; ⚫ colunas correspondentes com o mesmo tipo; relação1 relação2 Álgebra Relacional 199 ⚫ Interseção - relação1 relação2 Exemplo: Deseja-se obter o código dos médicos que são pediatras e que têm consulta marcada no dia 14/05/2015 Cod_Medico ( Especialidade = ´Pediatria´ (MÉDICO)) Cod_Medico ( Data_Cons = ´14/05/2015´ (CONSULTA)) = Álgebra Relacional Cod_Medico M1 M4 Cod_Medico M1 M2 Cod_Medico M1 200 ⚫ Diferença ( – ) ⚫ Operação da teoria dos conjuntos; ⚫ Realiza a diferença entre duas relações, selecionando as tuplas que aparecem em uma relação mas não em outra; ⚫ As duas relações precisam ser compatíveis para a diferença, ou seja: ⚫ mesmo número de colunas; ⚫ colunas correspondentes com o mesmo tipo; relação1 – relação2 : seleção de tuplas que existem em relação1 e não existem em relação 2 relação2 – relação1 : seleção de tuplas que existem em relação2 e não existem em relação 1 Álgebra Relacional 201 ⚫ Diferença ( – ) Exemplo: Deseja-se obter o código dos médicos que são pediatras e que não têm nenhuma consulta marcada. Cod_Medico ( Especialidade = ´Pediatria´ (MÉDICO)) – Cod_Medico (CONSULTA) – = Álgebra Relacional Cod_Medico M1 M2 M4 Cod_Medico M1 M2 NULL 202 ⚫ Diferença ( – ) Exemplo: Deseja-se obter o código dos médicos que têm consultas marcadas e que não são pediatras. Cod_Medico (CONSULTA) – Cod_Medico ( Especialidade = ´Pediatria´ (MÉDICO)) – = Álgebra Relacional Cod_Medico M1 M2 M4 Cod_Medico M1 M2 Cod_Medico M4 203 ⚫ Produto Cartesiano ( Relação1 X Relação2 ) ⚫ Operação da teoria dos conjuntos; ⚫ Realiza a combinação entre duas relações quaisquer; ⚫ Concatena cada tupla da relação 1 com todas as tuplas da relação 2. Relação1 X Relação2 Relação 1 Relação 2 Relação Resultante A C AC B D AD E AE BC .... Álgebra Relacional 204 ⚫ Produto Cartesiano ( Relação1 X Relação2 ) Exemplo: Concatenar PACIENTE e CONSULTA PACIENTE X CONSULTA Álgebra Relacional Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 Codigo Nome P1 Cláudia P2 Augusto P3 Rosane P4 Alfredo 205 ⚫ Produto Cartesiano (PACIENTE X CONSULTA) Álgebra Relacional Codigo Nome P1 Cláudia P2 Augusto P3 Rosane P4 Alfredo P1 Cláudia P2 Augusto P3 Rosane P4 Alfredo P1 Cláudia P2 Augusto P3 Rosane P4 Alfredo P1 Cláudia P2 Augusto P3 Rosane P4 Alfredo Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M1 P1 14/05/2015 13:05 M1 P1 14/05/2015 13:05 M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M2 P1 14/05/2015 12:18 M2 P1 14/05/2015 12:18 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M1 P2 10/04/2015 14:20 M1 P2 10/04/2015 14:20 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 M4 P3 12/04/2015 13:30 M4 P3 12/04/2015 13:30 M4 P3 12/04/2015 13:30 206 ⚫ Produto Cartesiano (PACIENTE X CONSULTA) Exemplo: Apenas as relações em que os pacientes, nas duas relações, coincidam PACIENTE.Codigo = CONSULTA.Cod_Paciente (PACIENTE X CONSULTA) Álgebra Relacional Codigo Nome P1 Cláudia P1 Cláudia P2 Augusto P3 Rosane Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 207 ⚫ Produto Cartesiano (PACIENTE X CONSULTA) Exemplo: Apenas as relações associadas ao Médico M1 Cod_Medico = ´M1´ ( PACIENTE.Codigo = CONSULTA.Cod_Paciente (PACIENTE X CONSULTA) ) Álgebra Relacional Codigo Nome P1 Cláudia P2 Augusto Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M1 P2 10/04/2015 14:20 208 ⚫ Produto Cartesiano (PACIENTE X CONSULTA) Exemplo: Finalmente, se não quisermos repetir os códigos dos pacientes, podemos fazer uma projeção. Cod_Medico, Cod_Paciente,Nome, Data_Cons, Hora ( Cod_Medico = ´M1´ ( PACIENTE.Codigo = CONSULTA.Cod_Paciente (PACIENTE X CONSULTA) ) ) Álgebra Relacional Hora 13:05 14:20 Cod_Medico Cod_Paciente Nome Data-Cons M1 P1 Cláudia 14/05/2015 M1 P2 Augusto 10/04/2015 209 ⚫ Produto Cartesiano (MÉDICO X CONSULTA ) Exemplo: Mostrar os nomes dos Médicos que têm consulta com o paciente P1, juntamente com sua especialidade, a data da consulta e a hora da consulta CONSULTA MÉDICO Álgebra Relacional Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 210 ⚫ Produto Cartesiano (MÉDICO X CONSULTA ) Álgebra Relacional Nome, Especialidade, Data_Cons, Hora ( MÉDICO.Cod_Medico = CONSULTA.Cod_Medico (CONSULTA X MÉDICO) ) ) ( Cod_Paciente = ´P1´ 211 ⚫ Produto Cartesiano (CONSULTA X MÉDICO) Álgebra Relacional Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M1 P1 14/05/2015 13:05 M1 P1 14/05/2015 13:05 M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M2 P1 14/05/2015 12:18 M2 P1 14/05/2015 12:18 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M1 P2 10/04/2015 14:20 M1 P2 10/04/2015 14:20 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 M4 P3 12/04/2015 13:30 M4 P3 12/04/2015 13:30 M4 P3 12/04/2015 13:30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 ( MÉDICO.Cod_Medico = CONSULTA.Cod_Medico (CONSULTA X MÉDICO) ) ) 212 ⚫ Produto Cartesiano (MÉDICO X CONSULTA ) Álgebra Relacional ( MÉDICO.Cod_Medico = CONSULTA.Cod_Medico (CONSULTA X MÉDICO) ) ) Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M1 Luis Carlos Pediatria 35 M4 Carla Pediatria 30 213 ⚫ Produto Cartesiano (MÉDICO X CONSULTA ) Álgebra Relacional Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 ( Cod_Paciente = ´P1´ Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M1 Luis Carlos Pediatria 35 M4 Carla Pediatria 30 214 ⚫ Produto Cartesiano (MÉDICO X CONSULTA ) Álgebra Relacional Nome, Especialidade, Data_Cons, Hora Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 Data-Cons Hora 14/05/2015 13:05 14/05/2015 12:18 Nome Especialidade Luis Carlos Pediatria Ana Maria Cardiologia 215 ⚫ Junção ou Junção Natural ( ) ⚫ Operação relacional binária; ⚫ Produz uma relação em que as tuplas relacionadas de duas relações aparecem combinadas em uma única tupla; ⚫ Eqüivale à seqüência de operações: ⚫ produto Cartesiano da Relação1 e Relação2; ⚫ seleção da condição para a junção condição de junção (relação1 relação2) relação1 condição de junção relação2 Álgebra Relacional 216 ⚫ Junção Mostrar os nomes dos Médicos que têm consulta , juntamente com o codigo do paciente, a data e a hora da consulta CONSULTA MÉDICO Álgebra Relacional Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 217 ⚫ Produto Cartesiano ⚫ Junção Álgebra Relacional Nome, Cod_Paciente, Data_Cons, Hora ( MÉDICO.Cod_Medico = CONSULTA.Cod_Medico (CONSULTA X MÉDICO) ) IMPORTANTE: Para isso, os nomes dos atributos devem ser iguais nas duas relações Nome, Cod_Paciente, Data_Cons, Hora (CONSULTA MÉDICO) ) 218 ⚫ Junção Externa ⚫ Garante que todas as linhas de uma das tabelas de junção apareçam no resultado, mesmo sem satisfazer a condição de junção. ⚫ Podem ser: ⚫ Junção Externa Esquerda : linhas à esquerda do operador join aparecem na relação resultante - ⚫ Junção Externa Direita : linhas à direita do operador join aparecem na relação resultante - Álgebra Relacional 219 ⚫ Vejamos o exemplo anterior Mostrar os nomes dos Médicos que têm consulta , juntamente com o codigo do paciente, a data e a hora da consulta CONSULTA MÉDICO Álgebra Relacional Cod_Medico Cod_Paciente Data-Cons Hora M1 P1 14/05/2015 13:05 M2 P1 14/05/2015 12:18 M1 P2 10/04/2015 14:20 M4 P3 12/04/2015 13:30 Cod_Medico Nome Especialidade Idade M1 Luis Carlos Pediatria 35 M2 Ana Maria Cardiologia 28 M3 João Pedro Oftalmologia 42 M4 Carla Pediatria 30 220 ⚫ Junção Natural - Álgebra Relacional Nome, Cod_Paciente, Data_Cons, Hora (CONSULTA MÉDICO) ) Nome Cod_Paciente Data-Cons Hora Luis Carlos P1 14/05/2015 13:05 Ana Maria P1 14/05/2015 12:18 Luis Carlos P2 10/04/2015 14:20 Carla P3 12/04/2015 13:30 221 ⚫ Junção Externa Direita - ⚫ Mostrar todas os médicos existentes na relação MÉDICO, mesmo que não exista uma consulta associada ao mesmo na relação CONSULTA Álgebra Relacional Nome, Cod_Paciente, Data_Cons, Hora (CONSULTA MÉDICO) ) Nome Cod_Paciente Data-Cons Hora Luis Carlos P1 14/05/2015 13:05 Ana Maria P1 14/05/2015 12:18 Luis Carlos P2 10/04/2015 14:20 Carla P3 12/04/2015 13:30 João Pedro <nulo> <nulo> <nulo> 222 ⚫ Junção Externa Esquerda - ⚫ Mostrar todas as consultas existentes na relação CONSULTA, mesmo que não exista um médico associado na relação MÉDICO Álgebra Relacional Nome, Cod_Paciente, Data_Cons, Hora (CONSULTA MÉDICO) ) Nome Cod_Paciente Data-Cons Hora Luis Carlos P1 14/05/2015 13:05 Ana Maria P1 14/05/2015 12:18 Luis Carlos P2 10/04/2015 14:20 Carla P3 12/04/2015 13:30 Neste caso, equivalente à junção natural 223
Compartilhar