Baixe o app para aproveitar ainda mais
Prévia do material em texto
INSTITUTO FEDERAL SUL-RIO-GRANDENSE UNIVERSIDADE ABERTA DO BRASIL MÓDULO 2 Michele de Almeida Schimidt PROJETO DE BANCO DE DADOS RELACIONAL Ministério da Educação CURSO DE TECNOLOGIA EM SISTEMAS PARA INTERNET Modalidade a Distância UNIVERSIDADE ABERTA DO BRASIL INSTITUTO FEDERAL SUL-RIO-GRANDENSE - CAMPUS PELOTAS CURSO DE TECNOLOGIA EM SISTEMAS PARA INTERNET Modalidade a Distância PRESIDÊNCIA DA REPÚBLICA Dilma Rousseff PRESIDENTE DA REPÚBLICA FEDERATIVA DO BRASIL MINISTÉRIO DA EDUCAÇÃO Fernando Haddad MINISTRO DO ESTADO DA EDUCAÇÃO Luiz Cláudio Costa SECRETÁRIO DE EDUCAÇÃO SUPERIOR - SESU Eliezer Moreira Pacheco SECRETÁRIO DA EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA Luís Fernando Massonetto SECRETÁRIO DA EDUCAÇÃO A DISTÂNCIA – SEED Jorge Almeida Guimarães PRESIDENTE DA COORDENAÇÃO DE APERFEIÇOAMENTO DE PESSOAL DE NÍVEL SUPERIOR - CAPES INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA SUL-RIO-GRANDENSE [IFSUL] Antônio Carlos Barum Brod REITOR Daniel Espírito Santo Garcia PRÓ-REITOR DE ADMINISTRAÇÃO E DE PLANEJAMENTO Janete Otte PRÓ-REITORA DE DESENVOLVIMENTO INSTITUCIONAL Odeli Zanchet PRÓ-REITOR DE ENSINO Lúcio Almeida Hecktheuer PRÓ-REITOR DE PESQUISA, INOVAÇÃO E PÓS-GRADUAÇÃO Renato Louzada Meireles PRÓ-REITOR DE EXTENSÃO IF SUL-RIO-GRANDENSE CAMPUS PELOTAS José Carlos Pereira Nogueira DIRETOR-GERAL DO CAMPUS PELOTAS Clóris Maria Freire Dorow DIRETORA DE ENSINO João Róger de Souza Sastre DIRETOR DE ADMINISTRAÇÃO E PLANEJAMENTO Rafael Blank Leitzke DIRETOR DE PESQUISA E EXTENSÃO Roger Luiz Albernaz de Araújo CHEFE DO DEPARTAMENTO DE ENSINO SUPERIOR IF SUL-RIO-GRANDENSE DEPARTAMENTO DE EDUCAÇÃO A DISTÂNCIA Luis Otoni Meireles Ribeiro CHEFE DO DEPARTAMENTO DE EDUCAÇÃO A DISTÂNCIA Daniel Grill Lacerda COORDENADOR DA UNIVERSIDADE ABERTA DO BRASIL – UAB/IFSUL Marla Cristina da Silva Sopeña COORDENADORA ADJUNTA DA UNIVERSIDADE ABERTA DO BRASIL – UAB/IFSUL Cinara Ourique do Nascimento COORDENADORA DA ESCOLA TÉCNICA ABERTA DO BRASIL – E-TEC/IFSUL Ricardo Lemos Sainz COORDENADOR ADJUNTO DA ESCOLA TÉCNICA ABERTA DO BRASIL – E-TEC/IFSUL IF SUL-RIO-GRANDENSE UNIVERSIDADE ABERTA DO BRASIL Daniel Grill Lacerda COORDENADOR DA UNIVERSIDADE ABERTA DO BRASIL – UAB/IFSUL Marla Cristina da Silva Sopeña COORDENADORA ADJUNTA DA UNIVERSIDADE ABERTA DO BRASIL – UAB/ IFSUL Mauro Hallal dos Anjos GESTOR DE PRODUÇÃO DE MATERIAL DIDÁTICO CURSO DE TECNOLOGIA EM SISTEMAS PARA INTERNET Modalidade a Distância Daniel Grill Lacerda COORDENADOR DO CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET – TSIAD Beatriz Helena Zanotta Nunes SUPERVISORA PEDAGÓGICA Suzana Grala Tust REVISORA LINGUÍSTICA Vera Maria Machado Damé COORDENADORA DE TUTORIA DO TSIAD UNIVERSIDADE ABERTA DO BRASIL INSTITUTO FEDERAL SUL-RIO-GRANDENSE - CAMPUS PELOTAS CURSO DE TECNOLOGIA EM SISTEMAS PARA INTERNET Modalidade a Distância EQUIPE DE PRODUÇÃO DE MATERIAL DIDÁTICO – UAB/IFSUL Lisiane Corrêa Gomes Silveira GESTORA DA EQUIPE DE DESIGN Alessandro Cruz Wrague Aline de Almeida Tessmer Andressa Silva Nasiloski Denise Zarnottz Knaback Felipe Rommel Helena Guimarães de Faria Helena Rodrigues dos Santos Igor da Silva Amaral Lucas Quaresma Lopes Luisa Mendes Machado Marco Lucas dos Anjos Morgana Ávila dos Santos Taís Lopes Barbosa Talita Mesquita Barbosa EQUIPE DE DESIGN Catiúcia Klug Schneider GESTORA DE PRODUÇÃO DE VÍDEO Gladimir Pinto da Silva PRODUTOR DE ÁUDIO E VÍDEO Jeferson de Oliveira Oliveira AUXILIAR DE EDIÇÃO DE VÍDEO E PROGRAMADOR EM FLASH João Eliézer Ribeiro Schaun GESTOR DO AMBIENTE VIRTUAL DE APRENDIZAGEM Giovani Portelinha Maia GESTOR DE MANUTENÇÃO E SISTEMA DA INFORMAÇÃO Acauan Merseburger Picanço Anderson Weige Dias Bruna Gonçalves Ribeiro Carlo Camani Schneider Diego Barcellos Rocha Efrain Becker Bartz Francine Neuschrank Gabriel Duarte Mateus Lorenzato Braga Neimar Mendes Lima Paula Cruz Guttier Piter Oliveira Vergara Vinícius Maciel EQUIPE DE PROGRAMAÇÃO PARA WEB 1 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Prezado(a) aluno (a), Bem-vindo (a) ao espaço de estudo da Disciplina de Projeto de Banco de Dados Relacional. Nosso objetivo nesta disciplina é proporcionar condições para que você seja capaz de projetar Bancos de Dados Relacionais. Desta maneira, disponibilizamos um material didático, composto por conteúdos, nos quais, a partir de exemplos, você possa compreender melhor como projetar um Banco de Dados Relacional. Será muito importante que você busque informações em outras fontes confiáveis, para tanto, no material há sugestões de Links e autores para que você possa aprimorar os conhecimentos nesta área. Além disso, você terá o apoio de sua equipe. Busque ajuda sempre que precisar e participe intensivamente das atividades propostas, só assim será pos- sível que você construa conhecimentos sólidos para prosseguir nesta caminhada. Objetivos Objetivo geral Projetar Bancos de Dados Relacionais. Objetivos específicos Identificar os objetivos, as vantagens e as desvantagens do uso de Sistemas de Gerência de Banco de Dados (SGBD).• Reconhecer os componentes funcionais de um SGBD.• Identificar a Hierarquia de Abstrações de Dados.• Identificar os tipos de usuários de um SGBD.• Identificar as funções do administrador de um Banco de Dados.• Identificar Restrições de Integridade.• Compreender o Paradigma da Transação como Garantia de Correção do BD.• Compreender a garantia de Atomicidade e de Durabilididade.• Compreender o controle de Concorrência e a Serializabilidade.• Produzir um modelo conceitual de um sistema através da utilização do modelo de• Criar Diagrama Entidade-Relacionamento (DER).• Produzir um modelo lógico de um sistema pela efetivação de relacionamentos, identificando cardinalidade e normal-• izações necessárias. Criar a estrutura de tabelas e relacionamentos em um Sistema Gerenciador de Banco de Da+ dos.• Garantir a Integridade de domínio e referencial necessária.• Compreender a Linguagem de Consulta Padrão para SGBD´s Relacionais.• Criar os grupos de usuários necessários, fornecendo direitos de acesso conforme sua função dentro de um sistema de • informação. Criar usuários vinculando-os a um determinado grupo.• Automatizar procedimentos em nível de SGBD que garantam a segurança e a confiabilidade dos dados.• Efetuar testes de funcionamento do SGDB alocado.• Desenvolver Consultas SQL para SGBD´s Relacionais de forma otimizada.• Realizar procedimentos de cópia de segurança e restauração de cópias, garantindo a confiabilidade da estrutura dos • dados de um banco. Guia DiDático GD Análise e Projeto de Sistemas de informação Estruturados | Guia Didático 2 Análise e Projeto de Sistemas de informação Estruturados | Guia Didático S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Metodologia Para o desenvolvimento da disciplina, utilizaremos o ambiente virtual de aprendizagem, Moodle, no qual serão disponibilizados conteúdos e atividades para compreensão a fim de que você seja capaz de alcançar os objetivos propostos. Ao concluir cada unidade, você deverá elaborar uma atividade que fará parte da proposta já iniciada na disciplina anterior - “Portal Informatizado para o Pólo”. Lembramos que cada atividade será feita pelos grupos já formados. Durante cada semana, serão disponibilizadas situações para interação entre os alunos e o professor no chat, nos fóruns . Esses espaços deverão ser utilizados para trocas de experiências, dúvidas entre outras situa- ções que ocorrerem durante a execução das atividades. Avaliação A avaliação será realizada através de: Participação nos fóruns de discussão (individual);• Realização das atividades propostas nas unidades (individual);• Atividade Final – Portal para o Pólo (em grupo).• Programação A disciplina será desenvolvida no decorrer das semanas. Primeira semana: Na primeira semana, as atividades a serem desenvolvidassão: Aula Presencial.1. Leitura e estudo do Conteúdo: Introdução a Banco de Dados. 2. Realização da atividade: Unidade A - Introdução a Banco de Dados.3. Participe do Fórum de discussão proposto pelo professor.4. Segunda semana: Na segunda semana, as atividades a serem desenvolvidas são: Leitura e estudo do Conteúdo: Modelo Conceitual.5. Realização da atividade: Unidade B - Modelo Conceitual6. Realização da atividade: Unidade B - Atividade Final - 1º Parte7. Chat: Participar do chat no horário marcado pelo professor formador para discutir questões relativas ao modelo con-8. ceitual do projeto final. Terceira semana: Na terceira semana, as atividades a serem desenvolvidas são: Aula Presencial.9. Leitura e estudo do Conteúdo: Modelo Lógico10. Realização da atividade: Unidade C - Modelo Lógico11. Participe do Fórum de discussão proposto pelo professor.12. Realização da atividade: Unidade C - Atividade Final - 2º Parte13. 3 Análise e Projeto de Sistemas de informação Estruturados | Guia Didático S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Quarta semana: Na quarta semana, as atividades a serem desenvolvidas são: Aula Presencial.14. Leitura e estudo do Conteúdo: Linguagem de Consulta Estruturada SQL15. Realização da atividade: Unidade D - SQL16. Realização da atividade: Unidade D- Atividade Final - 3º Parte17. Chat: Participar do chat no horário marcado pelo professor formador para discutir questões relativas a linguagem de 18. consulta estruturada - SQL. Quinta semana: Na quinta semana, as atividades a serem desenvolvidas são: Aula Presencial.19. Leitura e estudo do Conteúdo: Sistema Gerenciador de Banco de Dados - PostgreSQL20. Realização da atividade: Unidade E - PostrgeSQL21. Sexta semana: Na sexta semana, as atividades a serem desenvolvidas são: Leitura e estudo do Conteúdo: Transações em Banco de Dados.22. Realização da atividade: Unidade F - Transações em Banco de Dados.23. Chat: Participar do chat no horário marcado pelo professor formador para discutir questões relativas a atividade final.24. Realização da atividade: Atividade Final25. Sétima semana: Na sétima semana, as atividades a serem desenvolvidas são: Aula Presencial26. Referências HEUSER, Carlos Alberto. Projeto de Banco de Dados. 4ª ed., Porto Alegre: Sagra Luzzatto, 2001. NETO, Álvaro Pereira. PostgreSQL: Técnicas Avançadas – Versões OpenSource 7.X. 1ª ed., Érica, 2003. OLIVEIRA, Celso Henrique Poderoso de. SQL: Curso Prático. São Paulo: Novatec, 2002. ELMASRI, Rames; NAVATHE, Shamkant B. Sistema de Banco de Dados. Rio de Janeiro, 4ed.: LTC, 2000. Projeto de Banco de Dados Relacional| Unidade A 1 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 1. O que é um Banco de Dados? http://pt.wikipedia.org/wiki/Banco_de_dados Como o Banco de dados é um conjunto de informações que possuem um significado implícito, podemos dizer então que uma planilha que armazena informações sobre alunos de uma escola é um Banco de dados. ESCOLA “XYX” Aluno Endereço Telefone Ana Maria Av. xxxx 909002099 João Carlos Rua vvvvv 923082193 Jorge Fernandes Rua tttttt 329731872 Carla Antunes Av. wewqe 213123123 A escola “XYX” relaciona os dados dos alunos com informações sobre os mesmos, com isso essas informações associadas compõem um banco de dados. Autores descrevem o conceito de Banco de dados de diversas maneiras, no livro de NAVATHE, ELMASRI, Banco de dados é uma coleção de dados relacionados, onde os dados são fatos que podem ser gravados e que possuem um significado implícito. Mas estas definições são muito genéricas, pois, por exemplo, podemos con- siderar um conjunto de palavras que formam esta página como um Banco de dados. No entanto, o mesmo autor define algumas propriedades para o termo Banco de dados, considerando que o conceito anterior é muito genérico e pode com isso distorcer a idéia principal do que é um Banco de dados. As características definidas pelo autor são: Um banco de dados representa alguns aspectos do mundo real, sendo chamado, às vezes, de minimundo ou de uni-• verso de discurso. As mudanças no minimundo são refletidas em um Banco de dados; Um Banco de dados é uma coleção lógica e coerente de dados com algum significado inerente. Uma organização de • dados ao acaso não pode ser corretamente interpretada como um Banco de Dados; Um Banco de dados é projetado, construído e povoado por dados, atendendo a uma proposta específica. Possui um • grupo de usuários definido e algumas aplicações pré-concebidas, de acordo com o interesse desse grupo de usuários. uniDADEA Conjunto de dados integrados que tem por objetivo atender a uma comunidade de usuários. [HEUSER, 1999] intrODuçãO A BAnCO DE DADOS Projeto de Banco de Dados Relacional| Unidade A 2 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Um Banco de dados pode ser gerado e mantido tanto manualmente como computadorizado, através de Sistemas de gerenciamento de banco de dados. O nosso objetivo, nesta disciplina, é estudar o Banco de dados computadorizado. 2. O que é um Sistema Gerenciador de Banco de dados? Um Sistema gerenciador de banco de dados (SGBD) é uma coleção de programas que permite aos usuários criar e manter um Banco de dados. A construção de um banco de dados é o processo de armazenar os dados em alguma mídia apropriada e controlada pelo SGBD O SGBD é composto por quatro componentes: Usuários, Software/Hardware e os dados. A Figura 2 exempli- fica o SGBD. Segundo as características pro- postas acima, podemos identi- ficar no Banco de Dados Folha, algumas delas: é um banco de dados povoado por dados que atendem a uma proposta específica ,que é a de colecio- nar todos os jornais publica- dos para uma futura consulta de pesquisadores, estudantes, entre outras características. Os objetivos de um sistema de banco de dados são o de isolar o usuário dos detalhes inter- nos do banco de dados (pro- mover a abstração de dados) e promover a independência dos dados em relação às apli- cações, ou seja, tornar inde- pendente da aplicação, a es- tratégia de acesso e a forma de armazenamento. Projeto de Banco de Dados Relacional| Unidade A 3 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Existem vantagens e desvantagens na utilização de um sistema de gerenciamento de banco de dados: Vantagens: Controle de Redundância• No sistema gerenciador de banco de dados, conseguimos controlar para que os mesmos dados não sejam repeti- dos várias vezes no mesmo banco. Compartilhamento de Dados• No compartilhamento, conseguimos controlar a redundância de dados, pois os dados são armazenados uma única vez e acessados por todos que necessitarem do dado. Restrição a Acesso não Autorizado.• Quando muitos usuários acessam um banco de dados é normal que alguns acessem informações que outros não tenham acesso. No SGBD, teremos vários usuários, em que alguns poderão acessar módulos de compras, outras de vendas, assim como alguns não poderão acessar o módulo financeiro, por exemplo. Representação de Relacionamentos complexos entre Dados.• Um SGBD tem como vantagem mostrar o relacionamento existente em um banco de dados assim como recuperar, alterar os dados de forma fácil e eficiente. Desvantagens: Em algumas situações, a utilização do SGBD pode gerar altos custos desnecessários. Que podem ser devido à utilização • de novos hardwares, softwares, treinamentos, além dos custos com a segurança do sistema entre outras característi- cas necessárias para o bom funcionamento do SGBD. Alguns exemplos de SGBDs são: Oracle,SQL Server, DB2, PostgreSQL, MySQL, entre outros. Conheça mais sobre estes SGBDs acessando os seus respectivos sites: Oracle: http://www.oracle.com/global/br/index.html SQL Server: http://www.microsoft.com/brasil/servidores/sql/default.mspx DB2: http://www-306.ibm.com/software/br/db2/data/db2imstools/index.shtml PostgreSQL: http://www.postgresql.org.br/ MySQL: http://www.mysqlbrasil.com.br/ Firebird: http://www.firebirdsql.org/ 3. níveis de Abstração de dados NAVATHE define uma arquitetura para o sistema de banco de dados, chamada de arquitetura de três-esque- mas, proposta para auxiliar a realização e visualização das características do banco de dados. O objetivo desta arquitetura é separar o usuário da aplicação do banco de dados físico. Nessa arquitetura, o autor define três níveis: 3.1 Nível interno ou esquema interno; 3.2 Nível conceitual ou esquema conceitual; 3.3 Nível externo ou visão. Projeto de Banco de Dados Relacional| Unidade A 4 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 3.1 Nível interno ou esquema interno; O nível interno descreve a estrutura de armazenamento físico do banco de dados, este esquema utiliza um modelo • que descreve os detalhes completos de armazenamento de dados e os caminhos de acesso ao banco de dados. 3.2 Nível conceitual ou esquema conceitual; O nível conceitual define quais dados estão armazenados no banco de dados e o relacionamento entre estes dados. • 3.3 Nível externo ou visão. O nível externo abrange esquemas externos onde cada esquema descreve a parte do banco de dados que um dado • grupo de usuário tem interesse e oculta o restante do banco de dados deste grupo. 4. usuários de um sistema de BD O • Administrador do BD (DBA) é responsável por: Autorizar o acesso ao BD; Coordenar e monitorar o uso; Adquirir recursos de software e hardware necessários. Projetista do BD tem a função de:• Identificar os dados a serem armazenados no Banco de dados; Escolher as estruturas apropriadas para representar e armazenar esses dados; Comunicar-se com todos os prováveis usuários de banco de dados para conhecer suas necessidades. Programador de aplicações• Implementar as especificações como programas, testar, documentar e manter as transações customizadas. Usuário final• Utilizar as aplicações feitas pelo programador de aplicações. Projeto de Banco de Dados Relacional| Unidade B 6 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Agora que já estudamos o que é um Banco de Dados e outros fatores importantes para este estudo, vamos pensar nos bancos de dados que daqui a algumas aulas já serão implementados em um Sistema de Gerencia- mento de Banco de Dados - SGBD. Nesta unidade, começaremos o projeto conceitual, é uma fase que vem após o levantamento de requisitos do sistema, para isso, é necessário que, ao começar o projeto de banco de dados, já exista o levantamento de tudo que será necessário no sistema. 5 . Modelo conceitual A modelagem conceitual é uma fase muito importante no planejamento de uma aplicação de um banco de dados bem-sucedido, este modelo descreve a estrutura de um banco de dados de forma independente de um SGBD particular. É a primeira fase do projeto de um novo Banco de Dados, em que o modelo conceitual é obtido através de um Diagrama de Entidade-Relacionamento(ER). No livro Sistema de Banco de Dados , os autores mostram uma descrição simplificada do processo de projeto de banco de dados visualizada na figura abaixo. ELMASRI, Rames; NAVATHE, Shamkant B. Sistema de Banco de Dados. Rio de Janeiro, 4ed.: LTC, 2000. unidade b Modelo ConCeitual Projeto de Banco de Dados Relacional| Unidade B 7 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Na figura, a fase do projeto conceitual vem após o Levantamento e análise de requisitos, pois será a partir dos dados coletados que poderemos elaborar o modelo conceitual usado nesta fase. O objetivo desta primeira fase do projeto é elaborar uma descrição de quais dados serão armazenados no banco de dados independentemente de como serão implementados no banco de dados. A fase em que defini- mos como o banco de dados será implementado no SGBD vem após a modelagem conceitual e chamamos de projeto lógico que é obtido a partir da transformação do Diagrama Entidade-Relacionamento em um modelo lógico, que implementa, a nível de SGBD relacional, os dados representados abstratamente no modelo ER. 5.1 Modelo Entidade-Relacionamento O Modelo ER foi definido por Peter Chen em 1976, sendo representado através de um diagrama de entidade- relacionamento (DER). Vamos estudar alguns conceitos centrais da abordagem entidade-relacionamento e em seguida poderemos elaborar os diagramas. A seguir apresentamos os requisitos que foram adquiridos a partir da fase de levantamento e análise de requisitos. A partir dos requisitos será apresentado um exemplo de modelo ER, para que a partir deste exemplo possamos ir conhecendo conceitos para elaboração de um modelo ER. Os requisitos foram elaborados a partir de uma empresa fictícia chamada “Sorriso” A empresa está organizada em departamentos. Cada departamento tem um nome e um número único e um empr-• egado que gerencia o departamento. Temos a data em que o empregado começou a gerenciar o departamento. Um departamento controla um numero qualquer de projetos, cada qual com um único nome, um único número e uma • única localização. Armazenamos o nome de cada empregado, o número do cpf, endereço, salário. Um empregado está alocado a um • departamento, mas pode trabalhar em diversos projetos que não são controlados, necessariamente, pelo mesmo departamento. Controlamos o número de horas semanais que um empregado trabalha em cada projeto. Também controlamos o supervisor direto de cada empregado. Queremos ter o controle dos dependentes de cada empregado para fins de seguro. Guardamos o primeiro nome, data • de nascimento de cada dependente e o parentesco dele com o empregado. A figura, a seguir, é um exemplo de DER. Projeto de Banco de Dados Relacional| Unidade B 8 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Para elaborar os diagramas de ER, precisamos em um primeiro momento conhecer alguns conceitos básicos desta abordagem. Os dados no modelo ER são descritos a partir de entidades, relacionamentos e atributos. ENTIDADES: A entidade é considerada o objeto básico representado no modelo ER. Pode ser um objeto do mundo real, por exemplo, uma pessoa ou um objeto com uma existência conceitual como, por exemplo, um curso. A entidade é representada através de um retângulo contendo o nome da entidade. Cada entidade representa um conjunto de informações sobre o objeto representado, porém quando precisamos nos referir a apenas um objeto, denominamos de ocorrência de entidade. Exemplo: No exemplo acima o DEPARTAMENTO representa o conjunto de todos os departamentos que se deseja man- ter informações. Seguindo o exemplo de levantamento de requisitos e do modelo ER mostrado anteriormente, podemos identificar várias entidades como: DEPARTAMENTO• PROJETO• EMPREGADO• DEPENDENTE• ATRIBUTO: Cada entidade é representada por Atributos, que são características das entidades representadas. Por exem- plo, a entidade DEPARTAMENTO, tem como atributos, o nome e o número. Na prática, os atributos são representados textualmente para não sobrecarregar os diagramas, mas na figura abaixo, podemos ver como os atributos podem ser representados Para Heuser entidade é um conjunto de obje- tos da realidade modelada sobre as quais se deseja manter informações no banco de dados. Projeto de Banco de Dados Relacional| Unidade B 9 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S A figura acima mostra que cada ocorrência de departamentopode ser representada por um número e nome. Por exemplo, vamos armazenar no nosso banco de dados um departamento que terá como numero ‘01’e nome ‘Financeiro’. No livro Sistema de Banco de Dados os autores identificam vários tipos de atributos: Atributos compostos x Atributos simples: Os atributos compostos podem ser divididos em subpartes menores, que representam a maioria dos atributos básicos com significados independentes. Por ex- emplo, o atributo endereço da entidade empregado por ser dividido em EnderecoRua, Cidade, Es- tado, CEP. Os atributos que não são divisíveis são chamados de atributos simples. Atributos Monovalorados x Multivalorados: A maioria dos atributos tem um valor único para uma dada entidade; esses atributos são chamados monovalorados. Por exemplo, Idade é um atributo monovalorado de uma pessoa. Em alguns casos, um atributo pode ter um conjunto de valores para a mesma entidade - por exemplo, um atributo Cor para um carro ou um atributo Titulação para uma pessoa. Os carros com uma cor têm um valor único, enquanto aqueles com dois tons contêm dois va- lores para a cor. Da mesma forma, uma pessoa pode não ter um título acadêmico, outra pessoa pode ter um, e uma terceira pessoa, dois ou mais títulos, portanto pessoas diferentes podem ter números de valores diferentes para o atributo Titulação. Esses atributos são chamados multivalorados. Atributos Armazenados x Derivados: Em alguns casos, dois (ou mais) valores de atributos estão rela- cionados - por exemplo, os atributos Idade e DataNascimento de uma pessoa. Para uma entidade pessoa em particular, o valor de Idade pode ser determinado pela data corrente(hoje) e o valor de DataNascimento da pessoa. Portanto, o atributo Idade é chamado atributo derivado e é dito derivado do atributo DataNascimento, que por sua vez, é chamado atributo armazenado. Alguns atributos podem ser derivados de entidades relacionadas; por exemplo, um atributo NumerodeEmpregados, de uma entidade departamento, pode ser derivado da contagem do numero de empregados relacio- nados nesse departamento. Valores nulls (nulos): Em alguns casos, determinada a entidade pode não ter um valor aplicável a um atributo. Por exemplo, o atributo Apartamento de um endereço se aplica apenas a endereços que estão em edifícios de apartamentos, e não a outros tipos de residências, como as casas. Por analogia, um atributo titulação só se aplica a pessoas com titulação acadêmica. Para estas situações é criada um valor especial chamado null (nulo). Atributos Complexos: Observa-se que os atributos compostos e multivalorados podem ser aninhados de uma maneira arbitrária. Podemos representar essa organização agrupando os componentes de um atributo composto entre parênteses (), separando os componentes por meio de vírgulas e mostrando os atributos multivalorados entre chaves {}. Esses atributos são chamados de atributos complexos. Considerando o exemplo da empresa e com as entidades já definidas podemos especificar os atributos de cada uma delas. DEPARTAMENTO: nome e numero PROJETO: codigo e nome EMPREGADO: nome, cpf, endereço e salario DEPENDENTE: nome, dt_nascimento e parentesco Projeto de Banco de Dados Relacional| Unidade B 10 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Atributo identificador da entidade Uma restrição importante das entidades de um tipo de entidade é a chave ou restrição de unicidade em atrib- utos. Um tipo de entidade tem geralmente, um atributo cujos valores são distintos para cada uma das entidades do conjunto de entidade. Cada entidade deve possuir pelo menos um atributo identificador, este é representado pelo circulo preenchido. Significa então que o atributo que identifica a entidade serve para que as ocorrências de entidade tenham uma forma de serem distinguidas uma das outras. A entidade EMPREGADO pode ter como atributos: cpf• endereco• salario• nome• EMPREGADO CPF nome Endereço salário 12345566 Maria Av. Santos Camargo 860 34567789 Maria Av. Julio Matheus 980 A entidade Empregado guardará informações sobre o cpf, nome, endereço e saláriocde várias ocorrências de entidade. A partir do exemplo, podemos notar que podem existir pessoas que tenham o mesmo nome. O atributo identificador tem a finalidade de especificar que o atributo que estiver como identificador será único, ou seja, não poderá repetir em nenhuma ocorrência de entidade. Como atributo identificador no exemplo acima, temos o CPF que não poderá se repetir Os atributos identificadores também podem ser compostos, quando, por exemplo, as ocorrências de enti- dades necessitem de atributos identificadores diferentes. A chave é um tipo de restrição de inte- gridade que representa regras de negó- cio que visam garantir que não possam existir duas ou mais entidades com os mesmos valores de identificadores. Projeto de Banco de Dados Relacional| Unidade B 11 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Relacionamento identificador da entidade Existem casos em que o identificador de uma entidade é composto de atributo e por relacionamentos em que a entidade participa. Cada dependente é identificado pelo funcionário em que está relacionado e pelo nome e parentesco. Para identificar um relacionamento identificador usamos uma linha mais densa, conforme a figura acima. Alguns autores definem como a entidade DEPENDENTE sendo uma entidade fraca, pois esta depende da entidade FUN- CIONÁRIO para existir. RELACIONAMENTO O relacionamento acontece entre as entidades quando existe algum tipo de associação entre estas. Um rela- cionamento é representado através de um losango ligado por linhas as entidades. No exemplo acima, temos a entidade Departamento e a entidade projeto, que estão relacionadas, pois os projetos são controlados por um departamento. Projeto de Banco de Dados Relacional| Unidade B 12 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Assim como nós referenciamos as ocorrências de entidades, podemos fazer o mesmo nos relacionamento. Com isso, quando quisermos nos referir a associações particulares dentro de um conjunto, vamos nos referir a ocorrências de relacionamentos. Um tipo de relacionamento define um conjunto de associações – ou um conjunto de relacionamentos – entre as entidades. Exemplo: Consideramos um relacionamento Controla, entre dois tipos de entidade, Departamento e Projeto, que as- socia cada controla a uma entidade de Departamento e Projeto. Pela figura acima, identificamos que um depar- tamento pode controlar um projeto assim como pode controlar mais de um projeto Auto-Relacionamento Existe ainda um conceito em Relacionamento que é do auto-relacionamento. Neste tipo de relacionamento a relação ocorre com apenas uma entidade, ou seja, entre ocorrências da mesma entidade. Neste caso surge o conceito de papel da entidade, em que definimos qual é o papel da entidade em um relacionamento. Exemplo: Projeto de Banco de Dados Relacional| Unidade B 13 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S No exemplo acima, a relação que existe entre duas ocorrências de entidades podem ter papéis diferentes. O funcionário poder ser gerenciado por um funcionário gerente, assim como um funcionário pode gerenciar os funcionários subordinados. Relacionamento Binários e Ternários (ou de grau superior) Os relacionamentos vistos até o momento são identificados como Binários, por se tratar da relação entre duas entidades. Quando temos relação entre três entidades, chamamos de relacionamentos ternários. Exemplo: No exemplo acima, temos uma relação de controle, onde cada ocorrência da relação de controle associa três ocorrências de entidades: um projeto a ser controlado, um departamento onde será feito um controle e um funcionário.Identificando Relacionamentos. Os relacionamentos também podem possuir atributos. Que serão características especificas que ocorrem durante o relacionamento não fazendo parte de nenhuma entidade em específico. No exemplo acima, podemos armazenar a data em que o departamento começou a controlar o projeto. Cardinalidade de Relacionamentos Cardinalidade de Relacionamento é um conceito utilizado no modelo ER que melhora o conhecimento sobre as políticas e regras dos negócios, consistindo de números colocados ao lado do relacionamento. Um exemplo para as cardinalidades seria a de um departamento que controla um projeto. As dúvidas que podem aparecer nesta relação seriam: Projeto de Banco de Dados Relacional| Unidade B 14 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Quantos projetos um departamento pode controlar?• O projeto deve ser controlado por apenas um departamento ou pode ser por mais de um?• Para projetarmos o nosso modelo de dados é essencial que conheçamos este tipo de questão e que estas sejam refletidas no nosso modelo. Podemos acrescentar algumas dimensões nos nossos relacionamentos para tornar mais claras algumas questões: DEPARTAMENTO controla “um ou mais projetos” PROJETO é controlado por apenas um DEPARTAMENTO Este modelo, agora, indica que um DEPARTAMENTO pode possuir muitos projetos. Porem cada PROJETO só poderá ser controlado por apenas um DEPARTAMENTO. Para identificar estas características colocamos ao lado do relacionamento dados que representem as mes- mas. Chamamos estes dados de cardinalidade do relacionamento. A cardinalidade define, portanto, o número de ocorrências de uma entidade que pode estar associada em um relacionamento, sendo útil para extrair as regras de consistência e integridade dos dados. Assim como define também se um relacionamento é obrigatório ou opcional. Com isso, há duas cardinalidades a considerar: Cardinalidade Máxima e Cardinalidade Mínima. Cardinalidade Máxima: Representa o numero de ocorrências que podem existir em um relacionamento sen- do representado por “’1” ou “N”, ou seja, uma único relacionamento (1) ou muitos relacionamentos (N) Cardinalidade Mínima: Representa a obrigatoriedade ou não do relacionamento sendo representado por “0” ou “1”, ou seja, o relacionamento é opcional (0) ou o relacionamento é obrigatório (1). CARDINALIDADE (MÍNIMA MÁXIMA) Exemplo: No exemplo, podemos ler da seguinte forma: DEPARTAMENTO (1,1) CONTROLA (0,N) PROJETO Um DEPARTAMENTO pode controlar nenhum (0) PROJETO. (cardinalidade mínima) Um DEPARTAMENTO pode controlar muitos(N) PROJETOS. (cardinalidade máxima) Projeto de Banco de Dados Relacional| Unidade B 15 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S OBS: O “0” da cardinalidade mínima representa que é opcional o departamento controlar ou não um projeto e o “N” da cardinalidade máxima representa que um departamento pode controlar vários projetos. Um PROJETO deve ser controlado por um(1) DEPARTAMENTO. (cardinalidade mínima) Um PROJETO deve ser controlado por apenas um(1) DEPARTAMENTO. (cardinalidade máxima) OBS: O “1” da cardinalidade mínima representa que é obrigatório o projeto ser controlado por um departamento e o “1” da cardinalidade máxima representa que o projeto só pode ser controlado por um departamento. ESPECIALIZAÇÃO e GENERALIZAÇÃO Além dos atributos outras caracteristicas podemos associar as entidades. Especialização: É um processo de transformar uma entidade que podemos chamar de superclasse em outras subclasses. Por exemplo, as subclasses podem ser {motorista E engenheiro} e a superclasse seria FUNCIONÁRIO. É uma especial- ização que distingue o FUNCIONÁRIO pelo tipo de trabalho A figura acima é um exemplo do diagrama para uma especialização. Um relacionamento de superclasse com subclasse é freqüentemente chamado de IS-A (É UM), ou seja, O MOTORISTA é um FUNCIONÁRIO e o ENGEN- HEIRO é um FUNCIONÁRIO. Em relação aos atributos, nos teremos os atributos na superclasse e na subclasse. Os atributos na super- classe serão herdados na subclasse. Por exemplo, os atributos da entidade motorista são: código, nome, número carteira. Quais seriam os principais motivos de fazer a especialização? Para Navathe, existem duas razões para se in- cluir as especializações em um modelo de dados. Projeto de Banco de Dados Relacional| Unidade B 16 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S A primeira é que certos atributos podem ser usados em algumas, mas não em todas as entidades da super- classe. Uma subclasse é definida de forma a agrupar as entidades para as quais estes atributos se aplicam. Os membros de uma subclasse podem ainda, compartilhar a maioria de seus atributos com outros membros da superclasse. A segunda razão para usar as subclasses é que apenas as entidades que sejam membros de alguma subclasse possam participar de algum tipo de relacionamento. Em resumo, o processo de especialização nos permite fazer o seguinte: Definir um conjunto de subclasses de um tipo de entidade.• Estabelecer atributos específicos adicionais para cada subclasse.• Estabelecer tipos de relacionamentos adicionais específicos entre cada subclasse e outros tipos de entidade, ou outras • subclasses. Generalização: É um processo contrário ao da especialização, que ocorre quando temos mais de uma entidade com atributos comuns entre elas e então neste caso podemos criar uma superclasse com os atributos em comum, utilizando assim o conceito da generalização. Exemplo: Entidade Carro: número passageiros, velocidade máxima, preço, número placa. Entidade Caminhão: preço, número placa, numero eixos, capacidade. Com a Generalização, podemos criar uma entidade VEICULO que terá como atributos, os em comum das entidades carro e caminhão. ENTIDADE ASSOCIATIVA Uma entidade associativa é utilizada quando entre o relacionamento de duas entidades verificamos a necessidade de relacionar com outra relação. Na modelagem er não foi prevista a possibilidade de associar dois relacionamentos entre si, porem na prática quando isso é necessário na modelagem devemos então transformar o relacionamento em uma entidade associativa. Projeto de Banco de Dados Relacional| Unidade B 17 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Exemplo: No exemplo acima, o FUNCIONÁRIO tem uma relação com o cliente de ATENDER. Mas vamos aumentar nosso exemplo, imaginando que o cliente FUNCIONÁRIO ALUGUE Fitas de DVD para o cliente a partir do atendimento. Para isso teremos que criar uma entidade FITAS. Mas o problema é em que entidade vamos relacionar as fitas, se relacionamentos com cliente ficará faltando a informação de que funcionário locou a fita para o cliente e se relacionarmos com o funcionário fica faltando a informação de que cliente locou a fita. Para resolver este prob- lema devemos relacionar as Fitas à relação ATENDE. Para isso, podemos transformar o relacionamento ATENDE em uma entidade e esta entidade relacionar com FITA. Projeto de Banco de Dados Relacional| Unidade B 18 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S CONSTRUÇÃO DE MODELO ER Segundo Heuser, o Modelo ER tem algumas propriedades que são relevantes para se modelar. UM MODELO ER DEVE SER FORMAL ABORDAGEM ER TEM PODER DE EXPRESSÃO LIMITADO DIFERENTES MODELOS PODEM SER EQUIVALENTES Construção do modelo ER: O modelo ER lista e define a estrutura requerida para construir um modelo de dados, mas não há um pro- cesso padrão para fazê-lo. O importante é saber que o modelo ER não é construído de uma única vez, é um processo incremental, onde o modelo é construído em pequenos passos e pequenas transformações até chegar ao modelo completo. Existem várias estratégias de modelagens sugeridaspelos autores, mas podemos dentro destas estratégias fazer uma combinação, o que é normalmente aplicado. Antes de definir qual a estratégia de modelagem devemos identificar todas as descrições e conhecimentos possíveis sobre o processo o que normalmente é coletado na fase de análise de requisitos do sistema. Um modelo ER é um modelo formal, preciso, não am- bíguo. Isso significa que diferentes leitores de um mesmo modelo ER devem entender exatamente o mesmo. Tanto é assim, que um modelo ER pode ser usado como en- trada em uma ferramenta CASE na geração de um banco de dados relacional. Por isso, é de fundamental importân- cia que todos os envolvidos na confecção e uso de dia- gramas estejam treinados na sua perfeita compreensão. Em um modelo ER, são apresentadas apenas algumas propriedades de um banco de dados. Em realidade, a lin- guagem nos modelos ER é uma linguagem muito pouco poderosa e muitas propriedades desejáveis do banco de dados necessitam ser anotados adicionalmente ao DER. Na prática, muitas vezes, observa-se analistas em acirradas discussões a fim de decidir como um determinado objeto da realidade modelada deve aparecer no modelo. Às vezes, tais discussões são absolutamente supérfluas, pois os difer- entes modelos ER, em qualquer das opções defendidas pe- los diferentes analistas, geram o mesmo banco de dados Projeto de Banco de Dados Relacional| Unidade B 19 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Sugestões de estratégias de modelagem: HEUSER: Estratégia “ TOP-DOWN” Nesta estratégia, é sugerido que os conceitos possam ser refinados em conceitos mais detalhados. Partindo assim dos conceitos de entidades genéricas após os seus atributos e na seqüência os relacionamentos entre as entidades após os atributos de relacionamentos e por fim as especializações de entidades. Modelo Superficial: Nesta primeira etapa, é construído um DER pouco detalhado (faltando domínios dos atributos e 1. cardinalidades mínimas de relacionamentos) na seguinte etapa: a) enumeração das entidades; b) identificação dos relacionamentos e hierarquias de generalização/especialização entre as entidades. Para cada rela- cionamento identificam-se as cardinalidades máximas. c) determinação de atributos de entidades e relacionamentos d) determinação dos identificadores de entidades e relacionamentos e) o banco de dados é verificado quanto ao aspecto temporal modelagem detalhada2. a) adicionam-se os domínios dos atributos; b) definem-se as cardinalidades mínimas dos relacionamentos c) definem-se as demais restrições de integridade que não podem ser representadas pelo DER Validação do modelo3. a) Procuram-se construções redundantes ou deriváveis a partir de outras no modelo b) Valida-se o modelo com o usuário. Dicas: Sites com passos para construir um modelo de dados http://www.sinfic.pt/SinficNewsletter/sinfic/Newsletter41/Dossier2.html Projeto de Banco de Dados Relacional| Unidade C 20 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 6 . Modelo Lógico Na unidade 5, trabalhamos com o modelo ER, no qual podemos, através dele, identificar as tabelas e relacio- namentos entre outros itens que serão importantes no planejamento do nosso Banco de Dados. Esse modelo será identificado segundo a ilustração abaixo (fig. 1), retirada do livro Sistemas de Banco de Dados , logo após a análise de requisitos. Em seguida, vamos trabalhar com o PROJETO LÓGICO de um Banco de Dados Relacional e veremos a relação existente entre o modelo ER e um modelo lógico. 6.1 Modelo relacional o modelo de dados relacional usa o conceito de uma relação matemática, como se fosse uma tabela com valores. Os modelos que antecederam o modelo relacional são os modelos hierárquicos e modelos de rede. unidade C ModeLo LógiCo Projeto de Banco de Dados Relacional| Unidade C 21 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Quando uma relação é usada como uma tabela de valores, cada linha desta relação representa uma coleção de valores de dados relacionados. exemplo: PeSSoa Codigo Nome Telefone Endereço 1 Maria 232323 Av. JK 2 José 242424 Av. JB 3 Carla 252525 Av.JX No exemplo acima, a linha com o código 1 representa os dados relacionados de uma pessoa que mora na Av. JK, com telefone de número 232323 cujo nome é Maria. Associando com a unidade 5 (modelo conceitual), onde cada entidade e relacionamento modelava um objeto do mundo real. Na abordagem relacional, cada linha representa dados de uma ocorrência de entidade. No caso acima a entidade PESSOA do modelo conceitual representa a relação no modelo relacional. O modelo relacional formal chama cada linha de uma tabela de tupla, o cabeçalho da coluna é chamado de atributo e o conjunto ordenado das linhas é denominado de tabela ou relação. E ainda podemos definir o tipo de dado que descreve os valores que podem aparecer nas tabelas como domínios. nome da Tabela (Relação) atributos PeSSoa Nome Telefone Endereço Maria 232323 Av. JK José 242424 Av. JB Linhas (Tuplas) Para identificar cada tupla e estabelecer relações entre estas o conceito básico é o da chave. Vamos considerar o que o autor Heuser descreve sobre chave no seu livro Projeto de Banco de Dados . Neste ele considera três tipos de chaves: chave primária, chave alternativa e chave estrangeira. CHaVe PRiMÁRia: Como exposto anteriormente, uma tabela é constituída por uma lista ordenada de valores, ou seja, por tup- las. Como forma de garantir que não aconteça a duplicidade dessas tuplas, utiliza-se o procedimento de inserir nessa tabela uma chave. A chave funciona como identificadora de uma tupla, garantindo, assim, a regra da unicidade. Uma tabela é um conjunto de tuplas, onde cada tupla é uma lista ordenada de valores. Projeto de Banco de Dados Relacional| Unidade C 22 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S A chave que identifica uma tabela é denominada de chave primária, podendo ser composta por um ou mais campos da tabela em questão. A especificação de uma chave define uma restrição de integridade, ou seja, uma regra que garante que a unicidade será obedecida em todos os estados do Banco de Dados. exemplo: aLuno Codigo Nome Endereco 1 Maria Av. JK 2 José Av. JB 3 Pedro Av. JC aLuno Nome Endereco Maria Av. JK José Av. JB José Av. JC não será inserido, pois a chave não permite a duplicidade, no caso da chave primária ser o nome. Na tabela acima, o valor de um atributo chave é usado para identificar, unicamente, cada tupla, pois, o atribu- to “nome de aluno” pode receber um valor igual, ou seja, ter mais de um aluno com o mesmo nome. Se o campo “nome do aluno” for indicado como chave, será garantida a regra da unicidade, contudo, quando há a ocorrência de nomes iguais, apenas um é inserido, no caso o primeiro. Nesse caso, procede-se a criação de um campo, pref- erencialmente numérico, que fará a identificação da tupla, podendo assim, serem gravados nomes iguais que, entretanto, constituem tuplas diferentes. exemplo: aLuno Codigo Nome Endereco 1 Maria Av. JK 2 José Av. JB 3 José Av. JC o campo código permite a inclusão de homônimos, sem desrespeitar a regra da unicidade CHaVe eSTRangeiRa: Uma chave estrangeira é um atributo ou uma combinação de atributos que aparecem necessariamente como chave primária em outra tabela. aLuno Cd_Aluno Nome_Aluno End_Aluno Cd_Curso 1 Maria Av. JK 3 2 José Av. JB 2 3 Pedro Av. JC 3 Projeto de Banco de Dados Relacional| Unidade C 23 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S CuRSo Cd_Curso Nome_Curso Sigla_Curso 1 Informatica INF 2 Quimica QUI 3 Biologia BIO Nas tabelas acima podemos identificarque o Cd_Curso da relação CuRSo é uma chave estrangeira em rela- ção a chave primária da tabela aLuno. Com esta relação podemos identificar que todo aluno esta relacionado a um curso através de um atributo Cd_Curso. Exemplo: O aluno José está vinculado ao curso de Química• O aluno Pedro está vinculado ao curso de Biologia• A aluna Maria está vinculada ao curso de Biologia• CHaVe aLTeRnaTiVa: Quando podemos identificar mais de uma chave em uma tabela, escolhemos uma como chave primária e as demais são consideradas chaves alternativas. PeSSoa Codigo Nome Telefone CPF 1 Maria 232323 90909090990 2 José 242424 808080808080 No exemplo acima, podemos usar tanto o código como o CPF para identificar a unicidade da linha. 6.2 Restrições do modelo relacional Até aqui vimos características de uma única tabela em um banco de dados, normalmente haverá muitas relações e as tuplas se relacionamento de diversas maneiras. Há muitas restrições em um Banco de dados para seus valores reais. Vamos ver algumas restrições no Banco de dados Relacional: Restrição de domínio: Como já foi apresentado no item anterior, cada coluna de uma tabela é representada por um atributo. Quan- do uma tabela é definida, em cada coluna serão atribuídos valores para os campos. Ao conjunto de valores atribuídos chamamos de domínio do campo. Para especificação de domínio, podemos: Definir o tipo de dado aceito pelos valores incluídos. • Podemos usar como referência os tipos de dados oferecidos pelo padrão SQL-99• Projeto de Banco de Dados Relacional| Unidade C 24 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Tipo de Dado Descrição INTEGER ou INT Número positivo ou negativo inteiro. O número de bytes que pode ser utilizado varia em função do banco de dados utilizado. SMALLINT Mesma função do INTEGER, mas ocupa cerca da metade do espaço. NUMERIC Número positivo ou negativo de ponto flutuante. Normalmente, deve¬ se informar o tamanho total do campo e definir quantas casas decimais devem ser ar- mazenadas após a vírgula. DECIMAL Semelhante ao NUMERIC, mas, em alguns bancos de dados, poderá ter uma maior precisão após a vír- gula. REAL Número de ponto flutuante de simples precisão. A diferença básica é que os valores serão armazenados em representação exponencial, portanto serão arre- dondados para o nível mais próximo de precisão. DOUBLE PRECISION Número de ponto flutuante de dupla precisão. Comporta-se como o REAL, mas permite maior aproxi- mação de resultados. FLOAT Número de ponto flutuante em que você define o nível de precisão (número de dígitos significativos). BIT Armazenamento de um número fixo de bits. O número de bits deve ser indicado, do contrário o padrão será 1. BIT VARYING Igual ao BIT, permitindo armazenar valores maiores. Normalmente, utiliza-se para armazenamento de ima- gens. DATE Permite armazenar datas. TIME Permite armazenar horários. TIMESTAMP Permite armazenar uma combinação de data e hora. CHARACTER ou CHAR Permite armazenar cadeias de caracteres (letras, símbolos e números). 0 tamanho deve ser informado e será fixo, ou seja, mesmo que não utilizado total- mente, será ocupado o espaço fisicamente. O valor definido será o tamanho máximo da cadeia armazena- da. CHARACTER VARYING ou VARCHAR Permite armazenar cadeias de caracteres, mas com tamanho variável. Nesse caso, especifica-se o taman- ho máximo da coluna. Se for utilizado menos espaço que o máximo definido, o espaço restante não será ocupado. INTERVAL Intervalo de data ou hora. Tabela extraída do livro: OLIVEIRA, Celso Henrique Poderoso. SQL Curso Prático. São Paulo: Novatec, 2002 Projeto de Banco de Dados Relacional| Unidade C 25 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Restrição de Chave e Valores null Restrição de Chave No item 5, apresentamos as chaves primárias, estrangeira e candidata. Estas chaves especificam uma re- strição de unicidade, na qual duas linhas diferentes serão distinguidas pela chave atribuída. Valores nulos Outro exemplo de restrição é a especificação de valores nulos. Podemos especificar, com isso que um cam- po não poderá ser nulo. Integridade da Entidade Uma entidade integra estabelece os valores de chave primária não podem ser nulos, caso isso ocorra não poderemos distinguir as linhas através da chave primária. 6.3 Transformar um Modelo Conceitual em Modelo Relacional (modelo lógico) O esquema de um Banco de dados relacional (modelo lógico) deve ter no mínimo as relações que formam o Banco, os atributos que as relações possuem e as restrições do modelo. 1º RegRa - TRanSFoRMaR enTidade ReguLaR eM uM ReLaÇÃo Em relação ao exemplo acima vamos fazer o primeiro regra para transformação, que é transformar toda entidade regular em uma relação que inclua todos os atributos simples, trata-se de uma tradução inicial que na seqüência poderá ser fundida com outra entidade. Para representar o modelo lógico vamos utilizar as mesmas notações utilizadas na bibliografia do HEUSER que será explicado neste primeiro exemplo: Com isso a entidade PESSOA é transformada em uma tabela PESSOA e cada atributo da entidade é transfor- mado em uma coluna da tabela sendo que o atributo chave primária será identificado com um sublinhado. Para cada tipo de entidade regular transformar em uma relação que inclua todos os atributos simples Pessoa(Codigo, Sexo, Nome) Projeto de Banco de Dados Relacional| Unidade C 26 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 2º RegRa – TRanSFoRMaR uMa enTidade FRaCa Dependente(Numero, Codigo, Data_Nascimento, Nome) 3º RegRa – TRanSFoRMaR ReLaCionaMenToS BinÁRioS 1:1 Quando temos este tipo de relação, há algumas opções para a transformação: 1º opção: Escolher uma das tabelas e inserir nela como chave estrangeira a chave primária do outra tabela. No nosso exemplo acima, temos a relação entre uma entidade pessoa e departamento. O próximo passo é analisar a relação existente. Como o relacionamento é binário 1:1 vamos usar a 1º opção e inserir em uma das entidades a chave primária da outra. É melhor escolher, entre as duas entidades, aquela com participação total, ou seja, a entidade de departamento que preve a obrigatoriedade de ter um gerente. Ainda na entidade escolhida para receber a chave estrangeria também inserimos os atributos do relacionamento. Para cada tipo de entidade fraca trans- formar em uma relação que inclua to- dos os atributos simples e mais a chave primária da entidade dependente. Ambas passam a ser a chave primária composta da relação dependente. Desta forma estamos apenas transformando as entidade regulares em tabelas: Pessoa(Codigo, Nome, Sexo) Departamento(Numero, Nome) Projeto de Banco de Dados Relacional| Unidade C 27 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S observação da notação �Para�representar�a�chave�estrangeira,�após�a�definição�da�relação�que�contém�chave�estrangeira�descrevemos: <nome�da�coluna�ch.�Estrangeira>�referencia�<nome�da�relação> 2º opção: Nesta opção, pode-se fazer uma fusão entre as entidades participantes. Normalmente ocorre quando as duas entidades têm participação total, ou seja, a cardinalidade mínima nas duas entidades é 1. Congressoequipe(Codigo, nome, nomeequipe, data) Neste exemplo, fizemos a fusão das duas entidades em uma única relação incluindo os atributos das duas entidades e do relacionamento. No exemplo acima tivemos que alterar o nome da equipe para NomeEquipe já que o atributo de congresso também estava identificado por Nome. diCaS: Nos�exemplos�estamos�colocando�como�nome�de�coluna�os�nomes�dos�atributos.�Para�os�exercícios�é�importante�que�criemos�uma�no- menclatura para esta conversão. Por exemplo: Codigo = Cod Numero = No A�recomendação�é�que�se�use�sempre�a�mesma�abreviatura�em�todas�as�relações�do�Banco�de�Dados.Tabela�Proposta�por:�HEUSER,�Carlos�Alberto.�Projeto�de�Banco�de�Dados.�Porto�Alegre:�Sagra�Luzato,�1999. Pessoa(Codigo, Nome, Sexo) Departamento(Numero, Codigo, Nome, Data_Inicio) Codigo referencia Pessoa Projeto de Banco de Dados Relacional| Unidade C 28 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 4º RegRa – TRanSFoRMaR ReLaCionaMenToS BinÁRioS 1:n Para cada tipo de relacionamento Binário 1:N identificar a entidade participante do lado N e inserir como chave estrangeira a chave primária do outra entidade. Isso é feito porque cada instância de entidade do lado N está relacionada a no máximo uma instância do lado 1. Pessoa (Codigo,Nome, Sexo, Numero) Numero referencia Departamento Departamento(Numero, Nome) No exemplo acima, inserimos a chave primária de departamento como chave estrangeira na relação Pessoa. Tabela�Proposta�por:�HEUSER,�Carlos�Alberto.�Projeto�de�Banco�de�Dados.�Porto�Alegre:�Sagra�Luzato,�1999. 5º RegRa – TRanSFoRMaR ReLaCionaMenToS BinÁRioS n:M Neste caso, para cada tipo de relacionamento cria-se uma tabela nova. Inserir como chave estrangeira as chaves primárias das duas tabelas que fazem parte e as duas chaves irão representar a chave primária da nova tabela. Também devemos incluir todo tipo de atributo que tiver na relação entre as entidades. Projeto de Banco de Dados Relacional| Unidade C 29 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Pessoa(Codigo, Nome, Sexo) Projeto(Numero, Nome) Trabalha(Codigo, Numero, horas) Código referencia Pessoa Numero referencia Projeto O Diagrama acima gerou 3 relações, uma para entidade pessoa outra para entidade projeto e outra para a relação trabalha. A relação trabalha ficou composta de duas chaves primárias, código da entidade Pessoa e Numero da enti- dade Projeto. E ainda faz parte desta relação o atributo horas do relacionamento trabalha. Tabela�Proposta�por:�HEUSER,�Carlos�Alberto.�Projeto�de�Banco�de�Dados.�Porto�Alegre:�Sagra�Luzato,�1999. 6º RegRa – TRanSFoRMaR ReLaCionaMenToS n-ário: Para transformar relacionamentos n-ários deve seguir os seguir os seguintes passos: Transformar o relacionamento em uma entidade e esta entidade fica ligado através de um relacionamento binário com 1. as outras entidades. Aplicar as regras para os relacionamentos binários.2. Projeto de Banco de Dados Relacional| Unidade C 30 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Exemplo: Seguindo os passos para a transformação acima, temos o seguinte modelo relacional: Produto(• CodProd, Nome) Cidade(• CodCid, Nome) Distribuidor(• CodDistr, Nome) Distribuição(• CodProd, CodCid,CodDistr, DataInicio) CodProd referencia Produto• CodCid Referencia Cidade• CodDistr Referencia Distribuidor• Projeto de Banco de Dados Relacional| Unidade C 31 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 7º RegRa – TRanSFoRMaR geneRaLiÇÕeS / eSPeCiaLiZaÇÕeS Existem duas opções no caso de Generalização / Especialização: 1º) Utilizar uma tabela para cada entidade 2º) Utilizar uma tabela para toda Generalização / Especialização 1º caso – Uma relação para cada entidade Acrescentar à chave primária da tabela correspondente a entidade genérica, em cada tabela correspondente a uma • entidade especializada. Carro (Placa, Ano, Modelo, Marca) Placa referencia Veiculo Caminhao(Placa, Capacidade, Marca) Placa referencia Veiculo 2º caso – Fusão em um única relação Veiculo (Placa, Ano, Modelo, MarcaCarro, Capacidade, MarcaCaminhao) No exemplo de modelo relacional acima temos a chave primária Placa que foi derivada da entidade General- izada e todos os atributos das entidades especializadas se tornaram colunas na tabela. 6.4 Normalização de dados Uma categoria importante de restrições são as dependências de dados, que incluem as dependências funcio- nais e as multivaloradas. Estas restrições são usadas para certificar o projeto de banco de dados relacional e são utilizadas em um processo chamado Normalização. Este processo faz com que uma relação passe por diversos testes para que satisfaça uma forma normal. A normalização de dados é uma seqüência de processos executados nas tabelas em função das suas de- pendências funcionais e chaves primárias para alcançar algumas propriedades como: Minimização de redundâncias;• Minimização de anomalias de inserção, exclusão e atualização.• Há cinco regras que se aplicam a Banco de dados: Primeira Forma Normal (1FN)• Segunda Forma Normal (2FN)• Terceira Forma Normal (3FN)• Projeto de Banco de Dados Relacional| Unidade C 32 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Quarta Forma Normal (4FN)• Quinta Forma Normal (5FN)• oBS: Pode-se�ter�um�modelo�estável�atingindo�a�terceira�forma�normal�sendo�a�quarta�e�a�quinta�utilizada�em�casos�específicos�apenas�quando� for necessário. Exemplo de uma tabela Não Normalizada: cd_Aluno nome_aluno dt_nascimento nome_disciplina 1 Vera 2/6/1982 Português, matemática 2 Tânia 9/12/1981 História, matemática 3 Matias 12/11/1980 Português, história 4 Carlos 7/4/1979 História, matemática 5 Sérgio 25/2/1982 Português, matemática 6.4.1 Primeira Forma normal (1Fn) Para uma tabela estar na 1FN não poderá conter atributos multivalorados, compostos e combinação entre eles, com isso os atributos devem possuir valores atômicos (indivisíveis). Vamos utilizar o exemplo da tabela não normalizada acima. Problema: A coluna disciplina possui atributos multivalorados, que não pode haver na 1FN. Solução: Para cada disciplina fazer um cadastro novo de Aluno cd_aluno cd_disciplina nome_aluno dt_nascimento nome_disciplina 1 1 Vera 2/6/1982 Português 2 2 Vera 2/6/1982 Matemática 3 3 Tânia 9/12/1981 História 4 2 Tânia 9/12/1981 Matemática 5 1 Matias 12/11/1980 Português 6 3 Matias 12/11/1980 História 7 3 Carlos 7/4/1979 História 8 2 Carlos 7/4/1979 Matemática 9 1 Sérgio 25/2/1982 Português 10 2 Sérgio 25/2/1982 Matemática Problema: Com isso, estamos ocasionando o problema de redundância de dados, pois os atributos de alunos estão sendo repetidos para a inclusão de novas disciplinas. A primeira forma normal não permite também atributos multivalorados que sejam compostos. São chamados de relações aninhadas, pois contém uma relação em cada tupla. Projeto de Banco de Dados Relacional| Unidade C 33 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 6.4.2 Segunda Forma normal (2Fn) Para resolver o problema da redundância de dados, passamos esta tabela para segunda forma normal. Para isso é preciso: A tabela estar na primeira forma normal e todos os atributos da tabela deve ser dependentes funcionais da chave completa e não de parte da chave. Uma tabela com uma chave primária formada por apenas um atributo esta automaticamente na 2FN. Exemplo transformando a tabela que esta na 1FN acima cd_aluno nome_aluno dt_nascimento 1 Vera 2/6/1982 2 Tânia 9/12/1981 3 Matias 12/11/1980 4 Carlos 7/4/1979 5 Sérgio 25/2/1982 cd_disciplina nome_disciplina 1 Português 2 Matemática 3 História 6.4.3 Terceira Forma normal (3Fn) Para a transformação na 3FN, eliminamos um outro tipo de redundância de dados. Para transformação pre- cisamos analisar se os atributos não-chave dependem diretamente da chave primária ou se dependem de outros atributos não chave. Chamamos de dependência transitiva quando uma coluna, além de depender da chave primária da tabela, depende também de outra coluna ou conjunto de colunas da tabela. Referências: �ELMASRI,�R.�NAVATHE,�Sistemas�de�Banco�de�Dados.�4ª�Edição:�Addison-Wesley,�2008.� �HEUSER,�Carlos�Alberto.�Projeto�de�Banco�de�Dados.�Porto�Alegre:�Sagra�Luzzatto,�1998 Projeto de Banco de Dados Relacional| Unidade C 3 S is te m a U ni ve rsid ad e A be rta d o B ra si l - U A B | C E FE T- R S ATIVIDADE 01 Utilize as regras de transformação de modelos ER para modelo lógico relacional, projete um Banco de dados relacional para os Diagramas a seguir: A) B) unIDADE C Projeto de Banco de Dados Relacional| Unidade C 4 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S C) D) Projeto de Banco de Dados Relacional| Unidade D 39 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S unidaded LinGuaGeM de COnSuLTa eSTRuTuRada 7. Linguagem de Consulta estruturada - SQL SQL (Structured Query Language – Linguagem de Consulta Estruturada) É uma linguagem Estruturada padrão para acessar dados em um SGBD(Sistema Gerenciador de Banco de Dados) Relacional. Em resumo SQL é uma linguagem de consulta a banco de dados, em que informamos o que queremos e o SGBD escolhe adequada- mente 7.1 COMPOnenTeS da LinGuaGeM SQL DDL (Data Definition Language) = Linguagem de Definição de Dados Permite aos usuários a criação de novos componentes como tabelas e índices. exemplo: CREATE TABLE ALTER TABLE Referente a tabelas DROP TABLE CREATE INDEX ALTER INDEX Referente a índices DROP INDEX DML (Data Manipulation Language) = Linguagem de Manipulação de Dados Permite aos usuários manipular os dados armazenados no Banco de Dados INSERT DELETE UPDATE DCL (Data Control Language) = Linguagem de Controle de Dados Permite controlar autorizações de dados e licenças a usuários para o controle do Banco de Dados CREATE USER ALTER USER GRANT REVOKE DQL (Data Query Language) = Linguagem de Consulta de Dados Permite elaborar consultas ao Banco de Dados. SELECT Projeto de Banco de Dados Relacional| Unidade D 40 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 7.1.1 TABELAS / DDL (Data Definition Language) CRIAR TABELAS• EXCLUIR TABELAS• ALTERAR TABELAS• INCLUIR LINHAS EM TABELAS• ATUALIZAR LINHAS EM TABELAS• EXCLUIR LINHAS EM TABELAS• A) CRIAÇÃO DE TABELAS: Sintaxe para criação de tabelas: nome_da_tabela = nome da tabela gerada a partir do modelo lógico (deve ser único) nome_da_coluna = nome da coluna referente a tabela que também deverá ser único na tabela. tipo_coluna = tipo de dado da coluna (ver tabela 1) DICAS: Para os nossos exemplos, serão usados como referência os tipos de dados utilizados no SGBD PostrgreSQL. http://pgdocptbr.sourceforge.net/pg80/datatype.html Dependendo do SGBD que você for utilizar, deverá verificar os tipos de dados em específico para o mesmo. coluna constraint =• regras das colunas constraint_da_tabela =• regras das tabelas Constraints são regras que podemos definir tanto para colunas como para tabelas ,veremos algumas con- straints de forma geral, mas ao utilizar o SGBD deverá ser analisado as constraints em específico. Chave primária =• É coluna ou um conjunto de colunas que identifica um registro único na tabela Sintaxe: PRIMARY KEY (nome_da_coluna) Exemplo: PRIMARY KEY (Codigo_Funcionario) Chave estrangeira =• É uma coluna ou conjunto de colunas que referencia a chave primária de outra tabela Sintaxe: FOREIGN KEY nome_da_chave_estrangeira (lista_de_colunas) REFERENCES nome_tabela ON UPDATE ação ON DELETE ação CREATE TABLE nome_da_tabela (nome_da_colunax tipo_colunax colunax constraint, nome_da_colunay tipo_colunay colunay constraint, constraint_da_tabela) Projeto de Banco de Dados Relacional| Unidade D 41 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Exemplo: FOREIGN KEY codigo_Funcionario_fk (codigo_funcionario)• REFERENCES funcionario• ON UPDATE CASCADE• ON DELETE RESTRICT • Significado:• nome_da_chave_estrangeira • = nome opcional para a chave estrangeira lista_de_colunas = • colunas que fazem referencia a outras tabelas nome_tabela =• nome da tabela onde esta a chave primária ação = • quando alteramos (UPDATE) ou excluímos (DELETE) uma linha da tabela que contém como referência esta chave podemos determinar algumas ações: CASCADE: exclui ou altera todos os registros que estão relacionados a coluna. RESTRICT: não permite excluir ou alterar a chave primária referenciada NO ACTION:em caso de alteração, não modifica os valores que se relacionam a eles. SET NULL: altera o valor da coluna para nulo SET DEFAULT: altera o valor da coluna para o valor especificado na cláusula DEFAULT se houver) DEFAULT =• atribuir conteúdo padrão Sintaxe: nome_da_coluna Tipo_de_dado DEFAULT valor Exemplo: quantidade INTEGER DEFAULT 1 NOT NULL =• quando especificar esta constraint significa que o valor da coluna não poderá ser nulo, caso não seja digitado nenhum valor para o campo, o banco de dados retornará um erro. Exemplo: quantidade INTEGER NOT NULL Significa que nunca poderemos deixar a coluna quantidade sem valor. UNIQUE =• indica que em uma coluna não poderá haver repetições mas poderá ter valores nulos, no caso da chave primária que não pode haver repetições também não pode haver valores nulos. Exemplo: quantidade INTEGER UNIQUE Significa que para cada quantidade especificada deve haver um valor para coluna diferente. CHECK = quando especificamos a constraint CHECK podemos definir domínios para as colunas, com isso • especificamos valores possíveis para a coluna. SEXO CHAR(1) CHECK (UPPER(SEXO) = ‘M’ OR UPPER(SEXO) = ‘F’) Significa que a coluna sexo deverá ter os valores F ou M No exemplo acima temos a adição de alguns conceitos novos que iremos trabalhar antes de continuar a demonstração de comandos: B) ALTERAÇÃO DE TABELAS Para alterar tabelas utilizamos o comando ALTER TABLE, a seguir mostraremos exemplos de alterações que poderemos fazer dependendo do SGBD utilizado. Acrescentar nova coluna na tabela existente• ALTER TABLE livro add quantidade INTEGER Acrescentar Constraints em tabelas• Projeto de Banco de Dados Relacional| Unidade D 42 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S ALTER TABLE livro add PRIMARY KEY (issn) Acrescentar modificações em Colunas• ALTER TABLE livro MOdiFY quantidade INTEGER NOT NULL Excluir colunas ou Constraints• ALTER TABLE livro deLeTe quantidade // excluir a coluna quantidade da tabela livro ALTER TABLE livro deLeTe primary key // excluir uma constraints CURIOSIDADES No POSTGRESQL para exclusão de colunas se usa o comando DROP e não DELETE. Alterar nomes de Tabelas ou Colunas• ALTER TABLE livro RenaMe Liv // alterar nome de tabela ALTER TABLE livro RenaMe quantidade TO quant_livros // alterar nome de coluna C) EXCLUSÃO DE TABELAS dROP TaBLe livro 7.1.2 DML (Data Manipulation Language) = Linguagem de Manipulação de Dados INSERIR LINHAS EM TABELAS• APAGAR LINHAS EM TABELAS• ATUALIZAR LINHAS EM TABELAS• No postgreSQL pode ser especificado após o nome da tabela: CASCADE=Remove automaticamente os objetos que dependem da tabela (como as visões). RESTRICT=Recusa remover a tabela se existirem objetos que dependem da mesma. Este é o padrão. Exemplo: DROP TABLE livro CASCATE Projeto de Banco de Dados Relacional| Unidade D 43 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S A) INCLUIR LINHAS EM TABELAS Utilizando o exemplo abaixo, vamos incluir informações na tabela a partir do comando inSeRT inTO. inSeRT inTO Livro // quando não forem especificadas as colunas subtende-se que serão incluídos valores em todas as colunas VALUES (1, 2, ‘Introdução à Programação’) OU inSeRT inTO Livro (codigo_livro, codigo_editora, nome) //especificando o nome das colunas VALUES (1, 2, ‘Introdução à Programação’) B) EXCLUIR LINHAS EM TABELAS Podemos através do comando DELETE, excluir uma ou mais linhas em uma tabela. DELETE FROM livro Podemos definir um limite para exclusão através da cláusula WHeReDELETE FROM livro WHERE codigo_livro=3; Com isso, o registro da tabela livro que tiver como código 3 será excluída C) ATUALIZAR TABELAS Utilizamos o comando uPdaTe para atualizar o conteúdo de uma ou mais colunas. UPDATE livro SET nome = ‘INTRODUÇÃO À PROGRAMAÇÃO’ WHERE codigo_livro = 2; No exemplo acima, alteramos (SET) a coluna nome da tabela livro. Em que o nome passou a ser INTRODUÇÃO A PROGRAMAÇÃO. Esta alteração ocorreu na linha em que a coluna codigo_livro possuía valor 2, para isso uti- lizamos a cláusula WHERE. CREATE TABLE livro ( codigo_livro INTEGER NOT NULL codigo_editora INTEGER NOT NULL nome VARCHAR(60) PRIMARY KEY (codigo_livro) FOREIGN KEY (codigo_editora) REFERENCES gravadora (codigo_editora) Projeto de Banco de Dados Relacional| Unidade D 44 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 7.1.3 DQL (Data Query Language) = Linguagem de Consulta de Dados SELECT = é um comando utilizado para relacionar atributos desejados em uma consulta. Após o SeLeCT rela- cione os atributos, se desejar que todos os atributos apareçam no resultado utilize um “*” (asterisco). select [coluna_1, ... , coluna_n] FROM = é o comando utilizado para referenciar as relações utilizadas from [tabela_1, ... , tabela_n] WHERE = Após a cláusula where, segue uma condição ou um conjunto de condições que tem a função de limitar o numero de linhas mostradas na relação de saída. A cláusula where é optativa. where [condição_1 ... exemplo: BANCO CodBanco NmBanco 01 Atual 02 SulReal 03 Poupar 04 DinMaster DICAS: Todas as operações realizadas com sql são feitas em tabelas e geram uma nova tabela. AGENCIA CodAgencia EndAgencia NrAgencia CodBanco 01 Av. Julio de Cássio 2665 01 02 Rua Felipe Almarante 2666 01 03 Rua Cássio Jair 5869 03 04 Av. Sergio Afonso 5868 03 05 Rua Carla Maria 9632 02 Quando utilizar mais de uma relação após o FROM e se houver um mes- mo nome de coluna em mais de uma relação. Informe: nome_da_tabela.nome_da_coluna (nome da tabela seguido de um pon- to e nome da coluna) Modelo Lógico Banco(CodBanco, NmBanco) Agencia (CodAgencia, EndAgencia, NrAgencia, CodBanco) CodBanco referencia Banco Projeto de Banco de Dados Relacional| Unidade D 45 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S EXEMPLO DE CONSULTA 01 SeLeCT * FROM agencia WHeRe end_agencia = ‘Av. Julio de Cássio’; No exemplo ao lado, selecionamos todas as colunas da tabela agencia. Nestas colunas, o where colocou como condição que a coluna End_Agencia tivesse como conteúdo Av. Julio de Cássio. Resultado da Consulta: CodAgencia EndAgencia NrAgencia CodBanco 01 Av. Julio de Cássio 2665 01 EXEMPLO DE CONSULTA 02 SELECT * FROM agencia WHERE cod_banco = 03 ORDER BY nr_agencia DESC; ORDER BY = após a palavra order by, devem ser especificadas as colunas que se deseja classificar em ordem crescente ou decrescente. Crescente - após o nome da coluna, deve-se inserir a palavra asc. Decrescente - após o nome da coluna, deve-se inserir a palavra desc. USANDO DISTINCT OU ALL DISTINCT = não mostra valores repetidos das colunas ALL = mostra todos os valores das colunas SELECT DISTINCT * FROM agencia Após o final do código da pesquisa, deve-se acrescen- tar um sinal de ponto-e-vírgula ( ; ) que indica o fim do comando Projeto de Banco de Dados Relacional| Unidade D 46 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S PESQUISANDO EM MULTIPLAS TABELAS Para utilizar mais de uma tabela nas consultas, devemos colocar estas depois da cláusula from e ainda colo- car na cláusula where a condição de união das tabelas, unindo a chave primária com a chave estrangeira. Veja no exemplo abaixo: SELECT * FROM banco, agencia WHERE banco. codBanco = agencia.codBanco // tabela1.chave primária=tabela 2.Chave estrangeira CodAgencia EndAgencia NrAgencia CodBanco NmBanco 01 Av. Julio de Cássio 2665 01 Atual 02 Rua Felipe Almarante 2666 01 Atual 03 Rua Cássio Jair 5869 03 Poupar 04 Av. Sergio Afonso 5868 03 Poupar 05 Rua Carla Maria 9632 02 SulReal Nas tabelas abaixo, mais alguns exemplos de operadores utilizados em SQL: Operadores relacionais ou de comparação Operador Descrição < Menor que > Maior que <> Diferente de <= Menor ou Igual que >= Maior ou Igual que = Igual que Operadores Lógicos Operador Descrição AND E lógico Devolve um valor verdadeiro caso as das condições estejam cor- retas OR OU lógico Devolve um valor verdadeiro se uma das condições estejam corre- tas NOT Negação lógica Devolve valor contrário da ex- pressão Projeto de Banco de Dados Relacional| Unidade D 47 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S Operadores Especiais Operador Descrição IS NULL Utilizado para verificar se o conteúdo da coluna foi inicializado ou não IS NOT NULL Somente os campos que tiverem valores inicializa- dos serão mostrados BETWEEN Determina um intervalo de busca LIKE Comparar cadeia de caracteres IN Comparar o valor de uma coluna com um conjunto de valores 7.1.4 DCL (Data Control Language) = Linguagem de Controle de Dados Neste estudo, utilizando a linguagem padrão SQL, vamos ver como criar usuários e grupos para acessar um banco de dados e ainda estabelecer critérios de segurança para que estes possam acessar as informações. create user aluno; //comando para criação de usuário aluno no banco de dados. drop user aluno; //comando para excluir o usuário aluno do banco de dados alter group escola add user aluno; //inserir usuário aluno no grupo escola. Em relação aos critérios de segurança, podemos utilizar um comando para atribuir direitos e outro para re- tirar. Exemplos de direitos, podendo haver outros dependendo do SGBD: SELECT = direito de extrair dados da tabela INSERT = direito de incluir dados na tabela UPDATE = direito a modificar linhas da tabela DELETE = direito a excluir linhas da tabela REFERENCES = direito a criar CONSTRAINT de chave estrangeira ALL PRIVILEGES = direito a todos os privilégios Os comandos utilizados para atribuir ou retirar estes direitos são: GRANT = atribuir direitos REVOKE = retirar os direitos Sintaxe: GRANT direito ON tabela TO usuário Exemplos: GRANT select ON banco TO aluno Projeto de Banco de Dados Relacional| Unidade D 48 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S // Neste exemplo foi dado o direito de extrair dados da tabela banco para o usuário aluno. GRANT select , update(endAgencia) ON agencia TO aluno // Neste exemplo foi dado ao aluno o direito de extrair dados da tabela agencia e alterar somente a coluna endAgencia. Projeto de Banco de Dados Relacional| Unidade E 51 S is te m a U ni ve rs id ad e A be rta d o B ra si l - U A B | C E FE T- R S 8. Utilizando um SGBD (Sistema Gerenciador de Banco de dados) A partir desta unidade, vamos começar a utilizar um Sistema Gerenciador de Banco de dados. A nossa escolha será o PostgreSQL, mas será importante que você pesquise outros Sistemas de Banco de dados utilizados como, por exemplo, o MySQL, Oracle, entre outros. O PostgreSQL é um SGBDR (Sistema Gerenciador de Base de Dados Relacional) que está baseado em Padrões SQL ANSI-92, 96 e 99. É um SGBDR de alta performance, fácil administração e utilização em projetos. 8.1 Utilizando o SQL Para a utilização do PostgreSQL vamos utilizar a linguagem SQL que verificamos no capitulo anterior. A lingua- gem SQL utilizada na unidade 7 é uma linguagem SQL padrão podendo sofrer alterações dependendo do SGBD utilizado, por isso para utilização do PostgreSQL é importante utilizarmos um referencial. Para a nossa pesquisa podemos utilizar o link com a documentação do PostgreSQL traduzida para o portu- guês. Nesta documentação, além da sintaxe de todos os comandos, encontramos exemplos para cada comando, o que
Compartilhar