UCSal – Bacharelado em Informática Banco de Dados Profa. Semíramis Assis 2015.2 Modelo Conceitual Primeira etapa no processo de modelagem, consiste em identificar as entidades (tabelas) e seus atributos (campos). Para representação, se identifica as ações entre as entidades. Objetiva conter todas as informações do mundo real que serão armazenadas em banco. Modelo Conceitual Exemplo: Cadastro de Fornecedor Cadastro de Produtos Campos: nome completo, tipo de pessoa (física/jurídica), endereço, bairro, cidade, estado, cep, telefone, e-mail, nome contato. Campos: código do produto, nome do produto, modelo, unidade de medida, preço de compra, preço de venda, estoque mínimo, estoque máximo, estoque atual, data da última compra. Cadastro de Pedidos Campos: código do produto, quantidade, código do cliente, código do vendedor. Modelo Lógico Segunda parte do processo de modelagem, compreende a descrição das estruturas que serão armazenadas no banco e resulta na representação dos dados de uma maneira lógica. Nesta etapa é definida a abordagem que será utilizada: hierárquica, de rede ou relacional. Exercícios Álgebra Relacional Inclui operadores para as operações básicas sobre conjuntos: Restrição (seleção); Projeção; Junção; Divisão. Cabeçalho resultante pode ter ambiguidades – Importância da utilização de alias. É possível aninhar diversas operações em uma mesma query. Utilização de subqueries para auxílio nas operações com álgebra relacional. Álgebra Relacional As oito operações relacionais. Álgebra Relacional Alias ou rename de campos do cabeçalho: O conjunto de saída resultante irá ter o nome de um ou mais campos alterados, evitando ambiguidade. Exemplo: Nomes das colunas alterados Select p.codigo as codigo_produto, f.codigo as codigo_fornecedor from produto p, fornecedor f WHERE <condicoes>. Alias das tabelas Álgebra Relacional Sintaxe completa de uma query SQL. União Representa a união de todos os dados dos conjuntos envolvidos. Em Sql, representa a união de todas as tuplas resultantes de consultas distintas. Precisa ter o mesmo tipo de dados e quantidade de campos em ambas consultas. União Resultado: União: Resultado: Resultado: Interseção Assim como na operação de União, exige que os campos sejam do mesmo tipo. Exibe como resultado as tuplas que sejam iguais no conjunto A e no B. Oracle suporta comando INTERSECT. No MySql, é preciso utilizar comandos de junção para obter o mesmo resultado. Interseção No MySql: Resultado: Aluno Disciplina Diferença Também exige que os campos sejam do mesmo tipo nas duas relações; O resultado são todas as tuplas T tais que T apareça em A e não apareça em B; O Oracle dá suporte ao comando MINUS, porém o MySql não suporta, devendo utilizar subqueries para o mesmo resultado. Diferença No MySql: Resultado: Aluno Disciplina Produto É o produto cartesiano resultante dos pares ordenados de tuplas, ou seja, a união de todos os campos da tabela A com todos os campos da tabela B e assim sucessivamente, caso existam outras tabelas. Produto Como resultado da execução da query abaixo: Temos o produto cartesiano: Restrição Representa o conjunto de tuplas resultantes da avaliação das condições presentes na cláusula WHERE. As condições após a cláusula WHERE representam o predicado da relação. Restrição Query: Resultado: Outro exemplo: Resultado: Projeção Representa o cabeçalho das tabelas envolvidas na consulta, removendo todos os campos não mencionados. Produz um subconjunto vertical de determinada relação, obtido pela remoção de todos os atributos não mencionados após a palavra SELECT. Projeção Query: Projeção Resultado: Outro exemplo: Projeção Restrição Resultado: Junção Representa a união dos campos das tabelas envolvidas na relação, de modo a não ter nenhuma repetição nos nomes dos campos, evitando a ambiguidade. Utilização do alias (ou rename); Representado pela operação JOIN. Junção Join / Inner Join / Cross Join – São expressões equivalentes no MySql, resultando nas tuplas que satisfaçam a condição na cláusula ON. Left Join – Resulta em todas as tuplas de A e sua equivalência (ou não) nas tuplas de B; Right Join – Resulta em todas as tuplas de B e sua equivalência (ou não) nas tuplas de A. Junção Para o cenário abaixo: Aluno Disciplina Divisão A divisão entre X e Y terá como resultado todos os valores de um atributo de X que fazem referência a todos os valores de um atributo de Y. Muito comum em consultas que incluam a “busca por todos” ou “em todos”. Divisão Exemplo: Buscar por todos os alunos que estão matriculados em todas as disciplinas. Aluno Disciplina Aluno_Disciplina Divisão Selecionando todos os alunos que estão matriculados em todas as disciplinas: Resultado: Agrupamento e Ordenação Group By Agrupa o resultado pelo(s) campo(s) indicado(s); É necessário que o(s) campo(s) esteja(m) no cabeçalho da relação. Order By Ordena o resultado pelo(s) campo(s) determinado(s); Pode ser: Asc - Ascendente Desc - Descendente Agrupamento e Ordenação Agrupamento e Ordenação Soma, Contagem e Funções Aritméticas Sum Count Min Retorna a média de um campo inteiro ou numérico. Retorna o menor valor de um campo inteiro ou numérico. Max Conta a quantidade de campos ou tuplas que atendem às restrições do predicado. AVG Totaliza campos inteiros ou numéricos. All Retorna o maior valor de um campo inteiro ou numérico. Retorna todos os valores do campo solicitado. Soma, Contagem e Funções Aritméticas Dúvidas?