Baixe o app para aproveitar ainda mais
Prévia do material em texto
WBA0449_v1.0 CODIFICAÇÃO DO PROJETO: PADRÕES DE PROGRAMAÇÃO E PROJETO DO BANCO DE DADOS APRENDIZAGEM EM FOCO 2 APRESENTAÇÃO DA DISCIPLINA Autoria: Thiago Salhab Alves Leitura crítica: Anderson Paulo Avila Santos Na disciplina Codificação do projeto: padrões de programação e projeto do banco de dados, será trabalhado o paradigma de programação orientada a objetos, utilizando as linguagens de programação Java, C#, Python e Ruby e o projeto e implementação do banco de dados, por meio do projeto conceitual, lógico e físico do banco de dados relacional, com a programação SQL. Vamos conhecer os conteúdos que serão explorados em nossas aulas. No tema 1, serão trabalhados os conceitos de programação orientada a objetos, apresentando o histórico do paradigma orientado a objetos e conceitos de classes e objetos. Serão abordados o histórico da linguagem Java, conceitos de classes, atributos e métodos, acessibilidade de uma classe, exemplo de codificação e herança em Java e sintaxe. Será trabalhada também a linguagem C#, conceitos de classes e objetos, implementação de classe em C#, instanciação de objetos e herança em C#. No tema 2, será estudado o histórico de Python e Ruby, apresentando as características de Python e Ruby. Será trabalhada a instalação do Python, criação de classes e herança em Python. Para a linguagem Ruby, serão abordados a instalação, criação de classes e herança em Ruby. No tema 3, será visto o projeto do banco de dados relacional, aprendendo sobre os projetos conceituais, por meio do modelo entidade-relacionamento (MER), por meio dos conceitos de Entidade, Atributos, Relacionamento e Cardinalidade. No projeto lógico, será estudado o mapeamento das entidades e 3 relacionamentos para o esquema relacional por meio do processo de normalização do modelo conceitual. Para finalizar, no tema 4, serão trabalhados os procedimentos de programação em banco de dados, conhecendo a linguagem SQL, por meio dos comandos DDL (Data Definition Language), com os comandos Create, Alter e Drop e DML (Data Manipulation Language) com os comandos Insert, Update, Delete e Select. INTRODUÇÃO Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira direta e assertiva, os principais conceitos inerentes à temática abordada na disciplina. Além disso, também pretende provocar reflexões que estimulem a aplicação da teoria na prática profissional. Vem conosco! TEMA 1 Procedimento de programação orientado a objeto: Java e C# ______________________________________________________________ Autoria: Thiago Salhab Alves Leitura crítica: Anderson Paulo Ávila Santos 5 DIRETO AO PONTO Com a alta demanda por software, construí-los de maneira rápida, correta e econômica continua a ser um objetivo. Qualquer elemento pode ser representado como um objeto de software, desde que possua atributos, por exemplo, nome, cor e tamanho, além de comportamentos como calcular, mover e comunicar. A implementação orientada a objetos é muito mais produtiva do que com as técnicas anteriormente populares, como a programação estruturada, principalmente pela reutilização de código. Programas orientados a objetos são muitas vezes mais fáceis de entender, corrigir e modificar (DEITEL; DEITEL, 2017). No Java e C#, uma unidade de programa chamada classe é criada para armazenar um conjunto de métodos para executar suas tarefas. Por exemplo, uma classe que representa uma conta bancária pode conter um método para fazer depósitos em dinheiro, outro para fazer saques e um terceiro para perguntar sobre o saldo atual. Para executar uma tarefa em um programa, é necessário um método que armazene sua instrução que executa a tarefa. Da mesma forma, os objetos têm atributos que são incorporados quando usados em um programa. Esses são especificados como parte da classe de objeto. Por exemplo, o atributo de saldo do objeto de conta bancária representa o valor disponível. Todo objeto de conta bancária conhece o saldo que representa, mas não o de outras contas bancárias (DEITEL; DEITEL, 2017). Classes (e seus objetos) encapsulam, isto é, contêm seus atributos e métodos e estão intimamente relacionados. Os objetos podem se comunicar entre si, mas eles, em geral, não sabem como outros 6 objetos são implementados, pois os detalhes de implementação permanecem ocultos dentro dos próprios objetos. Java também apresenta um recurso chamado herança, em que uma classe (chamada subclasse) pode herdar as características de uma classe existente (chamada superclasse), podendo adicionar seus aspectos próprios. Um objeto, por exemplo, da classe conversível, certamente, é um objeto da classe mais geral automóvel. Um objetivo-chave do Java é ser capaz de escrever programas a serem executados em uma grande variedade de sistemas computacionais e dispositivos controlados por computador. Isso, às vezes, é chamado de “escreva uma vez, execute em qualquer lugar” (DEITEL; DEITEL, 2017). O termo polimorfismo é uma tradução em português do termo análogo em inglês polymorphic, que é a contração das palavras poly (muitos) e morphic (formas), ou seja, muitas formas. Na programação orientada a objetos, polimorfismo é a capacidade que um método de um objeto possui de assumir formas diferentes para a sua execução. O uso de polimorfismo, representados na Figura 1, na linguagem C#, pode ocorrer a partir de três formas diferentes de aplicação, são elas (MANZANO, 2014): • O polimorfismo paramétrico ocorre quando são utilizadas estruturas preestabelecidas de operação. Cada cenário possui uma ação preestabelecida. • O polimorfismo de inclusão ocorre quando um recurso de uma classe-filho instancia um recurso sobre a classe-pai. Essa é a forma mais simples de construção polimórfica, pois a classe-pai herda algum recurso advindo da classe-filho. 7 • O polimorfismo de sobrecarga ocorre quando são usados vários métodos com o mesmo nome de identificação, mas que possuem número de parâmetros diferentes. Essa é a forma de polimorfismo mais simples, comum e essencial. Curiosamente, há profissionais na nossa área que não aceitam essa forma como sendo uma ação polimórfica. Figura 1 – Tipos de polimorfismo Fonte: elaborada pelo autor. Referências bibliográficas DEITEL, P.; DEITEL, H. Java como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. MANZANO, J. A. N. G. Programação de computadores com C#. São Paulo: Érica, 2014. 8 PARA SABER MAIS A orientação a objetos oferece uma grande contribuição para o projeto e desenvolvimento de sistemas: o polimorfismo. A palavra polimorfismo vem do grego poli morfos e significa muitas formas (DEITEL; DEITEL, 2017). Na orientação a objetos, no polimorfismo, entidades diferentes podem ser tratadas de forma semelhante conferindo versatilidade aos programas e classes que se beneficiam dessas características. A forma mais simples de polimorfismo é a sobrecarga de métodos (method overload), ou seja, é a possibilidade de existirem em uma mesma classe vários métodos com o mesmo nome. Para que eles tenham o mesmo nome e possam ser identificados, eles devem possuir assinaturas diferentes. A assinatura (signature) de um método é uma lista que indica os tipos de todos os seus argumentos, sendo assim, métodos com mesmo nome são considerados diferentes se recebem um diferente número ou tipo de argumento, e têm, portanto, uma assinatura diferente (DEITEL; DEITEL, 2017). No exemplo da Figura 2, temos na classe Sobrecarga a implementação de três métodos denominados duplo, que tomam um único argumento, retornando o valor que é o dobro do valor do argumento recebido. Por meio da sobrecarga, foram implementadas três versões do método duplo, cada uma capaz de receber um argumento de tipo diferente. Na prática, é como se o método fosse capaz de processar argumentos de tipos diferentes, o que, para o usuário da classe, é transparente e resulta na operação desejada. 9 Figura 2 – Polimorfismo Fonte:elaborada pelo autor. Referências bibliográficas DEITEL, P.; DEITEL, H. Java como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. TEORIA EM PRÁTICA Reflita sobre a seguinte situação: uma empresa de desenvolvimento de sistemas necessita atualizar seus sistemas para o paradigma orientado a objetos. Muitos dos sistemas foram desenvolvidos em Delphi, de forma estruturada, e a demanda por portabilidade e novos recursos de programação, tais como herança e polimorfismo, presentes na programação orientada a objetos, tem feito com que a empresa necessitasse mudar para 10 Lorem ipsum dolor sit amet Autoria: Nome do autor da disciplina Leitura crítica: Nome do autor da disciplina as linguagens Java e C#. Foi atribuído a você a implementação de um cadastro de clientes, que pode ser tanto pessoa física quanto jurídica. Para esse cadastro, é necessário informar nome, e-mail, telefone, endereço (rua, número, bairro, CEP, cidade, estado), data de nascimento, sexo, CPF ou CNPJ. Faça a implementação em Java ou C# da classe Cliente, levando em consideração a herança (ClienteFisico e ClienteJuridico), contendo os atributos e métodos para cadastrar e exibir os dados cadastrados. Faça a proposta e apresente-as, em forma de relatório, ao responsável pelo projeto. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Este artigo teve como objetivo o desenvolvimento de um sistema auxiliar de aprendizagem de programação em Java (JPLAS) que oferece vários tipos de problemas de exercícios para cobrir estudos em diferentes níveis, com foco nos conhecimentos sobre encapsulamento, herança, polimorfismo, os conceitos fundamentais de programação orientada a objetos (OOP). Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. ZAW, K. K. et al. An informative test code approach in code writing problem for three object-oriented programming concepts in Java Programming Learning Assistant System. IAENG International Journal of Computer Science, [s. l.], v. 46, n. 3, p. 445-453, 2019. Indicações de leitura 11 Indicação 2 Este artigo teve como objetivo descrever a ontologia CSCRO e o sistema Sharp RDF, usados juntos para analisar semanticamente o código-fonte C#. A ontologia do CSCRO formalmente descreve o domínio da linguagem de programação C#, na qual os conceitos são representados como classes, propriedades e indivíduos. Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. EPURE, C.; IFTENE, A. Semantic analysis of source code in object oriented programming. A case study for C#. Romanian Journal of Human – Computer Interaction, [s. l.], v. 9, n. 2, p. 103-118, 2016. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Com a alta demanda por software, construir softwares de maneira rápida, correta e econômica continua a ser um objetivo. Neste contexto, complete as lacunas da sentença a seguir: 12 No Java e C#, é criada uma unidade de programa chamada _____________ para armazenar o conjunto de _____________ que executam as ____________ dela. Assinale a alternativa que completa adequadamente as lacunas: a. Classe; métodos; tarefas. b. Objeto; atributos; operações. c. Método; classes; recursos. d. Atributo; objetos; operações. e. Herança; métodos; tarefas. 2. A implementação orientada a objetos é muito mais produtiva do que com as técnicas anteriormente populares, como a programação estruturada. Neste contexto, complete as lacunas da sentença a seguir: Um _____________ possui __________ que ele incorpora à medida que é usado em um programa. Eles são especificados como parte da __________ do objeto. a. Atributo; objetos; propriedade. b. Objeto; atributos; classe. c. Método; atributos; característica. d. Objeto; métodos; classe. e. Método; objetos; propriedade. 13 GABARITO Questão 1 - Resposta A Resolução: Na programação orientada a objetos, tais como na linguagem Java e C#, é criada uma unidade de programa chamada classe para armazenar o conjunto de métodos que executam as tarefas dela. Questão 2 - Resposta B Resolução: Um objeto, da mesma forma, tem atributos que ele incorpora à medida que é usado em um programa. Esses atributos são especificados como parte da classe do objeto. TEMA 2 Procedimento de programação orientado a objeto: Python e Ruby ______________________________________________________________ Autoria: Thiago Salhab Alves Leitura crítica: Anderson Paulo Ávila Santos 15 DIRETO AO PONTO Python é uma linguagem robusta, dinâmica, interpretada e multiplataforma, que foi criada no final de 1989 por Guido van Rossum, sendo uma linguagem livre (até para projetos comerciais), podendo programar para desktops, web e mobile. Na linguagem Python, tudo é tratado como objetos, por exemplo, os tipos de dados (BANIN, 2018). Classes definem estruturas de dados que contêm instâncias de atributo, de método e classes aninhadas. No Python, classe e tipo de objeto são sinônimos. Todo objeto Python tem uma classe (tipo) derivada direta ou indiretamente da classe interna do objeto Python. Ela determina o que é e como operá-lo. Uma classe encapsula dados, operações e semânticas (PERKOVIC, 2016). Python é uma linguagem de programação orientada a objetos. Uma classe é definida como um conjunto de valores dentro de seu intervalo operacional. Elas ajudam na abstração de modularidade e complexidade. Os usuários da classe só podem usar os métodos fornecidos por ela para manipular objetos instanciados a partir dela (BANIN, 2018). Classes diferentes costumam ter características comuns, podem compartilhar o mesmo valor e executar a mesma operação. No Python, esses relacionamentos são expressos usando derivação e herança. O objeto é instanciado pela classe. Cada instância (objeto) em um programa Python possui seu próprio espaço para nome. A classe criada é chamada de classe de objeto (tipo classobj). Os nomes no namespace são chamados de atributo da classe. As funções definidas são chamadas de métodos. Ao criar um objeto, 16 o namespace herda todos os nomes namespace em que o objeto reside. Os nomes no espaço de nomes da instância são chamados de atributos da instância (BANIN, 2018). Outra linguagem de programação de extrema importância é a Ruby, considerada puramente orientada a objetos, já que tudo em Ruby é um objeto. Édinamicamente, implicitamente e fortemente tipada, isto quer dizer que, a cada interação, o tipo é verificado, que Ruby detecta o tipo automaticamente e todas fazem as variáveis possuem um tipo. O def é uma palavra-chave do Ruby para a definição de métodos (SOUZA, 2014). Para não precisar adicionar sempre todos os métodos em todo objeto que criamos, Ruby possui classes, que atuam como fábricas (molde) de objetos. Possibilitam a criação de objetos já incluindo alguns métodos. Todo objeto em Ruby possui o método class, que retorna à classe que originou este objeto (SOUZA, 2014). Um método pode chamar outro do próprio objeto. Para fazer isso, basta usar a referência especial self, que aponta para o próprio objeto. Isso é semelhante a outras linguagens, como Java e C #. Todo método Ruby é chamado em algum objeto, ou seja, o método é sempre uma mensagem enviada ao objeto. Se não especificado, o destino da mensagem é sempre self (MCGAVREN, 2015). Atributos ou variáveis de instânciasão sempre privados na linguagem Ruby e começam com @. Não há como alterá-los de fora da classe; apenas os métodos de um objeto podem alterar os seus atributos. Podemos fazer com que algum código seja executado na criação de um objeto. Para isso, todo objeto pode ter um método especial, chamado de initialize. Os initializers são métodos privados (não podem ser chamados de fora da classe) e podem receber parâmetros (MCGAVREN, 2015). 17 Referências bibliográficas BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: Érica, 2018. MCGAVREN, J. Head First Ruby: A brain friendly guide. 1. ed. Sebastopol: O’Reilly, 2015. PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento de aplicações. 1. ed. Rio de Janeiro: LTC, 2016. SOUZA, L. Ruby: aprenda a programar na linguagem mais divertida. São Paulo: Casa do Código, 2014. PARA SABER MAIS A linguagem Python permite o uso de herança múltipla, permitindo que uma classe herde comportamentos de várias outras. A Figura 1 ilustra um exemplo de herança múltipla em Python. São definidas duas classes, Homem e Aranha. Cada uma tem seu método construtor. A classe Homem recebe o idioma, e a Aranha, teia e venenosa. A classe HomemAranha é filha das classes Homem e Aranha. 18 Figura 1 – Herança múltipla em Python class Homem(object): def __init__(self, idioma, *args, **kwargs): super().__init__(*args, **kwargs) self.idioma = idioma class Aranha(object): def __init__(self, teia, venenosa, *args, **kwargs): super().__init__(*args, **kwargs) self.teia = teia self.venenosa = venenosa class HomemAranha(Aranha, Homem): def __init__(self, idioma, teia, venenosa): super(HomemAranha, self).__init__(idioma=idioma, teia=teia, venenosa=venenosa) obj = HomemAranha(‘ingles’, False, True) print(obj.lingua) print(obj.teia) print(obj.venenosa) Fonte: elaborada pelo autor. 19 Com a herança múltipla, uma classe pode herdar as características de mais de uma classe, compartilhando valores comuns e executando as mesmas operações. Referências bibliográficas BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: Érica, 2018. PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento de aplicações. 1. ed. Rio de Janeiro: LTC, 2016. TEORIA EM PRÁTICA Reflita sobre a seguinte situação: uma software house está contratando profissionais para desenvolvimento de sistemas em Python e Ruby. Um dos grandes diferenciais que a empresa irá oferecer é um treinamento completo e certificação nas linguagens. Para adquirir a vaga, foi proposto um desafio no formato de implementação, em Python ou Ruby, realizando a construção de um cadastro de estudante, que pode ser de graduação e pós-graduação. Para o cadastro do estudante, é necessário informar nome, e-mail, telefone, endereço (rua, número, bairro, CEP, cidade, estado), data de nascimento, sexo, CPF, tipo de curso e curso. A classe Graduacao e PosGraduacao devem herdar os comportamentos da classe Estudante, contendo a classe Graduacao o TCC e estágio, e a classe PosGraduacao, o artigo. Faça a implementação em Python ou Ruby apresentando a solução, em forma de relatório, ao responsável pela software house. 20 Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Este artigo tem como objetivo discutir a importância do conhecimento em programação de computadores na pesquisa científica, os benefícios do uso do Python para os pesquisadores, a importância do aspecto da comunidade para o aumento da adoção do Python e as etapas para instalar e usar o kit de ferramentas do Python. Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. PERKEL, J. M. Programming: Pick up Python. Nature, [s. l.], v. 518, n. 7.537, p. 125-126, 2015. Indicação 2 Este artigo tem como objetivo apresentar o quanto a linguagem de programação Ruby tem a oferecer a qualquer cientista com dados eletrônicos para processar, permitindo a criação rápida de aplicativos relativamente complexos, mantendo o código curto e legível. Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. Indicações de leitura 21 AERTS, J.; LAW, A. An introduction to scripting in Ruby for biologists. BMC Bioinformatics, [s. l.], v. 10, p. 221-229, 2009. DOI 10.1186/1471-2105-10-221. . QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Considere a seguinte afirmação: Frequentemente, classes Python e Ruby diferentes possuem características comuns. As classes diferentes podem compartilhar valores comuns e podem executar as mesmas operações. Neste contexto, assinale a alternativa que apresenta o recurso descrito na afirmação: a. Herança. b. Polimorfismo. c. Encapsulamento. d. Objeto. 22 e. Classe. 2. Considere a afirmação: Um método em Ruby pode invocar outro método do próprio objeto. Para isto, basta usar uma referência especial, que aponta para o próprio objeto. Neste contexto, assinale a alternativa que apresenta a referência descrita na afirmação: a. This. b. Self. c. Super. d. Init. a. Obj. GABARITO Questão 1 - Resposta A Resolução: A herança é o recurso que permite que as classes possam compartilhar valores comuns e executar as mesmas operações sem a necessidade de reescrevê-los. Questão 2 - Resposta B Resolução: Um método pode invocar outro do próprio objeto. Para isto, basta usar uma referência especial self, que aponta para o próprio objeto. TEMA 3 Modelagem de banco de dados e o projeto do fluxo de dados ______________________________________________________________ Autoria: Thiago Salhab Alves Leitura crítica: Anderson Paulo Ávila Santos 24 DIRETO AO PONTO Um banco de dados é um conjunto de dados que se relacionam, representando informações sobre um domínio específico, ou seja, informações agrupadas que se relacionam e tratam de um mesmo assunto específico (SILBERCHATZ; KORTH; SUDARSHAN, 2012). O objetivo do sistema de banco de dados é fazer com que os usuários não tenham necessidade de conhecer detalhes internos do banco (promover a abstração de dados) e oferecer a independência dos dados e do aplicativo. (ELMASRI; NAVATHE, 2019). O sistema de banco de dados deve garantir uma visão abstrata completa para o usuário, ou seja, não importa qual unidade de armazenamento é usada para armazenar seus dados, desde que estejam disponíveis quando necessário. O nível abstrato é dividido em três (SILBERCHATZ; KORTH; SUDARSHAN, 2012): • Nível de visualização do usuário: é a parte do banco de dados que o usuário pode acessar. • Nível conceitual: faz a definição dos dados que estão armazenados e o relacionamento entre eles. • Nível físico: define como os dados estão armazenados, sendo o nível mais baixo da abstração. O projeto de banco de dados se dá em duas fases: • Modelagem conceitual. • Projeto lógico. 25 No modelo conceitual, definem-se quais dados serão exibidos no banco de dados, independente de como será sua implementação. O modelo lógico do banco de dados relacional define as tabelas e suas colunas (campos) sem se preocupar com detalhes de armazenamento (SILBERCHATZ; KORTH; SUDARSHAN, 2012). A Figura 1 ilustra a representação dos projetos de banco de dados. O processo inicia com um Mini-mundo, que contém a situação que necessita de um banco dedados. Desse Mini-mundo, são extraídos os requisitos do sistema. O primeiro projeto é o Projeto Conceitual, responsável por identificar entidades, atributos e os relacionamentos entre as entidades. Desse projeto, obtém-se o Esquema Conceitual (Modelo Entidade Relacionamento). Com o Projeto Lógico, realiza-se o refinamento, derivando as chaves estrangeiras por meio do processo de normalização. Com o esquema lógico, determina-se o Projeto Físico, com o esquema das tabelas em linguagem SQL, etapa esta que depende do SGBD utilizado. Figura 1 – Representação dos projetos de banco de dados Fonte: elaborada pelo autor. 26 Referências bibliográficas ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Education, 2019. SILBERCHATZ, A. et al. Sistema de banco de dados. 6. ed. São Paulo: Campus, 2012. PARA SABER MAIS O projeto conceitual de banco de dados, por meio do modelo entidade-relacionamento, apresenta a limitação de não poder representar relacionamentos entre relacionamentos. A agregação é uma abstração por meio da qual eles são tratados como entidades de nível superior, sendo um modelo estendido que possibilita a herança. A Figura 2 ilustra a representação da agregação no modelo entidade-relacionamento (SILBERCHATZ; KORTH; SUDARSHAN, 2012). 27 Figura 2 – Herança múltipla em Python Fonte: elaborada pelo autor. Um conjunto-entidade pode ser dividido em categorias, cada qual com atributos específicos. Este processo é chamado de generalização e especialização. Por que definir subclasses especializadas? • Certos atributos aparecem somente em alguma(s) subclasse(s). • Alguns relacionamentos se aplicam apenas a determinadas subclasses. A generalização/especialização pode ser total ou parcial. Na total, toda instância da superclasse (Cliente) precisa estar associada a uma instância correspondente de alguma subclasse (Pessoa Física ou Pessoa Jurídica). Na parcial, pode haver instância da superclasse (Funcionário) sem instância correspondente em nenhuma subclasse (Motorista ou Secretária). A Figura 3 ilustra a representação da generalização/especialização do tipo total e parcial no modelo entidade-relacionamento (ELMASRI; NAVATHE, 2019). 28 Figura 3 – Representação da generalização/especialização no modelo entidade-relacionamento Fonte: elaborada pelo autor. A generalização/especialização pode ser exclusiva e não exclusiva. Na exclusiva, cada instância da superclasse (Pessoa) pode estar associada a, no máximo, uma instância de uma subclasse (Pessoa Física ou Pessoa Jurídica). Na não exclusiva, uma instância da superclasse (Pessoa) pode estar associada a até uma instância de cada uma das subclasses (Professor, Funcionário ou Aluno). A Figura 4 ilustra a representação da generalização/ especialização exclusiva e não exclusiva no modelo entidade- relacionamento (ELMASRI; NAVATHE, 2019). 29 Figura 4 – Representação da generalização/especialização exclusiva e não exclusiva no modelo entidade-relacionamento Fonte: elaborada pelo autor. Referências bibliográficas ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Education, 2019. SILBERCHATZ, A. et al. Sistema de banco de dados. 6. ed. São Paulo: Campus, 2012. TEORIA EM PRÁTICA Reflita sobre a seguinte situação: uma loja de produtos colecionáveis está necessitando de um sistema de controle de estoque e para registro de suas vendas. A loja vende personagens colecionáveis, canecas, chaveiros, jogos de tabuleiros, dentre outros produtos. Hoje a organização realiza todo o armazenamento de suas vendas em Excel, dificultando o controle do estoque. O estabelecimento gostaria de um sistema que efetuasse o cadastro de clientes, produtos, fornecedores, compra e venda de produtos. Realize a proposta de um modelo entidade- 30 relacionamento que apresente a modelagem das entidades, atributos e relacionamentos para o projeto de uma base de dados relacional para a loja de produtos colecionáveis. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Este artigo tem como objetivo aprimorar o processo de normalização de banco de dados, propondo um algoritmo até a terceira forma normal. Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. BURA, D.; SINGH, R. K. Implementing constraints in entity- relationship models for enhancing normalization. IUP Journal of Information Technology, [s.l.], v. 8, n. 2, p. 46-57, 2012. Indicação 2 Este artigo tem como objetivo apresentar a proposta de uma série de técnicas para o projeto de banco de dados, em que os autores fizeram a proposta de uma notação para entidade-relacionamento adaptada da Linguagem de Modelagem Unificada (UML). Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. Indicações de leitura 31 THOMPSON, C. B.; SWARD, K. Modeling and teaching techniques for conceptual and logical relational database design. Journal of Medical Systems, [s.l.], v. 29, n. 5, p. 513-525, 2005. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Considere a seguinte afirmação: Uma coleção de dados inter-relacionados, representando informações sobre um domínio específico. Neste contexto, assinale a alternativa que representa a afirmação: a. Banco de dados. b. Modelagem de dados. c. Projeto de dados. d. Sistema de dados. e. Modelo de dados. 32 2. Considere a afirmação: Um conjunto-entidade pode ser dividido em categorias, cada qual com atributos específicos. Neste contexto, assinale a alternativa que representa a afirmação: a. Herança. b. Relacionamento. c. Agregação. d. Generalização/especialização. e. Chave estrangeira. GABARITO Questão 1 - Resposta A Resolução: Um banco de dados é uma coleção de dados inter-relacionados, representando informações sobre um domínio específico, ou seja, sempre que for possível agrupar informações que se relacionam e tratam de um mesmo assunto, posso dizer que tenho um banco de dados. Questão 2 - Resposta D Resolução: Um conjunto-entidade pode ser dividido em categorias, cada qual com atributos específicos. Este processo é chamado de generalização e especialização. TEMA 4 Procedimentos de programação em banco de dados utilizando a linguagem SQL ______________________________________________________________ Autoria: Thiago Salhab Alves Leitura crítica: Anderson Paulo Ávila Santos 34 DIRETO AO PONTO SQL (Structured Query Language) é o conjunto de comandos de manipulação de banco de dados utilizado para criar e manter a estrutura desses bancos de dados, além de incluir, excluir, modificar e pesquisar informações em suas tabelas (ELMASRI; NAVATHE, 2019). A linguagem SQL não é uma linguagem de programação autônoma, podendo ser chamada de “sublinguagem”. Quando se escrevem aplicações para banco de dados, é necessário utilizar uma linguagem de programação tradicional e embutir comandos SQL para manipular os dados (ELMASRI; NAVATHE, 2019). A Linguagem SQL é dividida nos seguintes componentes, conforme a Figura 1: • Data Definition Language (DDL): permite a criação dos componentes do banco de dados, como tabelas. São comandos DDL: CREATE SQUEMA, CREATE TABLE, DROP SQUEMA e DROP TABLE. • Data Manipulation Language (DML): permite a manipulação dos dados armazenados no banco de dados. São comandos DML:INSERT, DELETE e UPDATE. • Data Query Language (DQL): permite extrair dados do banco de dados. O comando DQL utilizado é o SELECT. • Data Control Language (DCL): permite controlar as permissões de acesso e uso aos objetos do banco de dados. São comandos DCL: GRANT e REVOKE. 35 Figura 1 – Componentes da linguagem SQL Fonte: elaborada pelo autor. Tabelas são as estruturas mais importantes de um banco de dados relacional. Nelas estará o conteúdo que representa cada objeto do mundo real, cuja importância para o funcionamento do sistema justifica a sua criação. As próprias tabelas criadas ficam armazenadas em tabelas internas do gerenciador de banco de dados. É o chamado dicionário de dados. Com a utilização do 36 dicionário de dados, as informações das tabelas ficam sempre à disposição do usuário e permitem um controle maior do que está sendo armazenado (ELMASRI; NAVATHE, 2019). Restrição de chave primária é a coluna, ou o grupo de colunas, que permite identificar um único registro na tabela. Para especificar que uma coluna ou um grupo de colunas representa a chave primária de uma tabela, deve-se acrescentar a palavra-chave PRIMARY KEY seguida do nome da(s) coluna(s). Chave estrangeira é o campo que estabelece o relacionamento entre duas tabelas. Assim, uma coluna, ou um grupo de colunas, de uma tabela corresponde à mesma coluna, ou grupo de colunas, que é a chave primária de outra tabela. Dessa forma, deve-se especificar na tabela que contém a chave estrangeira quais são essas colunas e à qual tabela está relacionada. Veja que o banco de dados irá verificar se todos os campos que fazem referência à tabela estão especificados. Ao determinar esse tipo de relacionamento, fica garantida a integridade das informações. Os valores presentes na(s) coluna(s) definida(s) como chave estrangeira devem ter um correspondente na outra tabela, caso contrário, o banco de dados deve retornar uma mensagem de erro. É normal que, ao tentar excluir um registro de uma tabela, o banco de dados verifique se há chaves estrangeiras relacionadas a esse registro. Se houver, também será retornado um erro impedindo essa operação. Referências bibliográficas ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Education, 2019. 37 PARA SABER MAIS Em uma consulta SQL utilizando o comando SELECT, o uso do * significa que serão retornados todos os atributos da tabela. Considere como exemplo os códigos apresentados na Figura 2. A primeira instrução retorna todos os dados contidos na tabela Employee dos empregados que trabalham do departamento de código DNO igual a 5. A segunda instrução retorna todos os atributos dos empregados que trabalham no departamento de nome DNAME igual a Research (ELMASRI; NAVATHE, 2019). Figura 2 – Consultas SQL retornando todos os atributos Fonte: elaborada pelo autor. A linguagem SQL também faz uso de algumas funções de agregação, sendo a função COUNT (conta a quantidade de registros), MAX (determina o maior valor dentre um conjunto de registros), MIN (determina o menor valor dentre um conjunto de registros) e AVG (determina a média dentre um conjunto de registros). A Figura 3 apresenta exemplos do uso dessas funções. A primeira instrução retorna o maior salário, o menor salário e o salário médio de todos os empregados. A segunda instrução 38 retorna o maior salário, o menor salário e o salário médio de todos os empregados que trabalham no departamento Research (ELMASRI; NAVATHE, 2019). Figura 3 – Consultas SQL utilizando funções de agregação Fonte: elaborada pelo autor. Em muitos casos, necessita-se aplicar as funções agregadas para subgrupos de tuplas em uma relação. Cada um consiste no conjunto de tuplas que têm o mesmo valor para o atributo de agrupamento. A função é aplicada a cada subgrupo independentemente. SQL tem uma cláusula GROUP BY para especificar os atributos de agrupamento, que também deve aparecer na cláusula SELECT. A Figura 4 apresenta exemplo do uso dessa função. A primeira instrução retorna para cada departamento o número, o número de empregados e a média salarial. A segunda instrução retorna para cada projeto o número, o nome e o número de empregados que trabalham no projeto (ELMASRI; NAVATHE, 2019). 39 Figura 4 – Consultas SQL utilizando função GROUP BY Fonte: elaborada pelo autor. Dessa forma, você aprendeu sobre os comandos para retorno de todos os atributos (*), funções de agregação COUNT, MAX, MIN e AVG e a função de agrupamento GROUP BY. Referências bibliográficas ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Education, 2019. TEORIA EM PRÁTICA Reflita sobre a seguinte situação: uma loja de produtos colecionáveis está necessitando de um sistema de controle de estoque e para registro de suas vendas. A loja vende personagens colecionáveis, canecas, chaveiros, jogos de tabuleiros, dentre outros produtos. Hoje a organização realiza todo o armazenamento de suas vendas em Excel, dificultando o controle do estoque. O estabelecimento gostaria de um sistema que 40 efetuasse o cadastro de clientes, produtos, fornecedores, compra e venda de produtos. Você já realizou a construção do modelo entidade-relacionamento, realize agora a proposta da criação das tabelas utilizando a linguagem SQL. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Este artigo discute o impacto da linguagem SQL em relação às representações de dados. Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. HELLAND, P. The singular success of SQL. Communications of the ACM, [s.l.], v. 59, n. 8, p. 38-41, 2016. DOI 10.1145/2948983. Indicação 2 Este artigo apresenta uma revisão dos diferentes tipos de ataques de injeção de SQL e as técnicas de detecção e prevenção existentes contra ataques de injeção de SQL. Para realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da obra. Indicações de leitura 41 SADOTRA, P.; SHARMA, C. SQL Injection impact on web server and their risk mitigation policy implementation techniques: an ultimate solution to prevent computer network from illegal intrusion. International Journal of Advanced Research in Computer Science, [s.l.], v. 8, n. 3, p. 678-686, 2017. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. SQL (Structured Query Language) é o conjunto de comandos de manipulação de banco de dados utilizado para criar e manter a estrutura desses bancos de dados. Nesse contexto, considere a seguinte afirmação: Permite a criação dos componentes do banco de dados, como tabelas. Assinale a alternativa que apresente o grupo de componentes a que se refere a afirmação anterior: 42 a. Data Definition Language (DDL). b. Data Modeling Language (DML). c. Data Query Language (DQL). d. Data Creation Language (DCL). e. Data Use Language (DUL).. 2. Considere a afirmação: É utilizado para identificar um único registro em uma tabela. Neste contexto, assinale a alternativa que representa a afirmação: a. Chave estrangeira. b. Chave primária. c. Chave candidata. d. Chave principal. e. Chave secundária. GABARITO Questão 1 - Resposta A Resolução: O Data Modeling Language (DML) é um grupo de elementos que permite a criação dos componentes do banco de dados, como tabelas. Questão 2 - Resposta B Resolução: A chaveprimária é a coluna, ou o grupo de colunas, que permite identificar um único registro na tabela. BONS ESTUDOS! Apresentação da disciplina Introdução TEMA 1 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 2 Direto ao ponto TEMA 3 Direto ao ponto TEMA 4 Direto ao ponto Botão TEMA 5: TEMA 2: Botão 158: Botão TEMA4: Inicio 2: Botão TEMA 6: TEMA 3: Botão 159: Botão TEMA5: Inicio 3: Botão TEMA 7: TEMA 4: Botão 160: Botão TEMA6: Inicio 4: Botão TEMA 8: TEMA 5: Botão 161: Botão TEMA7: Inicio 5:
Compartilhar