Banco de Dados

826 visualizações

Publicada em

Notas de aulas da disciplina de Banco de Dados ministrada no curso Superior em Tecnologia de Jogos Digitais da PUC Campinas

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
826
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
33
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Banco de Dados

  1. 1. Banco de Dados Superior em Tecnologia de Jogos Digitais Daniel Paz de Araújo professor@danielpaz.net
  2. 2. Introdução e conceitos gerais
  3. 3. O que é um banco de dados Em essência, um sistema de bancos de dados é apenas um sistema computadorizado de armazenamento de registros. O banco de dados pode, ele próprio, ser visto como o equivalente eletrônico de um armário de arquivamento. Em outras palavras, é um repositório ou recipiente para uma coleção de arquivos de dados computadorizados.
  4. 4. Operações Os usuários do sistema poderão executar diversas operações sobre tais arquivos —por exemplo: ●Acrescentar novos arquivos, vazios, ao banco de dados. ●Inserir novos dados em arquivos existentes. ●Buscar dados de arquivos existentes. ●Alterar dados em arquivos existentes. ●Eliminar dados de arquivos existentes. ●Remover arquivos existentes do banco de dados.
  5. 5. Sistemas de Banco de Dados Os sistemas de bancos de dados estão disponíveis em máquinas que vão desde micros (portáteis) até computadores de grande porte. Sistemas em grandes equipamentos (“sistemas grandes”) tendem a ser multiusuários (de usuários múltiplos), ao passo que os sistemas de máquinas menores (“sistemas pequenos”) tendem a ser de usuário único (monousuário).
  6. 6. Sistemas de Banco de Dados Um sistema de monousuário é um sistema em que no máximo um usuário pode ter acesso ao banco de dados em qualquer instante determinado; um sistema multiusuário é um sistema em que muitos usuários podem obter acesso ao banco de dados ao mesmo tempo.
  7. 7. SGBD Entre o banco de dados físico —isto é, os dados de fato armazenados —e os usuários do sistema há uma camada de software, conhecida como o gerenciador do banco de dados ou servidor de banco de dados ou ainda, com maior frequência, sistema de gerenciamento de bancos de dados (SGBD).
  8. 8. SGBD O SGBD é de longe o componente de software mais importante de todo o sistema, mas não é o único. Outros componentes incluem utilitários, ferramentas para desenvolvimento de aplicações, auxílio em projetos, geradores de relatórios e o gerenciador de transações ou monitor de TP (transaction processing - processamento de transações). O termo SGBD também costuma se referir genericamente a algum produto particular de algum fornecedor particular.
  9. 9. Usuáriosprogramadoresde aplicações Responsáveis pela elaboração de programas aplicativos de bancos de dados. Tais programas obtêm acesso ao banco de dados emitindo a solicitação apropriada —em geral, uma instrução de SQL —ao SGBD.
  10. 10. Usuários finais Interagem com o sistema a partir de terminais ou estações de trabalho on-line. Pode obter acesso ao banco de dados por meio de aplicações, ou pode usar uma interface fornecida como parte integrante do software do sistema de bancos de dados.
  11. 11. UsuáriosAdministradoresde BD Responsável pela organização do sistema de modo a obter o desempenho que seja “o melhor para a empresa”.
  12. 12. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  13. 13. Arquitetura de Banco de Dados
  14. 14. Níveis Nível interno(também conhecido como nível físico) é o mais próximo do meio de armazenamento físico —ou seja, é aquele que se ocupa do modo como os dados são fisicamente armazenados.
  15. 15. Níveis Nível externo(também conhecido como nível lógico do usuário) é o mais próximo dos usuários —ou seja, é aquele que se ocupa do modo como os dados são vistos por usuários individuais.
  16. 16. Níveis Nível conceitual(também conhecido como nível lógico comunitário, ou às vezes apenas nível indireto, sem qualificação) é um nível de “simulação” entre os outros dois.
  17. 17. Níveis O nível externo se preocupa com as percepções dos usuários individuais, enquanto o nível conceitualestá preocupado com uma percepção da comunidadede usuários. A maioria dos usuários não estará interessada em todo o banco de dados, mas somente em alguma porção restrita do banco de dados. ●Nível externo:visões de usuários individuais ●Nível conceitual:visão da comunidade de usuários ●Nível interno:visão do meio de armazenamento
  18. 18. Mapeamento Além dos três níveis básicos, a arquitetura envolve, em geral, certos mapeamentos —um mapeamento conceitual interno e vários mapeamentos externos/conceituais. O mapeamento conceitual internodefine a correspondência entre a visão conceituale o banco de dados armazenado; ele especifica o modo como os registros e campos conceituais são representados no nível interno.
  19. 19. SGBD O sistemade gerenciamentode bancosde dados (SGBD) é o software quetratade todoo acessoaobanco de dados: 1.Um usuáriofazum pedidode acessousandoumadeterminadasublinguagemde dados (emgeral,SQL). 2.O SGBD interceptao pedidoe o analisa. 3.O SGBD inspeciona, porsuavez, o esquemaexterno(ouas versõesobjetodesseesquema) para esseusuário, o mapeamentoexterno/conceitualcorrespondente, o esquemaconceitual, o mapeamentoconceitual/internoe a definiçãoda estruturade armazenamento. 4.O SGBD executaas operaçõesnecessáriassobreo banco de dados armazenado.
  20. 20. SGBD O SGBD devesercapazde lidarcom solicitaçõesdo usuáriopara buscar, atualizarouexcluirdados existentesno banco de dados, oupara acrescentarnovosdados aobanco de dados. Em outraspalavras, o SGBD deveincluirum componenteprocessadorde DML oucompiladorde DML para lidarcom a linguagemde manipulaçãode dados (DML —data manipulation language).
  21. 21. Comunicação de Dados As requisições a bancos de dados de um usuário final são, na verdade, transmitidas do usuário —que pode estar fisicamente afastado do próprio sistema de banco de dados, e daí até o SGBD, sob a forma de mensagens de comunicação. De modo semelhante, as respostas do SGBD e da aplicação on-line para o usuário também são transmitidas sob a forma de mensagens.
  22. 22. Comunicação de Dados Todas essas transmissões de mensagens têm lugar sob o controle de outro componente de software, o gerenciador de comunicações de dados (gerenciador DC —Data Communications).
  23. 23. Comunicação de Dados O gerenciador DC não faz parte do SGBD, mas é um sistema autônomo. Porém, como o gerenciador DC e o SGBD são claramente obrigados a trabalhar em harmonia, às vezes os dois são considerados parceiros de igual nível em um empreendimento cooperativo de nível mais alto, denominado sistema de banco de dados / comunicações de dados (sistema DB/DC), no qual o SGBD toma conta do banco de dados e o gerenciador DC manipula todas as mensagens de e para o SGBD ou, mais precisamente, de e para aplicações que utilizam o SGBD.
  24. 24. Arquitetura Cliente/Servidor Osclientessão as diversas aplicações executadas sobre o SGBD —tanto aplicações escritas por usuários quanto aplicações internas, ou seja, aplicações fornecidas pelo fabricante do SGBD ou por produtores independentes. O servidor é o próprio SGBD. Ele admite todas as funções básicas de SGBDs: definição de dados, manipulação de dados, segurança e integridade de dados, e assim por diante. Em particular, ele oferece todo o suporte de nível externo, conceitual e interno. Assim, o termo “servidor” neste contexto é tão- somente um outro nome para o SGBD.
  25. 25. Ferramentas fornecidas pelo fabricante ●Processadores de linguagem de consulta. ●Geradores de relatórios. ●Subsistemas gráficos de negócios. ●Planilhas eletrônicas. ●Processadores de linguagem natural. ●Pacotes estatísticos.
  26. 26. Ferramentas fornecidas pelo fabricante ●Ferramentas para gerenciamento de cópias ou “extração de dados”. ●Geradores de aplicações. ●Outras ferramentas para desenvolvimento de aplicações, inclusive produtos de engenharia de software auxiliada pelo computador (CASE — computer-aided software engineering).
  27. 27. Dicionário de Dados Muitas organizações usam sistemas de dicionário de dados ou repositórios de informação, mini SGBDs que administram metadados —isto é, dados que descrevem a estrutura dos dados, suas restrições, suas aplicações, suas autorizações, e assim por diante. Eles são usados frequentemente como ferramenta integrante para administração dos recursos de informação.
  28. 28. Dicionário de Dados Um sistema de dicionário de dados útil devearmazenar e administrar os seguintes tipos de informação: ●Descrição dos esquemas do sistema de banco de dados. ●Informação detalhada do projeto de banco de dados físico, como estruturas de armazenamento, caminhos deacesso e tamanhos de arquivo e registro. ●Descrições dos usuários do banco de dados, suas responsabilidades e autoridade de acesso.
  29. 29. Dicionário de Dados ●Descrições em alto nível das transações do banco de dados, das aplicações e dos relacionamentos entre usuários etransações. ●Relacionamento entre as transações do banco de dados e os itens de dados referenciados por elas. É útil para determinar quais transações são afetadas quando definições de dados forem alteradas. ●Estatísticas de uso, como freqüências de consultas e transações, bem como volume de acesso a uma dada porçãode dados.
  30. 30. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999. ELMASRI R., NAVATHE S.: Sistemas de Banco de Dados. São Paulo: Person, 2005
  31. 31. Modelos e Linguagens de Banco de Dados
  32. 32. Modelos de Dados Coleção de ferramentas conceituais para descrever dados, relações de dados, semântica de dados e restrições de consistência. Oferece uma maneira de descrever o projeto de um banco de dados no nivel físico, lógico e conceitual.
  33. 33. Modelo Relacional ●Usa uma coleção de tabelas para representar os dados e as relações entre eles. ●Cada tabela possui diversas colunas, e cada coluna possui um nome único. ●Cada tabela contém registros de um tipo específico. ●Cada tipo de registro define um número fixo de campos, ou atributos.
  34. 34. Modelo de Entidade / Relacionamento ●As colunas da tabela correspondem aos atributos do tipo de registro. ●É baseado em uma percepção de um mundo real que consiste em uma coleção de objetos básicos, chamadosentidades, e asrelaçõesentre esses objetos. ●Uma entidade é uma "coisa" ou "objeto" no mundo real que é distinguível dos outros objetos.
  35. 35. Modelo de Dados Baseado em Objeto ●Pode ser visto como uma extensão do modelo Entidade Relacionamento com noções de encapsulamento, métodos (funções) e identidade de objeto. ●Combina recursos do modelo de dados orientado a objeto e do modelo de dados relacional.
  36. 36. Modelo de Dados Semi-Estruturado ●Permite a especificação dos dados em que itens de dados individuais do mesmo tipo possam ser diferentes conjuntos de atributos. ●É o oposto dos modelos de dados mencionados anteriormente, em que todos os itens de dados de um determinado tipo precisam ter o mesmo conjunto de atributos. ●A Extensible Markup Language (XML) é amplamente usada para representar dados semi-estruturados.
  37. 37. Linguagens de Banco de Dados ●Um sistema de banco de dados fornece uma linguagem de definição de dadosparaespecificar o esquema de banco de dados e umalinguagem de manipulação de dadospara expressar as consultas e atualizações de banco de dados. ●As linguagens de definição de dados e de manipulação de dados não são duas linguagens separadas, mas simplesmente formam partes de uma única linguagem de banco de dados, como a amplamente usada linguagem SQL.
  38. 38. Linguagem de Manipulação de Dados Umalinguagem de manipulação de dados (DML) permite aos usuáriso acessar ou manipular dados conforme são organizados pelo modelo de dados apropriados. Os tipos de acesso são: ●Recuperação de informações armazenadas no banco de dados ●Inserção de novas informações no banco de dados ●Exclusão de informações do banco de dados ●Modificação de informações armazenadas no banco de dados
  39. 39. Linguagem de Definição de Dados Especificamos a estrutura de armazenamento e métodos de acesso usados pelo sistema de banco de dados por um conjunto de instruções em um tipo especial delinguagem de definição de dados -DDL. ●Restrições de domínio: possíveis valores que podem ser associados com cada atributo ●Integridade referencial: garantir que um valor que aparece em uma relação também apareça para um certo conjunto de atributos em outra relação
  40. 40. Linguagem de Definição de Dados ●Assertivas: qualquer condição que o banco de dados sempre precisa satisfazer ●Autorização: diferenciar entre usuários e tipos de acesso que podem realizar
  41. 41. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  42. 42. MER: Modelo de Entidade / Relacionamento
  43. 43. MER O modelo de dados de entidade/relacionamento (E-R ou MER) é baseado em uma percepção de um mundo real que consiste em uma coleção de objetos básicos, chamadosentidades,e derelaçõesentre esses objetos.
  44. 44. MER Uma entidade é uma "coisa" ou "objeto" no mundo real que é distinguível de outros objetos. As entidades são descritas em um banco de dados por um conjunto deatributosque as caracterizam e/ou identificam. Uma relação é uma associação entre várias entidades.
  45. 45. MER A estrutura lógica geral (esquema) de um banco de dados pode ser expressa graficamente por um diagrama E-R, constituído dos seguintes componentes: ●Retângulos,que representam conjuntos de entidade ●Elipses, que representam atributos. ●Losangos, que representam conjuntos de relações entre um membro de cada um dos vários conjuntos de entidade. ●Linhas, que ligam atributos a conjuntos de entidade e conjuntos de entidade e relações.
  46. 46. MER -Exemplo cliente conta depositante saldo n. conta id cliente nome cliente rua cliente cidade cliente
  47. 47. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  48. 48. Cardinalidade
  49. 49. Cardinalidade As cardinalidades de mapeamento, ou fatores de cadinalidade, expressam o número de entidades ao qual outra entidade pode ser associada por um conjunto de relacionamento. As cardinalidades de mapeamento são uteis principalmente em descrever conjuntos de relacionamento binários, embora possam contribuir para a descrição dos conjuntos de relacionamento que envolvem mais de dois conjuntos de entidades.
  50. 50. Um-para-um Para um conjunto de relacionamento binário R entre conjuntos de entidades A e B, a cardinalidade de mapeamento precisa ser uma das seguintes: ●Um-para-um: uma entidade em A é associada a no máximo uma entidade em B, e uma entidade em B é associada a no máximo uma entidade em A. a1 a2 a3 a4 A b2 b3 b4 B b1
  51. 51. Um-para-um Notação R 1 1 ou R
  52. 52. Um-para-muitos ●Um-para-muitos: Uma entidade em A é associada a qualquer número de entidades (zero ou mais) em B.Entretanto, uma entidade em B pode ser associada a no máximo uma entidade em A. a1 a2 a3 A b2 b3 b4 B b1 b5
  53. 53. Um-para-muitos Notação R 1 * ou R
  54. 54. Muitos-para-um ●Muitos-para-um: uma entidade em A é associada a no máximo uma entidade em B. Entretando, uma entidade em B pode ser associada a qualquer número de entidades (zero ou mais) em A. a1 a2 a3 a4 A b2 b3 b4 B b1
  55. 55. Muitos-para-um Notação R 1 * ou R
  56. 56. Muitos-para-muitos ●Muitos-para-muitos: Uma entidade em A é associada a qualquer número de entidades (zero ou mais) em B, e uma entidade em B pode ser associada a qualquer número de entidades (zero ou mais) em A. a1 a2 a3 A b2 b3 b4 B b1 b5
  57. 57. Muitos-para-muitos Notação R * * ou R
  58. 58. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  59. 59. Chaves
  60. 60. Chaves É preciso ter uma maneira de especificar como os registros dentro de uma determinada relação são distinguidas. Isso é expresso em termos de seus atributos. Os valores de atributos de um registro precisam ser tais que possamidentificar unicamenteo registro. Nenhum par de registros em uma relação pode ter exatamente o mesmo valor para todos os atributos.
  61. 61. Superchave Umasuperchaveé um conjunto de um ou mais atributos que, tomados coletivamente, nos permite identificar unicamente um registro na relação. Por exemplo, o atributo id_cliente da relação clienteé suficiente para dintinguir um registro cliente de outro. Portanto, id_cliente é uma superchave. Da mesma forma, a combinação nome_cliente e id_cliente é uma superchave para a relação cliente. O atributo nome_cliente de cliente não é uma superchave porque várias pessoas poderiam ter o mesmo nome.
  62. 62. Exemplo id_cliente nome_cliente 1 José da Silva 2 Maria Antônia 3 João Pereira 4 José da Silva
  63. 63. Chaves candidatas Normalmente, o que nos interessa são superchaves para as quais nenhum subconjunto apropriado é uma superchave. Essas superchaves mínimas são chamadas chaves canditadas. É possível que vários conjuntos diferentes de atributos sirvam como uma chave candidata.
  64. 64. Chaves candidatas Embora os atributos id_cliente e nome_cliente juntos possam distinguir registros cliente, sua combinação não forma uma chave candidata, já que o atributo id_clientesozinho é uma chave candidata.
  65. 65. Chave Primária O termochave primáriadenota uma chave candidata que é escolhida pelo projetista de banco de dados como o principal meio de identificar registros dentro de uma relação. Uma chave (seja primária, candidata ou superchave) é uma propriedade da relação inteira, e não dos registros individuais.
  66. 66. Chave Primária Nenhum par de registros na relação pode ter o mesmo valor nos atributos de chave ao mesmo tempo. A chave primária deve ser escolhida de modo que seus valores de atributo nunca, ou muito raramente, sejam modificados.
  67. 67. Chave Estrangeira Um esquema de relação, digamos, R1, pode incluir entre sues atributos a chave primária de outro esquema de relação, digamos R2. Esse atributo é chamado dechave estrangeiradeR1 referenciando R2. A relação R1 é chamada derelação referenciadorada dependência da chave estrangeira, e R2 é chamada derelação referenciadade chave estrangeira.
  68. 68. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  69. 69. Especialização e Generalização
  70. 70. Especialização Um conjunto de entidades pode incluir subagrupamentos de entidades que sejam, de algum modo, distintas de outras entidades do conjunto. Por exemplo, um conjunto de entidades dentro de um conjunto de entidades pode ter atributos que não são compartilhados por todas as entidades do conjunto de entidades.
  71. 71. Exemplo Como exemplo, considere um conjunto de entidades pessoa, com atributosid_pessoa, nome, rua e cidade. Uma pessoa pode ser subclassificada como: ●cliente ●funcionário
  72. 72. Exemplo Cada um desses tipos de pessoa é descrito por um conjunto de atributos que inclui todos os atributos do conjunto de entidadespessoa,além, possivelmente, de atributos adicionais. Por exemplo, as entidadesclientepodem ser descritas adicionalmente por um atributoavaliação_crédito, enquanto entidadesfuncionáriopodem ser descritas adicionalmente pelo atributo salário.
  73. 73. Representação Em termos de um diagrama Entidade Relacionamento, a especialização é representada por um componente triângulo rotulado ISA, que significa "is a" -é um(a). ISA pessoa id_pessoa nome rua cidade funcionário cliente avaliação_crédito salário
  74. 74. Generalização O refinamento de um conjunto de entidades inicial em sucessivos níveis de subagrupamentos de entidades representa um processo de projeto de cimapara baixo(topdown), em quemúltiplosconjuntos de entidade são sintetizados em um conjunto de entidades de nível superior na base dos recursos comuns. Conjuntos de entidades de nível superior e inferior também podem ser designados pelos termos superclasseesubclasse, respectivamente. Para todos os fins práticos, a generalização é uma simples inversão da especialização.
  75. 75. Especialização e Generalização ISA pessoa id_pessoa nome rua cidade funcionário cliente avaliação_ crédito salário ISA caixa secretária diretor numero_ diretor numero_ caixa horas_ semanais horas_ semanais
  76. 76. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  77. 77. Normatização
  78. 78. Normatização O conceito de normalização foi introduzido por E. F. Codd em 1970 (primeira forma normal). Esta técnica é um processo matemático formal, que tem seus fundamentos na teoria dos conjuntos. Através deste processo pode-se, gradativamente, substituir um conjunto de entidades e relacionamentos por um outro, o qual se apresenta "purificado" em relação às anomalias de atualização (inclusão, alteração e exclusão) as quais podem causar certos problemas, tais como:
  79. 79. Normatização ●grupos repetitivos de dados, ●dependências parciais em relação a uma chave concatenada, ●redundâncias de dados desnecessárias, ●perdas acidentais de informação, ●dificuldade na representação de fatos da realidade observada e ●dependências transitivas entre atributos.
  80. 80. Primeira Forma Normal -1FN Cada ocorrência da chave primária deve corresponder a uma e somente uma informação de cada atributo, ou seja, a entidade não deve conter grupos repetitivos (multivalorados). Para se obter entidades na 1FN, é necessário decompor cada entidade não normalizada em tantas entidades quanto for o número de conjuntos de atributos repetitivos.
  81. 81. Primeira Forma Normal -1FN Nas novas entidades criadas, a chave primária é a concatenação da chave primária da entidade original mais o(s) atributo(s) do grupo repetitivo visualizado(s) como chave primária deste grupo.
  82. 82. Variação Temporal e Histórico Observamos que normalmente, ao se definir um ambiente de armazenamento de dados, seja ele um banco de dados ou não, geralmente mantém a última informação cadastrada, que às vezes, por sua própria natureza, possui um histórico de ocorrências. Mas como a atualização sempre feita sobre esta última informação, perdem-se totalmente os dados passados.
  83. 83. Variação Temporal e Histórico Toda vez que a decisão de armazenar o histórico de algum atributo tomada, cria-se explicitamente um relacionamento de um para muitos entre a entidade que contém o atributo e a entidade criada para contei histórico deste atributo. Passa a existir então uma entidade depender contendo (no mínimo) toda data em que houve alguma alteração do atributo bem como o respectivo valor do atributo para cada alteração. A chave de entidade de histórico será concatenada, e um de seus atributos será a data referência.
  84. 84. Dependência Funcional Dada uma entidade qualquer, dizemos que um atributo ou conjunto de atributos A é dependente funcional de um outro atributo B contido na mesma entidade, se a cada valor de B existir nas linhas da entidade em que aparece, um único valor de A. Em outras palavras, A depende funcionalmente de B. Exemplo: Na entidade PEDIDO, o atributo PRAZO-DE- ENTREGA depende funcionalmente de NUMERO-DO- PEDIDO.
  85. 85. Dependência Funcional Total e Parcial Na ocorrência de uma chave primária concatenada, dizemos que um atributo ou conjunto de atributos depende de forma completa ou total desta chave primária concatenada, se e somente se, a cada valor da chave (e não parte dela), está associado um valor para cada atributo, ou seja, um atributo não (dependência parcial) se apresenta com dependência completa ou total quando só dependente de parte da chave primária concatenada e não dela como um todo.
  86. 86. Dependência Funcional Total e Parcial A dependência total ou completa só ocorre quando a chave primária for composta por vários (concatenados) atributos, ou seja, em uma entidade de chave primária composta de um único atributo não ocorre este tipo de dependência.
  87. 87. Dependência Funcional Transitiva Quando um atributo ou conjunto de atributos A depende de outro atributo B que não pertence à chave primária, mas é dependente funcional desta, dizemos que A é dependente transitivo de B. Exemplo: dependência transitiva -Na entidade PEDIDO, os atributos ENDEREÇO, CIDADE, UF, CGC e INSCRIÇÃO- ESTADUAL são dependentes transitivos do atributo CLIENTE. Nesta mesma entidade, o atributo NOME-DO-VENDEDOR é dependente transitivo do atributo CODIGO-DO-VENDEDOR.
  88. 88. Segunda Forma Normal -2FN Devemos observar se alguma entidade possui chave primária concatenada, epara aquelas que satisfizerem esta condição, analisar se existe algum atributo ou conjunto de atributos com dependência parcial em relação a algum elemento da chaveprimária concatenada.
  89. 89. Segunda Forma Normal -2FN Com a finalidade de tornar ainda mais estável o modelo de dados, a aplicação da 2FN sobre as entidades em observação geram novas entidades, que herdarão a chave parcial e todos os atributos que dependem desta chave parcial, ou seja, uma entidade para estar na 2FN não pode ter atributos com dependência parcial em relação à chave primária.
  90. 90. Segunda Forma Normal -2FN Exemplo: A entidade ITEM-DO-PEDIDO apresenta uma chave primáriaconcatenada e por observação, notamos que os atributos UNIDADE-DO-PRODUTO, DESCRIÇÃO- DO-PRODUTO e VALOR-UNITARIO dependem de forma parcial do atributo CODIGO-DO-PRODUTO, que faz parte da chave Primária. Logo devemos aplicar a 2FN sobre esta entidade.
  91. 91. Segunda Forma Normal -2FN Quando aplicamos a 2FN sobre ITEM-DO-PEDIDO, será criada a entidade PRODUTO que herdará os atributos UNIDADE-DO-PRODUTO, DESCRIÇÃO-DO-PRODUTO e VALOR-UNITÁRIO e terá comochave primária o CODIGO-DO-PRODUTO
  92. 92. Terceira Forma Normal -3FN Uma entidade está na 3FN se nenhum de seus atributos possuí dependência transitiva em relação a outro atributo da entidade que não participe da chave primária, ou seja, não exista nenhum atributo intermediário entre a chave primária e o próprio atributo observado. Ao retirarmos a dependência transitiva, devemos criar uma nova entidade que contenha os atributos que dependem transitivamente de outro e a sua chave primária é o atributo que causou esta dependência.
  93. 93. Terceira Forma Normal -3FN Exemplo: Na entidade PEDIDO, podemos observar que o atributo NOME-DO-VENDEDOR depende transitivamente do atributo CODIGO-DO-VENDEDOR quenão pertence à chave primária. Para eliminarmos esta anomalia devemos criar aentidade VENDEDOR, com o atributo NOME-DO- VENDEDOR e tendo como chaveprimária o atributo CODIGO-DO VENDEDOR.
  94. 94. Forma Normal de Boyce Codd -FNBC As definições da 2FN e 3FN, desenvolvidas por Codd, não cobriam certos casos,quando três condições aparecem juntas: ●a entidade tenha várias chaves candidatas; ●estas chaves candidatas sejam concatenadas (mais de umatributo); ●as chaves concatenadas compartilham pelo menos um atributo comum.
  95. 95. Forma Normal de Boyce Codd -FNBC FNBC é uma extensão da 3FN, que não resolvia certas anomalias presentes na informação contida em uma entidade. O problema foi observado porque a 2FN e a 3FN só tratavam dos casos de dependência parcial e transitiva de atributos fora de qualquer chave, porém quando oatributo observado estiver contido em uma chave (primária ou candidata), ele não écaptado pela verificação da 2FN e 3FN.
  96. 96. Forma Normal de Boyce Codd -FNBC A definição da FNBC é a seguinte: uma entidade está na FNBC se e somentese todos os determinantes forem chaves candidatas. Note que esta definição é emtermos de chaves candidatas e não sobre chaves primárias.
  97. 97. Quarta Forma Normal -4FN Às vezes podem surgir problemas com relação a algum atributo não chave, que recebe valores múltiplos para um mesmo valor de chave. Esta nova dependência recebe o nome de dependência multivalorada que existe somente se a entidade contiver no mínimo três atributos.
  98. 98. Quarta Forma Normal -4FN Uma entidade que esteja na 3FN também está na 4FN, se ela não contiver mais do que um fato multivalorado a respeito da entidade descrita. Esta dependência não é o mesmo que uma associação M:N entre atributos, geralmente descrita desta forma em algumas literaturas.
  99. 99. Quinta Forma Normal -5FN A 5FN trata de casos bastante particulares, que ocorrem na modelagem de dados, que são os relacionamentos múltiplos (ternários, quaternários n-ários). Ela fala que um registro está na sua 5FN, quando o conteúdo deste mesmo registro não puder ser reconstruído (junção) a partir de outros registros menores, extraídos deste registro principal. Ou seja, se ao particionar um registro, e sua junção posterior não conseguir recuperar as informações contidas no registro original, então este registro está na 5FN.
  100. 100. Roteiro de Aplicação da Normalização Aplicação da 1FN ●Decompor a entidade em uma ou mais entidades, sem grupos repetitivos; ●Destacar um ou mais atributos como chave primária da(s) nova(s) entidade(s), e este será concatenado com a chave primária da entidade original; ●Estabelecer o relacionamento e a cardinalidade entre a(s) nova(s) entidade(s) gerada(s) e a entidade geradora; ●Verificar a questão da variação temporal de certos atributos e criar relacionamentos 1:N entre a entidade original e a entidade criada por questões de histórico.
  101. 101. Roteiro de Aplicação da Normalização Aplicação da 2FN ●Para entidades que contenham chaves primárias concatenadas, destacar os atributos que tenham dependência parcial em relaçãoà chave primária concatenada; ●Criar uma nova entidade que conterá estes atributos, e que terá comochave primária o(s) atributo(s) do(s) qual(quais) se tenha dependênciaparcial; ●Serão criadas tantas entidades quanto forem os atributos da chaveprimária concatenada, que gerem dependência parcial; ●Estabelecer o relacionamento e a cardinalidade entre a(s) novasentidade(s) gerada(s) e a entidade geradora.
  102. 102. Roteiro de Aplicação da Normalização Aplicação da 3FN ●Verificar se existem atributos que sejam dependentes transitivos de outros que não pertencem à chave primária, sendo ela concatenada ounão, bem como atributos que sejam dependentes de cálculo realizado apartir de outros atributos; ●Destacar os atributos com dependência transitiva, gerando uma novaentidade com este atributo e cuja chave primária é o atributo queoriginou a dependência; ●Eliminar os atributos obtidos através de cálculos realizados a partir deoutros atributos.
  103. 103. Roteiro de Aplicação da Normalização Aplicação da FNBC ●Só aplicável em entidades que possuam chaves primárias e candidatasconcatenadas; ●Verificar se alguma chave candidata concatenada é um determinante, eem caso afirmativo, criar uma entidade com os que dependamfuncionalmente deste determinante e cuja chave primária é o própriodeterminante.
  104. 104. Roteiro de Aplicação da Normalização Aplicação da 4FN ●Para se normalizar em 4FN, a entidade tem que estar (obrigatoriamente)na 3FN; ●Verificar se a entidade possui atributos que não sejam participantes dachave primária e que sejam multivalorados e independentes em relaçãoa um mesmo valor da chave primária; ●Retirar estes atributos não chaves e multivalorados, criandonovas entidades individuais para cada um deles, herdando achave primária da entidade desmembrada.
  105. 105. Roteiro de Aplicação da Normalização Aplicação da 5FN ●Aplicada em elementos que estejam na 4FN; ●A ocorrência deste tipo de forma normal está vinculada aosrelacionamentos múltiplos (ternários, etc.) ou entidades que possuamchave primária concatenada com três ou mais atributos; ●Verificar se é possível reconstruir o conteúdo do elemento original apartir de elementos decompostos desta; ●Se não for possível, o elemento observado não está na 5FN, casocontrário os elementos decompostos representam um elemento na 5FN.
  106. 106. Desnormalização Os novos elementos criados durante a normalização podem trazer prejuízos na hora de serem implementados em um SGDB. Devido as características de construção física de certos bancos de dados, algumas entidades e relacionamentos devem ser desnormalizados para que o SGBD tenha um melhor desempenho. Ao se optar pela desnormalização, deve-se levar em conta o custo daredundância de dados e as anomalias de atualização decorrentes.
  107. 107. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999. MACHADO, F. N. R. e ABREU, M. P.Projeto de Banco de Dados. São Paulo: Érica, 2004.
  108. 108. SQL
  109. 109. SQL O nome "SQL" significa "Structured Query Language" - LinguagemEstruturada de Pesquisa. Sua primeira versão recebeu o nome deSEQUEL ("Structured English Query Language"), sendo definida por D. D.CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa da IBM(Califórnia). Em 1975, foi implementado um protótipo de aplicação dessa novalinguagem.Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e teve seu nomealterado para "SQL" por razões jurídicas.
  110. 110. SQL e SGBD Atualmente, a linguagem SQL assume um papel muito importante nos sistemas de gerenciamento de banco de dados, podendo ter muitos enfoques: ●Linguagem interativa de consulta(query AdHoc): por meio decomandos SQL, os usuários podem montar consultas poderosas sem anecessidade da criação de um programa, podendo utilizar Forms ouferramentas de montagem de relatório;
  111. 111. SQL e SGBD ●Linguagem de programação para acesso a banco de dados:comandos SQL embutidos em programas de aplicação que acessam osdados armazenados; ●Linguagem de administração de banco de dados: o responsávelpela administração do banco de dados (DBA) pode utilizarcomandos SQL para realizar suas tarefas; ●Linguagem cliente/servidor: os programas (cliente) dos computadorespessoais usam comandos SQL para se comunicarem por meio de uma redelocal, compartilhando os dados armazenados em um único local (servidor).
  112. 112. SQL e SGBD ●Linguagem para banco de dados distribuído: auxilia nadistribuição dos dados por meio de vários nós conectados ao sistema decomputação. Auxilia também na comunicação de dados com outrossistemas; ●Caminho de acesso a outros bancos de dados em diferentesmáquinas: auxilia na conversão entre diferentes produtosde banco de dados colocados em diferentes máquinas (de micro atémainframe).
  113. 113. SQL e SGBD Por ser uma linguagem de numerosas aplicações, a SQL pode manipular objetos de diferentes classes entre as funções de um SGBD: ●Definição de dados (DDL): permite ao usuário a definição da estrutura e organização dos dados armazenados, e as relações que existem entre eles; ●Manipulação de dados (DML): permite ao usuário ou a um programa deaplicação, a inclusão, remoção, seleção ou atualização de dadospreviamente armazenados no banco;
  114. 114. SQL e SGBD ●Controle de acesso: protege os dados de manipulações não autorizadas; ●Compartilhamento de dados: coordena o compartilhamento dos dadospor usuários concorrentes, sem contudo interferir na ação de cada umdeles; ●Integridade dos dados: auxilia no processo de definição da integridadedos dados, protegendo contra corrupções, inconsistências e falhas dosistema de computação.
  115. 115. Vantagens da SQL ●Independência de fabricante-A SQL é oferecida em praticamente todos os SGBD's, e os que ainda não têm estão se encaminhando para lá. Com isso posso mudar de SGBD sem me preocupar com o novo que vai chegar; ●Portabilidade entre computadores-A SQL pode ser utilizada desde um computador pessoal, passando por uma estação de trabalho, até um computador de grande porte; ●Redução dos custos com treinamento-Baseado no item anterior, as aplicações podem se movimentar de um ambiente para o outro sem que seja necessária uma reciclagem da equipe de
  116. 116. Vantagens da SQL ●Inglês estruturado de alto nível-A SQL é formada por um conjunto bem simples de sentenças em inglês, oferecendo um rápido e fácil entendimento; ●Consulta interativa-A SQL prove um acesso rápido aos dadosfornecendo respostas ao usuário, a questões complexas, em minutos ousegundos; ●Múltiplas visões dos dados-A SQL permite ao criador do banco de dadoslevar diferentes visões dos dados a diferentes usuários; ●Definição dinâmica dos dados-Por meio da SQL, podem-se alterar,expandir ou incluir, dinamicamente, as estruturas dos dado armazenadoscom a máxima flexibilidade;
  117. 117. Desvantagens da SQL ●A padronização leva a uma, natural, inibição da criatividade, pois quemdesenvolve aplicações fica preso a soluções padronizadas não podendosofrer melhorias ou alterações; ●A SQL está longe de ser uma linguagem relacional ideal: ○Falta de ortogonalidade nas expressões, funções embutidas,variáveis indicadoras, referência a dados correntes, constanteNULL, conjuntos vazios, etc;
  118. 118. Desvantagens da SQL ○Definição formal da linguagem após sua criação; ○Discordância com as linguagens hospedeiras; ○Falta de algumas funções; ○Erros (valores nulos, índices únicos, cláusula FROM, etc); ○Não dá suporte a alguns aspectos do modelo relacionai (atribuiçãode relação, join explícito, domínios, etc):
  119. 119. Exemplo Para a exemplificação do uso de SQL, utilizaremos o seguinte modelo:
  120. 120. Criação de Banco de Dados Para podermos criar e inserir as tabelas de uma aplicação em Banco de Dados, dependendo do ambiente de SGBD que estivermos utilizando, criar o DATABASE, ou seja criar um banco de dados no qual estarão residentes as tabelas de nosso sistema. Sintaxe CREATE DATABASE <database> Exemplo CREATE DATABASE vendas
  121. 121. Criação de Tabelas Sintaxe CREATE TABLE <tabela> (<descrição das colunas>); (<descrição das chaves>);
  122. 122. Criação de Tabelas Exemplo CREATE TABLE CLIENTE ( Código_clientesmallint not null unique, nome_cliente char(20), endereço char(30), cidade char(15), CEP char(8), UF char(2), CGC char(20), IEchar(20) );
  123. 123. Criação de Tabelas Exemplo CREATE TABLE VENDEDOR ( código_vendedor smallint not null, nome_vendedor char(20), salário_fixo money, faixa_comissão char(l) PRIMARY KEY (codigo_vendedor) );
  124. 124. Criação de Tabelas Exemplo CREATE TABLE PRODUTO ( código_produto smallint not null unique, unidade char(3), descrição_ produto char(30), val_unit money );
  125. 125. Criação de Tabelas Exemplo CREATE TABLE PEDIDO ( num_pedidoint not null unique, prazo_entrega smallint not null, código_cliente smallint not null, código_vendedor smallint not null, FOREIGN KEY (código_cliente) REFERENCES CLIENTE, FOREIGN KEY (código_vendedor) REFERENCES VENDEDOR );
  126. 126. Criação de Tabelas Exemplo CREATE TABLE ITEM_DO_PEDIDO ( num_pedido int not null unique, código_produto smallint not null unique, quantidade decimal, FOREIGN KEY (num_pedido) REFERENCES PEDIDO, FOREIGN KEY (código_produto) REFERENCES PRODUTO );
  127. 127. Apagar Tabelas Para eliminar uma tabela criada, é utilizado o comando DROP. Sintaxe: DROP TABLE <tabela>; Exemplo DROP TABLEPEDIDO; elimina a tabela de pedidos que foi previamente criada, seus dados e suas referências a outras tabelas.
  128. 128. Selecionando dados de Tabelas Uma das operações mais comuns, realizadas sobre um banco de dados, é examinar (selecionar) as informações armazenadas. Essas operações são realizadas por meio do comandoSELECT 1.SELECT: Especifica as colunas da tabela que queremos selecionar; 2.FROM: Especifica as tabelas; 3.WHERE: Especifica as linhas.
  129. 129. Selecionando dados de Tabelas Sintaxe select <nome(s) da(s) coluna( s )> from<tabela>; Exemplo SELECT CGC, nome_cliente, endereço FROM cliente;
  130. 130. Selecionando dados de Tabelas A cláusula WHEREem um comando SELECT especifica quais linhas queremos obter, baseada em condições de seleção. Sintaxe SELECT <nome(s) da(s) coluna(s)> FROM <tabela> WHERE<nome da coluna> <operador> <valor>; Exemplo SELECT nome_cliente FROM cliente WHERE cidade = 'Niterói';
  131. 131. Selecionando dados de Tabelas Operadores de Comparação ●= Igual ●<> ou != diferente ●< menor do que ●> maior do que ●>= maior ou igual do que ●!> não maior ●!< não menor ●<= menor ou igual do que Quando a coluna é do tipo caractere, o <valor> deve estar entre aspas ('). Exemplo: 'PARAFUSO'
  132. 132. Selecionando dados de Tabelas Operadores Lógicos ●AND: “e” lógico ●OR: “ou” lógico ●NOT: negação Exemplo SELECT descrição_produto FROM produto WHERE unidade = 'M' AND val_unit = 1.05;
  133. 133. Selecionando dados de Tabelas Operadores baseados em string de caracteres LIKE eNOT LIKE Sintaxe WHERE <nome da coluna> LIKE <valor>; WHERE <nome da coluna> NOT LIKE <valor>; Simbolos %substitui uma palavra _substitui um caractere
  134. 134. Selecionando dados de Tabelas Exemplo LIKE 'LÁPIS %'pode retornar: •'LÁPIS PRETO', •'LÁPIS CERA', •'LÁPIS BORRACHA' LIKE 'BROCA N_'pode retornar: •'BROCA NI', •'BROCA N9', •'BROCA N3'
  135. 135. Selecionando dados de Tabelas Exemplo SELECT Código_vendedor, nome_vendedor FROM vendedor WHERE nome_vendedor NOT LIKE 'Jo%';
  136. 136. Selecionando dados de Tabelas Operadores baseados em listas IN eNOT IN ●WHERE <nome da coluna> IN <valores>; ●WHERE <nome da coluna> NOT IN <valores>; Esses operadores pesquisam registros que estão ou não contidos no conjuntode<valores>fornecido. Estes operadores minimizam o uso dos operadores =, <>,AND e OR.
  137. 137. Selecionando dados de Tabelas Exemplo ●SELECT nome_vendedor ●FROM vendedor ●WHERE faixa_comissão IN ('A','B');
  138. 138. Selecionando dados de Tabelas Operadores baseados em valores desconhecidos IS NULLeIS NOT NULL ●WHERE <nome da coluna> IS NULL; ●WHERE <nome da coluna> IS NOT NULL; A utilização do valor nulo (NULL)é muito problemática, pois cadaimplementação da linguagem pode adotar qualquer representação para o valor nulo. O resultado da aplicação destes operadores permite o tratamento de valoresnulos em colunas de uma tabela, selecionando as linhas correspondentes.
  139. 139. Selecionando dados de Tabelas Exemplo SELECT * FROM cliente WHERE IE IS NULL;
  140. 140. Ordenando Dados Selecionados A SQL prevê a cláusula ORDER BYpara realizar uma ordenação dos dadosselecionados. Sintaxe SELECT <nome da(s) coluna(s)> FROM <tabela> WHERE <condição(ões)> > ORDER BY <nome da coluna> ASC <ou> DESC <ou> ORDER BY <número da coluna>ASC <ou> DESC
  141. 141. Ordenando Dados Selecionados Exemplo SELECT nome_cliente, cidade, UF FROM cliente ORDER BY UF DESC, cidade DESC;
  142. 142. Adicionando registros Sintaxe INSERT INTO <nome da tabela> <nome da(s) coluna(s)>) VALUES (<valores>); Exemplo INSERT into produto VALUES (108,'Parafuso','Kg',1.25); Se não especificados os nomes de colunas, essa lista de valores deverá estar naordem das colunas definidas no comando CREATE TABLE.
  143. 143. Adicionando registros usando SELECT Sintaxe INSERT INTO <nome da tabela> (<nome da(s) coluna(s)>) SELECT <nome da(s) coluna(s)> FROM <nome da tabela> WHERE<condição>; Exemplo INSERT into cliente (cod_cliente,nome_cliente) SELECT cod_vendedor,nome_vendedor/COUNT(*) FROM vendedor, pedido WHERE Vendedor.cod_vendedor =Pedido.cod_vendedor HAVING COUNT(*) > 50;
  144. 144. Atualizando um registro Sintaxe UPDATE <nome da tabela> SET <nome da(s) coluna(s)> = valor WHERE <condição>; Exemplo UPDATE produto SET val_unit = 1.62 WHERE descrição = 'Parafuso';
  145. 145. Atualizando um registro Exemplo UPDATE Produto SET Vendas_acumuladas = 0 UPDATE Produto SET Vendas_acumuladas = (SELECTSUM (quantidade) FROM Item_de_pedido);
  146. 146. Apagando registros Sintaxe DELETE FROM <nome da tabela> WHERE <condição>; Exemplo DELETE FROM vendedor WHERE faixa_comissão IS NULL;
  147. 147. Agregação sobre Conjuntos Valor máximo (MAX) e mínimo (MIN) SELECT MIN(salário_fixo), MAX(salário_fixo) FROM vendedor; Totalizador (SUM) SELECT SUM(quantidade), FROM item_pedido WHERE código_produto = '78';
  148. 148. Agregação sobre Conjuntos Valor médio (AVG) SELECT AVG(salário_fixo), FROM vendedor; Quantidade de Registros (COUNT) SELECT COUNT(*), FROM vendedor WHERE salário_fixo > 2500;
  149. 149. Agregação sobre Conjuntos Valores distintos (DISTINCT) SELECT DISTINCT unidade, FROM produto;
  150. 150. Agrupamentos Agrupar (GROUP BY) SELECT num_pedido, total_produtos = COUNT(*) FROM item_de_pedido GROUP BY num_pedido; ●Geralmente, a cláusula GROUP BYé utilizada em conjunto com asoperações COUNT eAVG.
  151. 151. Dados de Várias Tabelas -JOINS Para que possamos recuperar informações de um banco de dados, temos,muitas vezes, a necessidade de acessar simultaneamente várias tabelasrelacionadas entre si. Algumas dessas consultas necessitam realizar uma junção(JOIN) entre tabelas, para poder extrair dessa junção as informações necessáriaspara a consulta formulada.
  152. 152. Sintaxe SELECT <nome_da_tabela.nome_da_coluna [nome_da_tabela.nome_da_coluna .... ]> FROM {nome_da_tabela [tipo de join] nome_da_tabela ON condição de pesquisa WHERE [condição de pesquisa .. ] Dados de Várias Tabelas -JOINS
  153. 153. Tipos de JOIN ●INNER JOIN: serão incluídas somente aslinhas que satisfazem a condição do join. ●CROSS JOIN: incluímos cada uma da combinações de todasas linhas entre as tabelas. ●OUTER JOIN: incluímos as linhas quesatisfazem a condição de JOIN e as linhas restantes de uma das tabelas do JOIN. Dados de Várias Tabelas -JOINS
  154. 154. Exemplo INNER JOIN SELECT Cliente.nome_cliente, pedido.cod_cliente, pedido.num_pedido FROM cliente INNER JOIN pedido ON cliente.codigo_do_cliente = pedido.codigo_do_cliente Exemplo CROSS JOIN SELECT nome_cliente, pedido.cod_cliente,num_pedido FROM cliente CROSS JOIN pedido Dados de Várias Tabelas -JOINS
  155. 155. OUTER JOIN É a seleção em que são restritas as linhas que interessam em uma tabela, massão consideradas todas as linhas de outra tabela. É de muita utilidade quando queremos verificar se existem membros órfãosem um banco de dados, ou seja, chave primária e chave estrangeira sem sincronia ousimetria. Um OUTER JOINsomente pode ser realizado entre duas tabelas, não maisque duas tabelas. Dados de Várias Tabelas -JOINS
  156. 156. A sintaxe SQL possui três tipos de qualificadores para o OUTER JOIN: ●LEFT OUTER JOIN: São incluídas todas as linhas da tabela do primeironome de tabela ( a tabela mais à esquerda da expressão). ●RIGHT OUTER JOIN: São incluídas todas as linhas da tabela do segundonome de tabela da expressão (tabelas mais à direita da expressão). ●FULL OUTER JOIN: São incluídas as linhas que não satisfazem a expressãotanto da primeira tabela quanto da segunda tabela. Dados de Várias Tabelas -JOINS
  157. 157. Exemplo SELECT nome_cliente, pedido.cod_cliente, num_pedido FROM cliente LEFT OUTER JOIN pedido ON cliente.codigo_do_cliente = Pedido.codigo_do_cliente Dados de Várias Tabelas -JOINS
  158. 158. Subquerys É quando o resultado de uma consulta é utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL. Exemplo SELECT descrição FROM produto WHERE cod_produto IN (SELECT cod_produto FROM item_pedido WHERE quantidade = 10)
  159. 159. Utilizando VIEWS Uma VIEW é um caminho alternativo para visualizarmos dados derivados deuma ou mais tabelas em um banco de dados. Um usuário pode necessitar ver partesselecionadas de dados com nome, departamento e supervisor, porém não visualizarsalário. VIEWS também podem ser utilizadas para informação calculada ou derivada,como preço total de um item de pedido que é calculado por meio da multiplicação de quantidade e preço unitário.
  160. 160. Utilizando VIEWS Sintaxe CREATE VIEW <nome da VIEW> (<nome da(s) coluna(s)>) AS<nome da view> SELECT <nome da(s) coluna(s)> FROM <nome da tabela> WHERE<condição>; Exemplo CREATE VIEW PR_metro (cod_PR_metro,descrição, unidade) AS SELECT cod_produto, descrição, unidade FROMproduto WHERE unidade = 'M';
  161. 161. Privilégios de acesso Muitos sistemas de banco de dados relacionais podem ser acessados pordiversos usuários. Cada usuário tem uma determinada necessidade em relação aosdados armazenados. De acordo com o projeto do banco de dados, alguns usuários sópodem consultar alguns dados, outros podem atualizar, outros podem inserir, etc. Paraque o dado fique protegido do uso indevido de qualquer usuário, a linguagem SQLpermite a definição dos privilégios que cada um pode ter em relação às tabelas criadasno banco de dados.
  162. 162. GRANT -Garantir Quando uma tabela/view é criada, o nome do usuário que a criou é anexado,internamente, ao nome da tabela. O criador da tabela/view tem total privilégio sobre a tabela criada podendo disponibilizar qualquer privilégio para outros usuários pelo comando GRANT: Sintaxe GRANT {ALL [Lista de privilégios]} ON {nome databela/view [lista de colunas]} TO {PUBLIB [listade usuários]} [WITH GRANT OPTION]
  163. 163. GRANT -Garantir Lista de opções de privilégios: ●SELECT: pode executar uma consulta sobre atabela ●INSERT: pode executar uma inserção sobre atabela ●DELETE: pode apagar registros da tabela ●UPDATE: pode modificar registros na tabela ●ALL PRIVILEGES/ALL: pode executar qualquer operação sobrea tabela ●<usuário>: nome do usuário que vai receber osprivilégios. ●PUBLIC: concede os privilégios especificados a todos os usuários do ambiente.
  164. 164. GRANT -Garantir Exemplos ●GRANT SELECT ON Produto TO Maurício; permite só consultas ao usuárioMaurício sobre a tabela produto; ●GRANT Select, insert, update on pedido to tele_mark; concede ao usuáriotele_mark (entrada de pedidos), os privilégios de seleção, inserção e alteração sobre atabela PEDIDO; ●GRANT All privileges on cliente to public;permite todos os privilégios atodos os usuários sobre a tabela cliente; ●GRANT Select on cliente to Felipe, Maurício;concede aos usuáriosMaurício e Felipe, o privilégio de seleção sobre a tabela CLIENTE.
  165. 165. REVOKE -Revogar Da mesma forma que o criador da tabela pode garantir (GRANT) osprivilégios de acesso aos outros usuários, ele pode revogar esses privilégios por meiodo comando REVOKE. Sintaxe REVOKE [ lista de privilégios ]ON [nome da tabela/view] FROMlista de usuários]; Exemplo REVOKE selectON produto FROM Mauricio;
  166. 166. Índices Índice é uma estrutura que permite rápido acesso às linhas de uma tabela, combase nos valores de uma ou mais colunas. O índice é simplesmente uma outra tabela nobanco de dados, na qual estão armazenados valores e ponteiros, arrumados de formaascendente ou descendente. O SGBD utiliza os índices para pesquisar rapidamente um determinado valor dentro do banco de dados.
  167. 167. Check List para Criação de Índices ✓Criar índice sobre coisas que vamos pesquisar com frequência. ✓Indexe suas chaves estrangeiras quando precisar de "joins" mais eficientes eperformantes. ✓As colunas que são regularmente utilizadas em joins devem ser indexadasporque o sistema pode performar esses joins de forma muito mais rápida. ✓Crie índice sempre em colunas que são pesquisas por um intervalo de valores. ✓E por fim, crie índice sempre em colunas que são utilizadas em cláusulas WHERE.
  168. 168. Quando não criar índices Se a expectativa de retorno de linhas de uma consulta for muito alta índices não devem ser utilizados. Por exemplo: se uma coluna tem somente dois valores: Masculino e Feminino, uma consulta a essa coluna sempre vai retornar uma alta quantidade de linhas. Como é um índice não agrupado, poderá ocupar muito espaço e pode não ser utilizado para consultas.
  169. 169. Criando Índices Cada índice é aplicado a uma tabela, especificando uma ou mais colunas dessatabela. Sintaxe CREATE [UNIQUE] INDEX <nome do índice> ON<nome da tabela> (<coluna(s)>); Exemplo CREATE INDEX nome_pro ONproduto (descrição);
  170. 170. Criando Índices A cláusula UNIQUE é opcional e define que para aquela coluna não existirãovalores duplicados, ou seja, todos os dados armazenados na coluna serão únicos. A junção do índice unique e da especificação NOT NULL para uma colunadefine a chave primária da tabela quanto ao aspecto lógico, pois uma chave primária,como vimos neste livro, não pode ser NULA.
  171. 171. Eliminando Índices Da mesma forma que um índice é criado, ele pode ser eliminado, dependendodas necessidades do projeto do banco de dados. Sintaxe DROP index <nome do índice>; Exemplos DROP index nome_pro; DROP index ped_pro;
  172. 172. Bibliografia DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. MACHADO, F. N. R. e ABREU, M. P.Projeto de Banco de Dados. São Paulo: Érica, 2004.

×