Caderno de Banco de Dados DIAGRAMADO

Embed Size (px)

Citation preview

  • Tcnico em Informtica

    Srgio de S Leito Paiva Jnior

    2013

    Banco de Dados

  • Presidenta da Repblica Dilma Vana Rousseff Vice-presidente da Repblica Michel Temer Ministro da Educao Aloizio Mercadante Oliva Secretrio de Educao Profissional e Tecnolgica Marco Antnio de Oliveira Diretor de Integrao das Redes Marcelo Machado Feres Coordenao Geral de Fortalecimento Carlos Artur de Carvalho Aras

    Governador do Estado de Pernambuco Eduardo Henrique Accioly Campos

    Vice-governador do Estado de Pernambuco

    Joo Soares Lyra Neto

    Secretrio de Educao Jos Ricardo Wanderley Dantas de Oliveira

    Secretrio Executivo de Educao Profissional

    Paulo Fernando de Vasconcelos Dutra

    Gerente Geral de Educao Profissional Luciane Alves Santos Pula

    Gestor de Educao a Distncia

    George Bento Catunda

    Coordenao do Curso Joo Ferreira da Silva Jnior

    Coordenao de Design Instrucional

    Diogo Galvo

    Reviso de Lngua Portuguesa Carlos Cunha

    Diagramao

    Ccera Zeferino dos Santos

  • INTRODUO ....................................................................................................................... 3

    1.COMPETNCIA 01 | CONHECER OS PRINCPIOS DE BANCO DE DADOS .............................. 5

    1.1. Abstrao dos Dados ......................................................................................... 5

    1.2. Viso dos Dados ................................................................................................ 6

    1.3. Viso lgica dos dados .................................................................................. 7

    1.4. O modelo entidade-relacionamento .................................................................. 8

    1.5. SGBD ................................................................................................................. 8

    1.6. Interface grfica de um SGBD .......................................................................... 10

    1.7. PHPMYADMIN ................................................................................................. 11

    1.8. Linguagens de SGBD ........................................................................................ 11

    1.9. SQL .................................................................................................................. 12

    1.10. Atividades de fixao ..................................................................................... 18

    2.COMPETNCIA 02 | ELABORAR UM MODELO ENTIDADE-RELACIONAMENTO ................. 20

    2.1. Modelagem de dados utilizando o modelo entidade-relacionamento .............. 20

    2.2. Definio de entidade...................................................................................... 22

    2.3. Atributos .................................................................................................... 23

    2.4. Atributos chave ............................................................................................... 25

    2.5. Relacionamentos ............................................................................................. 26

    2.6. Cardinalidade .................................................................................................. 27

    2.7. Atributos chaves em um relacionamento ........................................................ 29

    2.8. Criando uma modelagem ER. ........................................................................... 29

    2.9. Workbench...................................................................................................... 32

    2.10. Atividade de fixao ...................................................................................... 33

    3.COMPETNCIA 03 | CONSTRUIR TABELAS E DICIONRIOS DE DADOS DE UM BANCO DE

    DADOS ............................................................................................................................... 35

    3.1. Cenrio............................................................................................................ 35

    3.2. Identificando as entidades ............................................................................... 36

    3.3. Atributos ......................................................................................................... 37

    3.4. Relacionamento .............................................................................................. 38

    3.5. Integridade de dados ....................................................................................... 40

    3.6. Representao tabular. ................................................................................... 41

    3.7. Dicionrio de dados ......................................................................................... 43

    Sumrio

  • 3.8. Anlise do fluxo de informao no banco de dados. ........................................ 48

    3.9. Inserindo registros com o SQL. ........................................................................ 52

    4. 0. Deletando/removendo registros com SQL. ..................................................... 53

    4.1. Modificando registros com SQL. ...................................................................... 54

    4.2. Melhorando as consultas usandoSELECT. ........................................................ 55

    4.2.1. Fazendo consultas a mais de uma tabela por vez. ......................................... 55

    4.2.2. Ordenando os dados. ................................................................................... 56

    4.2.3. Realizando clculos....................................................................................... 56

    4.2.4. Agrupando resultados. ................................................................................. 57

    4.3. Atividades de fixao ....................................................................................... 57

    REFERNCIAS ..................................................................................................................... 59

    CURRCULO DO PROFESSOR-PESQUISADOR ....................................................................... 60

  • 3

    Banco de Dados

    INTRODUO

    Caro (a) aluno(a),

    Toda a teoria e prtica que voc aprender neste curso, serviro de base para

    voc projetar sistemas computacionais, dos simples aos mais robustos,

    capazes de manipular dados em grande escala com segurana e eficincia.

    Banco de dados uma matria que caminha de mos dadas com outras

    disciplinas da informtica, em especial a disciplina de programao. Alguns

    conceitos da disciplina de lgica sero necessrios, mas no se preocupe, pois,

    sero devidamente lembrados quando tivermos estudando o assunto.

    Numa prxima disciplina voc ver o uso de banco de dados numa aplicao

    prtica junto com uma linguagem de programao para web.

    Espero que esta experincia seja muito enriquecedora para voc. Dedique-se

    com afinco nesta disciplina, pois ela poder lhe proporcionar um

    conhecimento essencial para um profissional da rea de informtica. Nesta

    disciplina voc dar um passo importante, diria at fundamental, na sua

    formao. A palavra informtica significa, num sentido restrito,

    processamento automtico da informao e, eu pergunto a voc o que a

    informao? Podemos dizer que informao uma interpretao de dados. O

    banco de dados assume um papel importante quando capaz de armazenar

    com segurana, eficcia e rapidez os dados que serviro de apoio a decises

    em empresas e governos.

    Este curso est estruturado em 3 competncias. Na primeira competncia

    voc aprender os conceitos que fundamentam a rea de banco de dados

    alm de j colocar alguns destes conceitos em prtica. Na segunda

    competncia voc aprender o modelo entidade relacionamento que permite

    a criao de bancos de dados a partir da analise da situao que voc est

  • 4

    Tcnico em Informtica

    trabalhando. Na terceira competncia iremos criar um grande sistema com

    todos os componentes estudados durante a disciplina.

  • 5

    Banco de Dados

    Competncia 01

    1. COMPETNCIA 01 | CONHECER OS PRINCPIOS DE BANCO DE

    DADOS

    Caro(a) aluno(a), vamos comear nossa primeira competncia mostrando uma

    viso do problema de estruturar, armazenar e recuperar dados em banco de

    dados. Nos prximos tpicos estarei abordando as informaes que iro

    construir a base que voc necessitar para projetar um banco de dados para

    suas aplicaes. Ento, preste bastante ateno nos conceitos que seguem

    neste capitulo, pois um bom programa de computador comea por um bom

    projeto de banco de dados.

    1.1. Abstrao dos Dados

    Um Sistema Gerenciador de Banco de Dados (SGBD) uma coleo de

    arquivos e programas inter-relacionados que permitem a um usurio

    manipular os dados. A manipulao dos dados garantida pelo SGBD que

    esconde do usurio a forma como ele executa estas manipulaes. Isto

    chamado de ABSTRAO DOS DADOS, ou seja, a capacidade do SGBD de

    esconder detalhes da implementao. Na figura 1, as aplicaes (em verde)

    so programas externos que necessitam acessar os dados.

    Figura 1 Relao entre o SGBD, programas e Banco de Dados Fonte: o autor (2013)

    O SGBD possui basicamente trs nveis de abstrao:

  • 6

    Tcnico em Informtica

    Competncia 01

    Nvel fsico: descreve como os dados ficaro armazenados fisicamente

    no computador. As estruturas que armazenam e recuperam os dados

    do computador devem ser eficientes na busca e alterao de dados.

    Nvel lgico: descreve quais os dados esto armazenados no

    computador e como eles se relacionam.

    Nvel de viso: o mais alto nvel que descreve apenas partes dos dados.

    A figura abaixo exemplifica.

    Figura 2 Nveis de Viso de um SGBD Fonte: CertificaoBD (2013)

    1.2. Viso dos Dados

    A primeira e maior misso de SGBD facilitar a vida dos usurios, fazendo

    com que eles (os usurios) apenas vejam o que eles precisam, escondendo

    detalhes de organizao interna. Est a chamada VISO DOS DADOS. Por

    exemplo: se voc um aluno do EAD, e deseja verificar quais suas notas na

    disciplina de BD, no faz sentido o sistema enviar para voc o cadastro de

    todos os alunos do curso, ou o comando interno do programa que organiza as

    informaes. Est VISO que voc deseja dos dados se restringe apenas s

    suas notas.

    Existem diversos nveis de viso de dados. Por exemplo: O coordenador do

    curso precisa saber o nome de todos os alunos matriculados, os professores

    alocados por disciplina, as notas de todos os alunos do curso. J um professor

  • 7

    Banco de Dados

    Competncia 01

    do curso apenas necessita saber quais os nomes dos alunos das suas turmas e

    acessar as notas dos alunos matriculados na sua disciplina.

    Assim a VISO dos dados tambm dividida de forma diferente entre os

    usurios do sistema.

    1.3. Viso lgica dos dados

    Este o nvel de abstrao onde o usurio ir criar todas as relaes

    existentes entre os dados, primeiramente atravs de um projeto escrito no

    papel mesmo, depois atravs da implementao no SGBD. Para que voc

    entenda melhor este conceito, imagine novamente o exemplo do nosso curso

    de EAD, nele alunos e professores esto relacionados uns aos outros, mas

    como? O elo que relaciona um aluno a um professor uma disciplina, assim

    fcil perceber a relao que existe entre um aluno com um professor, vou

    colocar este exemplo na forma de diagrama na figura 3 para que voc possa

    visualizar o que estou dizendo:

    Figura 3 Relao entre dados Fonte: O Autor (2013)

    Observe que a partir deste esquema lgico podemos relacionar um

    determinado aluno a um determinado professor, desde que o aluno esteja

    cursando uma disciplina que o professor esteja ministrando. Os detalhes de

    implementao sero vistos adiante, no momento saiba que no nvel de

    abstrao lgico onde resolvemos todos os problemas de ligao entre os

    dados.

  • 8

    Tcnico em Informtica

    Competncia 01

    Para definirmos o nvel lgico de como os dados esto interligados,

    precisamos utilizar um modelo de dados que possa juntar todos os dados de

    forma coerente. Um modelo uma representao de alguma realidade. Por

    exemplo: Joo da Silva aluno do curso de EAD, ele possui, alm do seu

    nome, um endereo e um email. Para representar Joo da Silva e todos os

    alunos do curso, poderamos criar uma representao de conjunto no banco

    de dados onde cada elemento do conjunto um aluno e cada um tem nome,

    endereo e e-mail como atributos. Esta representao seria o nosso modelo.

    Existem vrios modelos de dados:

    Modelo entidade-relacionamento.

    Modelo orientado a objetos.

    Modelo funcional.

    Modelo Semntico.

    1.4. O modelo entidade-relacionamento

    Na prxima competncia iremos aprender como projetar um banco de dados

    de forma coerente. Para que possamos projetar um banco coerente, sem

    redundncia, sem inconsistncias precisaremos utilizar um modelo, no nosso

    caso estudaremos o modelo entidade-relacionamento, que envolve as

    relaes entre entidades fsicas do mundo real e suas relaes. Um modelo

    um conjunto de regras que so aplicadas sistematicamente aos dados at que

    o resultado seja um conjunto de dados que so coerentes para

    implementao no SGBD.

    1.5. SGBD

    Como dito anteriormente, o SGBD (Sistema gerenciador de banco de dados)

    um conjunto de programas e arquivos que tem como principal objetivo retirar

    da aplicao cliente (um programa que requisita dados) a complexidade do

    acesso aos dados. Agora voc pode estar pensando como o SGDB faz para

    disponibilizar estas informaes. Um SGDB poder rodar tanto dentro de um

  • 9

    Banco de Dados

    Competncia 01

    computador pessoal, como numa grande rede de computadores, de uma

    forma ou de outra, o SGBD utiliza-se de uma interface, que interpreta as

    informaes do aplicativo para o banco de dados utilizando ou APIs (Interface

    de programao de aplicativos), que so funes chamadas dentro de uma

    linguagem como Java, PHP etc., ou atravs de um DRIVER que um programa

    instalado no computador do cliente. A figura 4 abaixo mostra um esquema

    desta arquitetura.

    Figura 4 Esquema de acesso a um SGBD Fonte: O Autor (2013)

    Atravs da API em PHP, por exemplo, voc poder acessar os dados do seu

    banco, para isto voc dever informar na API:

    1. Qual o servidor atravs de um IP (endereo da rede);

    2. O login e senha de acesso;

    3. O nome da base que voc deseja utilizar.

    Veja um pequeno cdigo em PHP que faz a conexo com um SGBD mysql na

    figura 5:

  • 10

    Tcnico em Informtica

    SGDB um conjunto de arquivos e

    programas que gerenciam um

    banco de dados.

    Competncia 01

    Figura 5 Cdigo em PHP para acessar um SGBD. Fonte: O Autor (2013)

    No se preocupe agora, voc ter aulas sobre isto numa disciplina posterior.

    Aqui importante voc perceber que para acessar o SGDB voc precisar de

    uma API que ir realizar todo o trabalho para voc.

    1.6. Interface grfica de um SGBD

    Existem muitos SGBD, abaixo segue uma pequena lista:

    PostgreSQL (WWW.postgresql.org.br)

    Firebird (www.firebird.org)

    MySQL (WWW.mysql.com)

    Oracle (WWW.oracle.com)

    SQL-Server (http://www.microsoft.com/sqlserver/pt/br/default.aspx)

    Neste curso iremos trabalhar com o MySQL, que um SGBD atualmente

    mantido pela ORACLE (que tambm tem um SGBD com nome Oracle). O

    MySQL possui uma licena GPL (software Livre) mas tambm tem uma licena

    para uso comercial. Aps a instalao voc ver que o mysql vem com alguns

    programas, entre eles:

    MySQL Query Browser

    MySQL Administrator

    MySQL Command Line

  • 11

    Banco de Dados

    Competncia 01

    O MySQL Query Browser uma ferramenta grfica para criar e executar

    solicitaes SQL utilizando um ambiente grfico. Este aplicativo ajuda a

    analisar dados armazenados num Banco de dados MySQL. O MySQL

    Administrator um aplicativo grfico para realizar operaes administrativas

    no banco de dados. Estas tarefas incluem gerenciar usurios, gerenciar

    conexes, fazer backup etc. O MySQL Command Line uma ferramenta para

    acessar o banco de dados por meio de uma interface de linha de comando.

    Apesar destes programas cobrirem todas as necessidades de administrao e

    acesso aos dados, ela exige que o usurio tenha conhecimento em SQL para

    realizar muitas tarefas. Outras interfaces para o MySQL foram desenvolvidas

    com o intuito de facilitar o acesso. Vamos apresentar com detalhes uma

    interface chamada phpMyAdmin que muito utilizada em diversos sites de

    administrao de pginas que do suporte ao MySQL.

    1.7. PHPMYADMIN

    O phpMyAdmin uma ferramenta de fcil utilizao que serve para controlar

    o banco de dados MySQL. Esta ferramenta requer a instalao do servidor

    web apache, do interpretador PHP, o SGDB MySQL, alm do phpMyAdmin.

    Voc poder fazer as instalaes utilizando o pacote pr-configurado no

    endereo http://sourceforge.net/projects/phptriad/. Outra boa opo o

    xampp que pacote contendo os mesmos programas do phptriad, porm

    com a vantagem de poder descompactar num pendrive e levar para onde

    voc quiser. Voc poder baixar e instalar o xampp no link

    http://www.apachefriends.org/pt_br/xampp-windows.html

    Logo aps a instalao rode o Apache e o MySQL que foi criado no menu

    phptriad. Veja uma introduo ao phpMyAdmin no vdeo 1.

    1.8. Linguagens de SGBD

    Vdeo aula sobre

    phpMyAdmin,

    link disponvel no

    AVA.

    Servidor Web: So programas

    que podem responder a

    requisies de pginas no

    protocolo HTTP, geralmente

    solicitadas por navegadores

    como o Google chrome ou o

    Internet Explorer. Exemplo servidor

    web apache.

    Interpretador PHP um

    programa que roda junto com o

    servidor Web. Quando uma

    pgina contendo instrues na

    linguagem PHP chega ao servidor Web, este dirige ao interpretador.

  • 12

    Tcnico em Informtica

    Competncia 01

    Para esconder os detalhes, os SGBDs utilizam-se de uma linguagem de

    programao prpria para banco de dados. A ideia por trs disto o seguinte:

    imagine que o nvel fsico seja um chins e o nvel lgico, um brasileiro.

    Acontece que nem o chins fala portugus e nem o brasileiro fala chins,

    porm os dois falam ingls, ento, para eles se comunicarem, basta falarem

    em ingls. Assim acontece com o SGBD, como ele precisa integrar nveis to

    distintos, ento se utiliza de uma linguagem padro. Se voc entender esta

    linguagem, ento voc poder manipular bem um banco de dados.

    A linguagem de SGBD deve tanto definir o nvel lgico do banco de dados

    como expressar o nvel de viso, ento podemos subdividir esta linguagem em

    duas partes:

    Definio de dados (DDL):

    responsvel por especificar um esquema de BD.

    O resultado da compilao desta linguagem um arquivo ou diretrio

    especial chamado dicionrio de dados que um arquivo de metadados.

    A estrutura de memria e o mtodo de acesso utilizado pelo SGBD

    tambm definida pela DDL.

    Linguagem de Manipulao de dados (DML)

    Linguagem utilizada para manipular dados, tais como:

    Recuperao de informaes;

    Inseres, remoes e alteraes.

    1.9. SQL

    A linguagem padro de bancos de dados comerciais a SQL (Structured Query

    Language) que significa linguagem de consulta estruturada. importante

    salientar que a SQL no a nica linguagem de acesso a banco de dados,

    porm a mais utilizada.

    O que podemos fazer com a linguagem SQL? Podemos criar, alterar e remover

    esquemas lgicos. Podemos manipular de diversas formas os dados inserindo

  • 13

    Banco de Dados

    Competncia 01

    dados novos ou removendo e alterando dados antigos do banco de dados.

    Podemos restringir acesso ao banco de dados e ainda podemos controlar as

    transaes dos usurios com o banco de dados. Em outras palavras, a SQL

    poderosa o bastante para termos um completo domnio sobre os dados.

    Uma linguagem SQL tem caractersticas semelhantes a uma linguagem de

    programao como Java ou C, porm como uma linguagem para manipular

    banco de dados, suas estruturas so especificas para este tipo de problema.

    Vamos ver algumas caractersticas que o SQL possui.

    Tipos de dados: Como qualquer outra linguagem de programao a SQL tem

    tipos de dados prprios, veja a tabela abaixo com os principais tipos de dados

    utilizados pelo My+SQL que um SGBD que utiliza SQL como linguagem.

    Figura 6 Tipos de Dados usados no mySQL Fonte: O Autor (2013)

    Operadores:

    Operadores aritmticos, lgicos e relacionais so usados no SQL para realizar

    muitas tarefas como somar e subtrair (operadores aritmticos), comparar

    valores com valores fixos ou variveis no banco de dados (operadores

    relacionais). Estes operadores ajudam a construir pesquisas mais exatas,

  • 14

    Tcnico em Informtica

    Competncia 01

    estabelecendo diferenas entre os resultados. A figura 7 mostra uma tabela

    com estes operadores.

    Manipulao de dados com SQL.

    Uma das principais atividades relacionadas a um banco de dados a consulta

    aos dados. O SQL possui um mecanismo muito eficiente de busca que permite

    ao usurio obter qualquer conjunto de dados das tabelas. A clusula SELECT

    utilizada para pesquisar dados com eficincia, vamos agora fazer uma

    introduo ao uso do SELECT.

    Figura 7 Operadores usados no mySQL Fonte: O Autor (2013)

    SELECT:

    SELECT utilizado para retornar registros selecionados de uma ou mais

    tabelas. Cada expresso SELECT indica as colunas que voc deseja

    recuperar. Sua sintaxe simplificada dada abaixo:

    SELECT FROM WHERE

    Figura 8: Clusula Select Fonte: o autor (2013)

  • 15

    Banco de Dados

    Competncia 01

    Onde:

    : uma lista com o nome dos campos da(s) tabela(s) que

    estamos acessando.

    : uma lista com o nome das tabelas que estamos

    acessando.

    : So as restries para acessar os dados (vamos ver

    em breve)

    O comando SELECT retorna para o usurio uma lista de valores especificados

    no comando.

    Vamos dar um exemplo simples para que voc entenda melhor como

    funciona o SELECT:

    Ex: Imagine que voc tenha os seguintes campos de uma tabela chamada

    alunos:

    TABELA: Alunos

    Nome do Campo Tipo do Campo Descrio

    Matricula Integer Valor inteiro

    Nome Varchar (45) Valor string (palavras) de tamanho 45

    Email Varchar(20) Valor string (palavras) de tamanho 45

    Esta tabela poderia estar preenchida com vrios valores, como mostrado

    abaixo. Matricula Nome Email

    1 Jose da Silva [email protected]

    2 Maria das Dores [email protected]

    3 Mario Ramos [email protected]

    4 Luiz Gustavo [email protected]

    Vamos imaginar vrias situaes:

    1. Gostaria de listar todos os nomes dos alunos que esto na tabela:

    SELECT nome FROM alunos:

  • 16

    Tcnico em Informtica

    Competncia 01

    Resultado: NOME

    Jose da Silva

    Maria das Dores

    Mario Ramos

    Luiz Gustavo

    2. Gostaria de listar a matricula e nome dos alunos que esto na tabela.

    SELECT matricula,nome FROM alunos :

    Resultado: Matricula Nome

    1 Jos da Silva

    2 Maria das Dores

    3 Mario Ramos

    4 Luiz Gustavo

    3. Gostaria de listar todos os campos que esto na tabela.

    SELECT * FROM alunos :

    Resultado: Matricula Nome Email

    1 Jos da Silva [email protected]

    2 Maria das Dores [email protected]

    3 Mario Ramos [email protected]

    4 Luiz Gustavo [email protected]

    Observe que com o comando SELECT podemos acessar todos os dados da

    tabela que criamos.

    A clusula WHERE:

    Usamos a clusula WHERE para delimitar a pesquisa que estamos fazendo.

    Imagine se desejssemos apenas o nome do aluno com a matricula igual a 1.

    Para fazer est limitao na consulta usamos a clusula WHERE. Veja alguns

    exemplos:

  • 17

    Banco de Dados

    Competncia 01

    1. Gostaria de listar o nome do aluno cuja matricula igual a 1:

    SELECTt nome FROM alunos WHERE matricula=1:

    Resultado:

    NOME

    Jos da Silva

    2. Gostaria de listar o nome dos alunos cuja matricula maior que 1:

    SELECT nome FROM alunos WHERE matricula>1:

    o Resultado:

    Nome

    Maria das Dores

    Mario Ramos

    Luiz Gustavo

    Observe que neste exemplo, utilizamos o operador relacional > - maior que

    para restringir uma pesquisa. Neste sentido poderamos utilizar qualquer

    outro operador, relacional como < (menor que), (diferente). Veja a tabela

    abaixo:

    Tabela 1 Operadores clusula WHERE

    Vdeo aula sobre

    comando SELECT,

    link disponvel no

    AVA.

  • 18

    Tcnico em Informtica

    Competncia 01

    Caro (a) aluno(a), nesta competncia apresentamos uma introduo ao

    grande mundo que o de banco de dados. Na prxima competncia iremos

    aprender como projetar um banco de dados de forma coerente. Iremos

    aprender vrios comandos SQL com detalhes. importante que voc faa os

    exerccios propostos.

    1.10. Atividades de fixao

    1. O que um SGDB?

    2. Quais os nveis de abstrao de um SGBD?

    3. Defina viso lgica e viso dos dados.

    4. O que um modelo?

    5. Fale sobre o modelo entidade relacionamento.

    6. Defina DDL, DML.

    7. Para caracterizar dados, uma linguagem como SQL disponibiliza um

    conjunto de tipos de dados. Utilizando os tipos descritos na figura 5

    deste caderno, descreva quais tipos seriam colocados nos seguintes

    dados:

    a) Nome de alunos do curso de EAD.

    b) Data de nascimento dos alunos.

    c) Valor do salrio dos professores do curso de EAD

    d) Valor P ou F para indicar falta ou presena do aluno.

    8. O que so operadores? Defina operadores lgicos, aritmticos e

    relacionais.

  • 19

    Banco de Dados

    Competncia 01

    9. Construa comandos SELECT para os seguintes problemas baseados na

    tabela Alunos abaixo:

    a.

    a) Consultar os nome e e-mails dos alunos.

    b) Consultar os nomes de todos os alunos.

    c) Consultar o e-mail do aluno cuja matricula igual a 3.

    d) Consultar matricula e e-mail do aluno que tem nome Jose da Silva

    e) Consultar todos os alunos cuja matricula seja menor ou igual a 2.

    Matricula Nome Email

    1 Jos da Silva [email protected]

    2 Maria das Dores [email protected]

    3 Mario Ramos [email protected]

    4 Luiz Gustavo [email protected]

  • 20

    Tcnico em Informtica

    Competncia 02

    2. COMPETNCIA 02 | ELABORAR UM MODELO ENTIDADE-

    RELACIONAMENTO

    Caro(a) aluno(a), chegamos nossa segunda competncia da disciplina de

    introduo a Banco de Dados. Acredito que voc j est familiarizado com o

    programa PHPMYADMIN que utilizamos na competncia passada, nele voc j

    sabe construir uma tabela e realizar consultas com a clusula SELECT, alm de

    saber os conceitos iniciais trabalhados na primeira competncia. Nesta

    segunda competncia iremos aprender os conceitos relacionados

    modelagem entidade-relacionamento (MER), e como transformar os dados

    deste modelo para o modelo relacional que, de fato, ser implementado no

    nosso SGBD MySQL. Preste ateno para os conceitos mais importantes desta

    competncia, pois, sero teis sempre que for necessrio criar um sistema

    computacional. No primeiro subcaptulo iremos estudar os conceitos

    fundamentais do MER.

    2.1. Modelagem de dados utilizando o modelo entidade-relacionamento

    Modelar, em computao, significa interpretar adequadamente uma

    realidade do mundo. Para uma modelagem adequada precisamos de um

    modelo adequado. Imagine uma situao bem concreta: Voc, aluno de

    informtica, j deve ter recebido alguma proposta, nem que seja de um

    parente ou amigo, para fazer um programa para ele, como voc faria isto?

    Inicialmente voc deveria ter um bom papo com ele sobre como ele quer este

    programa, o que o programa vai fazer e como o negocio do seu amigo. Veja

    que estes conceitos so bastante abstratos e apenas com estes conceitos voc

    no conseguir fazer o programa. O que voc precisa? A resposta construir

    um modelo. Um modelo ir possibilitar a implementao do software, pois ele

    trs todos os atributos necessrios para se construir um software. Onde entra

    o banco de dados? O banco de dados sai naturalmente deste modelo, quando

    voc observa o comportamento dos dados envolvidos no mesmo.

    Alguns conceitos importantes aqui so:

  • 21

    Banco de Dados

    Competncia 02

    Mini mundo: uma poro da realidade capturada pelo analista. O

    mundo real muito complexo para ser totalmente modelado, sendo

    assim podemos nos ater apenas a alguns detalhes. Por exemplo, num

    supermercado poderamos imaginar o problema de registrar as vendas

    para os clientes como um mini mundo de toda a complexidade que

    envolve o dia a dia de um supermercado. Podemos dividir o mini mundo

    em vises, por exemplo, no caso mini mundo venda ao cliente podemos

    ter a viso da operadora de caixa, que possui operaes a serem

    realizadas que so diferentes das operaes do cliente.

    Modelo conceitual: Consiste em mapear toda a realidade a ser

    modelada utilizando uma linguagem de alto nvel. Quando eu falo alto

    nvel quero dizer que ao escrever o modelo conceitual qualquer pessoa

    que olhar com cuidado entender. Geralmente utilizamos diagramas

    para mostrar o modelo conceitual junto com documentos que explicam

    melhor. O resultado do modelo conceitual um esquema e no h

    preocupao com a manipulao ou operao dos dados.

    Modelo Lgico: Agora sim, devemos pegar o modelo conceitual e

    utilizar uma abordagem especifica como o modelo Entidade-

    Relacionamento (MER) ou o Hierrquico etc. Ainda no h uma

    preocupao com o SGBD, mas j estamos bem prximos dele.

    Modelo Fsico: agora descrevemos os dados a serem armazenados

    fisicamente no computador. Como vimos na competncia 1 foi

    necessrio atribuir tipos de dados aos campos criados nas tabelas e

    definir seus tamanhos (ex: nome: varchar(45)). Este modelo um

    refinamento do modelo lgico, com a perspectiva do nosso SGBD. A

    figura 6 abaixo mostra um fluxo da informao atravs destes

    conceitos.

  • 22

    Tcnico em Informtica

    Competncia 02

    Figura 6 Representao da sequncia de modelagem Fonte: Figueira 2005

    Vamos agora verificar quais os principais elementos envolvidos na modelagem

    Entidade-Relacionamento.

    2.2. Definio de entidade.

    Uma entidade uma coisa ou um objeto do mundo real. Por que coisa ou

    objeto? Quando falo coisa me refiro a qualquer ente do mundo real que possa

    ser modelada, exemplo: Um aluno do curso de EAD pode ser uma entidade,

    um produto de um supermercado pode ser uma entidade, etc. A grande

    caracterstica desta coisa que ela pode ser identificada unicamente no

    meio de todas as outras, entende? Ento seria a coisa salrio uma entidade?

    Bom depende do caso, mas parece que salrio no uma entidade e sim

    alguma caracterstica de uma entidade, no ? Se Professor for uma entidade

    ento salrio poder ser uma caracterstica que o professor possui e no uma

    entidade, como professor.

    As entidades podem ser concretas como pessoa, livro, produto, etc. ou

    abstratas como emprstimo do livro, uma viagem de uma pessoa. Observe

    Saiba mais: Muitos destes conceitos de modelagem, como mini-mundo, so

    estudados por uma rea da computao

    chamada Engenharia de

    software. Procure aprender sobre

    esta rea da computao.

  • 23

    Banco de Dados

    Competncia 02

    que a caracterstica que define uma entidade a possibilidade de poder

    identificar de forma nica quela entidade.

    Um conjunto de entidades (ou Tipo-entidade) o conjunto que abrange

    entidades de mesmo tipo e que compartilham as mesmas propriedades: os

    atributos. Os conjuntos de entidades no so, necessariamente, conjuntos

    separados ou sempre disjuntos. Por exemplo: o conjunto de todos os clientes

    de um banco constitui o conjunto entidade cliente; o conjunto de todos os

    empregados do banco constituem o conjunto entidade empregado; a

    entidade pessoa pode pertencer ou ao conjunto cliente, ou ao conjunto

    entidade ou a ambos ou a nenhum deles.

    Neste momento muito importante que voc saiba distinguir bem uma

    entidade do mini-mundo que voc est modelando, as entidades cumprem

    um papel fundamental no modelo ER. Neste momento voc pode se

    perguntar como que eu posso definir corretamente uma entidade? Um bom

    comeo buscar os atributos desta entidade, vamos ver o que um atributo.

    2.3. Atributos

    Uma entidade representada por um conjunto de atributos, ento os

    atributos so propriedades que descrevem cada membro de um conjunto de

    entidades e cada entidade tem seus prprios valores nos atributos. Para cada

    atributo existe um conjunto de valores possveis, chamado domnio. Por

    exemplo, temos uma entidade chamada Pessoa, esta entidade tem um

    atributo bvio, nome, que descreve o nome desta pessoa. O domnio o

    conjunto de todos os possveis nomes que uma entidade Pessoa pode ter (ex.

    {Joo, Maria, Pedro, Carlos, etc...}). Este domnio no pode ser, por exemplo,

    igual a {1,2.3,2} pois este conjunto no representa nomes e sim valores. Cada

    entidade pode ser descrita pelo conjunto formado pelos pares (atributo-valor)

    referentes a cada atributo do conjunto em questo.

    Os atributos podem pertencer a uma das seguintes classes:

  • 24

    Tcnico em Informtica

    Competncia 02

    Simples ou compostos: atributos compostos, diferentemente dos

    simples (atmicos), so divididos em partes (em outros atributos). EX:

    Nome_cliente prenome, nome_intermedirio e sobrenome. Estes

    atributos podem ser hierarquizados

    Monovalorados ou multivalorados: atributos monovalorados assumem

    apenas um nico valor para uma entidade especfica, j os

    multivalorados podem assumir conjunto de valores para uma nica

    entidade. Por exemplo:

    o A entidade produto pode ter um atributo (cdigo) monovalorado;

    o A entidade empregado pode ter um atributo (nome-dependentes)

    multivalorado, pois o empregado pode ter vrios dependentes

    diferentes;

    o A entidade cliente pode ter um atributo (endereos) tambm

    multivalorado.

    Nulos: Um valor nulo usado quando uma entidade no possui valor

    para determinado atributo. Por exemplo: Se o empregado no possui

    nmero da carteira de reservista, o valor nulo atribudo a este

    atributo para esta entidade significando que o atributo no aplicvel a

    ele.

    Armazenados X Derivados: o valor de um atributo pode ser derivado de

    outro. Por exemplo:

    o O atributo Idade (derivado) calculado a partir do atributo

    Data_nascimento (armazenado);

    o O valor do tempo de servio de um funcionrio numa empresa pode ser

    calculado a partir da sua data de contratao.

    Exemplos de entidades e atributos em situaes reais:

    Mundo real: Um banco simplificado:

    o Entidades: {cliente, Agencia, Conta, emprstimo}

    o Atributos:

    Cliente = (nome_cliente: string; cpf: string).

    Conta = (nmero_conta: string; saldo: real).

  • 25

    Banco de Dados

    Competncia 02

    Emprstimo = (nmero_emprstimo: inteiro; total: real).

    Agncia = (nome_agncia: string; cidade_agncia: string).

    2.4. Atributos chave

    Como distinguir um elemento de uma entidade de outro elemento da mesma

    entidade? Por Exemplo: Na base de dados da receita federal pode existir uma

    entidade chamada Contribuinte que tem um atributo chamado nome. Para

    este atributo existem milhares de possveis nomes de pessoas que so iguais,

    imagine quantas Maria Conceio da Silva existem cadastras na base da

    receita federal? E quantos nomes Jos da Silva? Uma chave um atributo que

    possua valor nico no conjunto de entidades e relacionamentos. O atributo

    chave, ou chave primria, permite identificar de maneira unvoca uma

    ocorrncia no BD. Para a base de dados da receita federal na possvel

    entidade Contribuinte, o atributo chave o nmero do CPF, pois, como regra,

    duas pessoas diferentes no podem ter o mesmo CPF.

    Nem todas as entidades tem um atributo chave, neste caso chamamos esta

    entidade de fraca. Por exemplo, imagine uma entidade Dependente ligado as

    pessoas cadastradas no imposto de renda da receita federal. Esta entidade

    teria os seguintes atributos : nome_do_depedente e Data_nascimento.

    Pergunta: ser que no vai existir dependentes de pessoas diferentes que

    tenham o mesmo nome e nasceram na mesma data? Observe que para que

    cada dependente seja nico necessrio chamar um atributo que seja chave

    primria, neste caso poderia ser o CPF do titular do dependente, que uma

    chave da entidade contribuinte. A tabela abaixo mostra a entidade hipottica

    Contribuinte com alguns valores.

  • 26

    Tcnico em Informtica

    Competncia 02

    Tabela 2 Entidade Contribuinte com os valores Fonte: O Autor 2013

    Observe que existem dois campos com o mesmo nome e a mesma data de

    nascimento (linhas 1 e 4). Porm os CPFs so diferentes, neste caso devemos

    supor que se trata de pessoas diferentes.

    2.5. Relacionamentos

    Um relacionamento uma operao que junta duas ou mais entidades

    distintas com um significado especifico. No exemplo anterior (o banco) o

    cliente est relacionado com uma conta, ou seja, um cliente possui uma

    conta. O cliente tambm est relacionado com uma agncia e o cliente pode

    ou no ter um emprstimo no banco.

    Graficamente temos um diagrama ER que expressa estas relaes.

    Figura 7 Diagrama Entidade-Relacionamento (ER) Fonte: O autor 2013

    CONTRIBUINTE

    CPF NOME DATA_NASC

    121234321 Jose da Silva 13/01/1974

    234122345 Maria da Penha Silva 23/01/1980

    122123345 Roberta Miranda 2/01/1870

    213454876 Jose da Silva 13/01/1974

  • 27

    Banco de Dados

    Competncia 02

    Observe no diagrama acima que uma entidade descrita como um retngulo

    e o relacionamento como um losango. Vrios outros smbolos so utilizados

    num diagrama ER como, por exemplo, as elipses que representam os

    atributos.

    Figura 9 Smbolos do diagrama ER Fonte: O autor 2013

    2.6. Cardinalidade

    o nmero (max, min) de ocorrncia de uma entidade relacionada outra. A

    cardinalidade est associada a um relacionamento. Todos os relacionamentos

    possuem uma cardinalidade associada. A cardinalidade definida atravs do

    mapeamento de restries. No exemplo do banco dado na figura 7, a

    cardinalidade do relacionamento pertence que associa as entidades

    Clientes e agncia 1:1 (um para um) Que significa que cada cliente s

    pode pertencer a uma agncia e no a duas. Se um cliente pudesse pertencer

    a duas agncias, como ficaria a cardinalidade? Ficaria assim 1:2, ou seja, um

    cliente pode pertencer a duas agncias. Extrapolando poderamos ter a

    cardinalidade 1:n que indica que o cliente pode pertencer a n (muitas)

    agncias. Os relacionamentos podem ser:

  • 28

    Tcnico em Informtica

    Competncia 02

    Relacionamento um para um: uma entidade em A est associada no

    mximo a uma entidade em B, e uma entidade em B est associada a

    no mximo uma entidade em A.

    Relacionamento um para muitos: Uma entidade em A est associada a

    vrias entidades em B. Uma entidade em B deve estar associada no

    mximo a uma entidade em A.

    Relacionamento muitos para um: Uma entidade em A est associada

    no mximo uma entidade em B. Uma entidade em B pode estar

    associada a um nmero qualquer de entidades em A.

    Relacionamento muitos para muitos: Uma entidade em A est

    associada a qualquer nmero de entidades em B e uma entidade em B

    est associada a um nmero qualquer de entidades em A.

    Podemos usar uma notao do tipo (mim,max) onde mim representa o menor

    valor e max o maior valor para a cardinalidade do relacionamento das

    entidades, veja o exemplo na figura 10 que mostra diversos tipos de

    cardinalidades possveis entre duas entidades:

    Figura 10 Tipos de relacionamentos do modelo ER. Fonte: O Autor 2013

    Em (A) A entidade Empregados pode se relacionar com departamento com 0

    ou um elemento. Em (B) a entidade Empregados pode se relacionar com 0 ou

    N (qualquer quantidade de elementos) com a entidade projetos e em (C)

    empregados pode participar com no mnimo um (1) elemento na coordenao

    de at 2 projetos. Pode haver projetos sem empregados coordenando.

  • 29

    Banco de Dados

    Competncia 02

    2.7. Atributos chaves em um relacionamento

    Quando definimos um relacionamento entre duas entidades devemos

    tambm definir qual a chave primria da relao. Por exemplo, quando

    definimos anteriormente a entidade cliente e agencia, temos que ter uma

    chave que descreva unicamente cada cliente e sua agncia relacionada pelo

    relacionamento chamado pertence. Para que seja definida uma chave para

    um relacionamento devemos olhar para a cardinalidade da relao,

    dependendo do tipo do relacionamento, teremos uma forma de definir a

    chave do relacionamento.

    Relacionamento muitos para muitos (NxM): unio das chaves da

    entidade + atributos descritivos. Os atributos descritivos so opcionais,

    mas s vezes importante acrescentar estes novos atributos para

    melhor descrever o relacionamento. Deve-se criar uma tabela para

    comportar estes atributos.

    Relacionamento Muitos para um ou um para muitos (Nx1 ou 1xN):

    chave da entidade do lado do muitos + atributos descritivos.

    Um para um (1x1): Qualquer uma das chaves primrias pode ser usada.

    Quando trazemos uma chave de uma entidade para a outra chamamos esta

    chave de chave estrangeira.

    Vamos agora tentar entender um diagrama ER por inteiro.

    2.8. Criando uma modelagem ER.

    Para entender uma modelagem ER vamos exemplificar um caso, vou

    descrever este caso e depois vamos juntos fazer a modelagem, vamos l?

    Imagine que voc foi convidado para fazer um sistema para um colgio. O

    dono do colgio gostaria de ter o cadastro dos alunos e dos professores. Ele

  • 30

    Tcnico em Informtica

    Competncia 02

    tambm quer que os professores sejam alocados nas disciplinas e que os

    alunos tambm possam estar relacionados com as disciplinas.

    O primeiro passo que devemos dar tentar verificar o que seriam as

    Entidades e o que seriam os Relacionamentos existentes entre as entidades.

    Tambm devemos definir quais os atributos das entidades e quais os possveis

    atributos para os relacionamentos.

    ENTIDADES: do texto podemos definir facilmente duas entidades por serem

    concretas, so elas: Aluno e Professor. Uma terceira entidade no concreta,

    a entidade Disciplina.

    RELACIONAMENTOS: Agora devemos perguntar as entidades com quem elas

    poderiam se relacionar, observe bem: poderamos dizer que os alunos devem

    se matricular nas disciplinas, logo surge um relacionamento assiste que

    relaciona os alunos com as disciplinas. Outro relacionamento o dos

    professores com as disciplinas, surge o relacionamento ministra indicando

    que cada professor deve ministrar uma ou mais disciplinas. Voc poderia dizer

    e a relao do professor com o aluno? Esta relao pode ser deduzida atravs

    da disciplina, logo no necessrio criar um relacionamento direto entre

    aluno e professor.

    CARDINALIDADE DOS RELACIONAMENTOS: Agora devemos perguntar aos

    relacionamentos como eles devem unir cada membro das entidades

    envolvidas. Para o relacionamento assiste entre as entidades aluno e

    disciplina podemos definir que cada aluno pode assistir vrias disciplinas (n

    disciplinas) e que cada disciplina pode ser assistida por vrios alunos (m

    alunos) logo a cardinalidade desta relao muitos para muitos n x m. J a

    relao ministra que envolve professores e disciplina diferente, pois uma

    disciplina s poder ser ministrada por um professor e um professor poder

    ministrar vrias disciplinas (n disciplinas), logo temos a cardinalidade 1 para

    muitos (1 x n).

  • 31

    Banco de Dados

    Competncia 02

    ATRIBUTOS: vamos definir todos os atributos envolvidos nas entidades e nos relacionamentos.

    ENTIDADE: Aluno (tabela aluno)

    Nome do atributo Tipo do atributo Matricula * Int

    Nome varchar(45) Classe varchar(20) Ano Date

    ENTIDADE: Disciplina (tabela disciplina)

    Nome do atributo Tipo do atributo Cdigo * Int

    Nome varchar(45) Professor_rg ** varchar(12)

    ENTIDADE: Professor (tabela professor)

    Nome do atributo Tipo do atributo RG * varchar(12)

    Nome varchar(45) Escolaridade varchar(20)

    Os * indicam os atributos chaves. ** indica que este atributo uma chave

    estrangeira.

    Vamos ver como fica o diagrama completo.

    Figura 11 Diagrama ER Fonte: O Autor 2013

  • 32

    Tcnico em Informtica

    Competncia 02

    Observe que o relacionamento assiste possui trs atributos descritivos. Este

    relacionamento que tem cardinalidade m x n vai nos gerar uma nova tabela

    para comportar os atributos descritivos.

    RELACIONAMENTO: assiste (tabela aluno_disciplina)

    Nome do atributo Tipo do atributo Cdigo * Int Mat ** Int

    Disciplina ** Int Sala varchar(12)

    Horrio Int

    Voc deve ter observado a incluso das chaves Mat e Disciplina que so

    chaves estrangeira que vem da cardinalidade do relacionamento.

    2.9. Workbench

    O MySQL Workbench uma ferramenta grfica para modelagem de dados,

    com ele possvel criar o banco de dados de forma visual. Os comandos SQL

    so gerados automaticamente pela ferramenta e possvel executa-los no

    servidor.

    Integrando dados.

    Toda a criao dos relacionamentos entre as tabelas podem ser baseados em

    chaves estrangeiras. Outro recurso que a ferramenta possibilita realizar a

    engenharia reversa de esquemas do banco de dados, bem como gerar todos

    os scripts em SQL.

    A diferena bsica entre o MYSQL WORKBENCH e o PHPMYADMIN que o

    WORKBENCH possui uma ferramenta visual, no mais as mesmas operaes

    podem ser realizadas. O vdeo 3 mostra como utilizar esta poderosa

    ferramenta.

    Vdeo aula

    utilizando o

    WORKBENCH,

    link disponvel no

    AVA.

  • 33

    Banco de Dados

    Competncia 02

    2.10. Atividade de fixao

    1) Defina:

    a) Entidade

    b) Atributo

    c) Atributo chave

    d) Chave estrangeira

    e) Chave primria

    f) Relacionamento

    g) Cardinalidade

    2) Utilizando o workbench (veja o vdeo 3) voc dever criar todas as

    tabelas e relacionamentos da modelagem realizada na seco 3.7.

    3) Faa a mesma operao do exerccio 1 utilizando a ferramenta

    PHPMYADMIN e comente as principais diferenas que voc pode

    perceber.

    4) Usando o PHPMYADMIN:

    a) Insira 4 alunos no terceiro ano e 5 no primeiro ano na tabela alunos;

    b) Insira 3 (Joo da Silva, Maria Penha e Pedro Henrique) professores na

    tabela professor;

    c) insira as disciplinas Matemtica, portugus e ingls na tabela disciplina,

    para cada disciplina escolha um professor;

    d) matricule 3 alunos em portugus, 3 em ingls e 5 em matemtica.

    (Cadastrar na tabela aluno_disciplina)

  • 34

    Tcnico em Informtica

    Competncia 02

    5) Faa as seguintes pesquisas usando o comando SELECT que voc

    aprendeu na competncia 1.

    a) Todos os alunos do 3 ano.

    b) Todos os alunos que fazem matemtica.

    c) Todos os alunos que fazem matemtica e so do 3 ano.

    d) Todas as disciplinas do professor Joo da Silva

  • 35

    Banco de Dados

    Competncia 03

    3. COMPETNCIA 03 | CONSTRUIR TABELAS E DICIONRIOS DE

    DADOS DE UM BANCO DE DADOS

    Caro(a) aluno(a), chegamos terceira competncia deste curso de banco de

    dados, na primeira e segunda competncias voc aprendeu sobre os conceitos

    de banco de dados, voc j sabe o que um SGDB, sabe modelar um banco

    atravs de diagrama ER, j sabe criar tabelas com o phpmyadmin e o

    workbench, j consulta as tabelas com o comando SELECT. Enfim, voc j est

    bem sabido em banco de dados, falta ainda por a mo na massa e produzir

    uma modelagem completa, com vrios nveis e complexidade de pesquisas,

    alm de conhecer novos comandos SQL. o que vamos fazer nesta

    competncia, ao final dela voc estar com um banco de dados de controle de

    estoque de um mercado completo. Ser uma boa experincia para voc que

    brevemente estar programando em empresas ou quem sabe trabalhando

    por conta prpria. Vamos l, mos a obra....

    3.1. Cenrio

    Antes de comear esta competncia iremos definir o cenrio que desejamos

    modelar, para isto passo a descrever uma situao que poderia ser normal

    numa entrevista a um cliente que deseja um programa para um

    supermercado.

    Um dono de supermercado lhe convidou para que voc fizesse um sistema de

    controle de estoque dos produtos vendidos no supermercado. Voc vai ao

    supermercado e comea a perguntar ao dono o que ele gostaria de ter no

    sistema, ele lhe diz:

    Gostaria de controlar a quantidade de produtos que entra e sai do

    meu estoque diariamente e que o sistema permitisse um valor mnimo

    e mximo de produtos no estoque para que eu no comprasse

    produtos de mais ou faltassem produtos. Gostaria de ter controle sobre

    os fornecedores dos produtos (nome ou razo social, CNPJ, telefone) e

  • 36

    Tcnico em Informtica

    Competncia 03

    quais mercadorias os fornecedores vendem. Outra informao

    importante sobre os meus clientes, eu gostaria de saber o CPF, nome,

    telefone e email deles, pois assim poderia melhorar minhas vendas.

    Bom, esta entrevista foi muito boa, mas agora voc precisar interpretar os

    dados fornecidos informalmente pelo dono do supermercado. Esta

    interpretao ir leva-lo construo do seu MER (modelo entidade

    relacionamento) que ento ser a base para o banco de dados. Junto com o

    MER voc aprender a construir um dicionrio de dados, que um

    documento essencial para o entendimento do sistema como um todo. Vamos

    comear identificando as entidades envolvidas na nossa modelagem.

    3.2. Identificando as entidades

    Uma entidade uma coisa ou um objeto concreto ou abstrato do mundo

    real. Para identificar as entidades envolvidas no mini-mundo da entrevista que

    fizemos, vamos tentar localizar estas coisas ou objetos. Veja as seguintes

    frases do cliente que eu separei do texto:

    Gostaria de controlar a quantidade de produtos que entra e sai do

    meu estoque

    Gostaria de ter controle sobre os fornecedores dos produtos

    Outra informao importante sobre os meus clientes

    Veja que nestas frases podemos encontrar pistas sobre as nossas entidades.

    Na primeira frase produtos parece ser uma entidade, por qu? Produtos um

    objeto concreto, real e presente no mini-mundo, ele de interesse, pois

    sobre ele que devemos controlar a quantidade. Veja que a entidade, alm

    de ser um objeto real, sofre uma ao do sistema. Mas a frente veremos que

    ainda podemos definir seus atributos.

    Nesta mesma frase podemos definir outra entidade, j conseguiu identificar

    qual?

  • 37

    Banco de Dados

    Competncia 03

    A entidade estoque.

    Por qu? Observe que tambm necessrio fazer uma ao sobre esta

    entidade, que a de manter o controle da quantidade de produtos, alm

    disto, pense concretamente, pode existir um produto cadastrado no sistema

    (ex. sabo em barra vem-ri-ri) que no tenha estoque dele cadastrado,

    sendo assim a entidade produto ter o cadastro do produto, mas a entidade

    estoque no ter uma referncia ao produto.

    Bem, agora ficou fcil definir as outras entidades envolvidas, so elas:

    fornecedores e clientes. Apesar de serem um pouco diferentes da entidade

    produto estas entidades so fceis de serem percebidas pelo mesmo motivo

    de produtos. Ser que existem outras entidades? O que voc acha?

    Agora que j temos nossas entidades, devemos pensar nos atributos e

    relacionamentos. Observe que a modelagem s ficar completa quando todas

    estas peas se encaixarem, um verdadeiro quebra-cabea.

    3.3. Atributos

    Aqui devemos seguir o que o cliente deseja para cada entidade. Poderemos

    tambm colocar outros atributos que o cliente no informou, mas que

    serviro como controle. Vamos olhar o que falado no texto do dialogo sobre

    cada uma das entidades que definimos antes:

    Entidade produtos:

    o que o sistema permitisse um valor mnimo e mximo de produtos

    Podemos ento definir um atributo estoque mnimo e

    estoque mximo para controlar esta caracterstica.

    Entidade estoque:

    o controlar a quantidade de produtos que entra e sai do meu estoque

    diariamente.

  • 38

    Tcnico em Informtica

    Competncia 03

    Precisamos pensar em qual atributo ser necessrio para

    fazer este controle. Veremos isto quando falarmos dos

    relacionamentos, ok?

    Entidade fornecedores:

    o Gostaria de ter controle sobre os fornecedores dos produtos (nome ou

    razo social, CNPJ, telefone) e quais mercadorias eles vendem.

    Fica fcil, so eles: razo social (nome da empresa), CNPJ e

    telefone. Neste caso observe que feito uma referncia

    aos produtos que o fornecedor vende. Isto um tpico

    caso de chave estrangeira (lembre-se da definio).

    Entidade clientes:

    o Outra informao importante sobre os meus clientes, eu gostaria de

    saber o CPF, nome, telefone e email deles, pois assim poderia melhorar

    minhas vendas

    Fcil, os atributos so: CPF, nome, telefone e email.

    Observe que ainda no comeamos a construir nosso diagrama de ER e nem

    sabemos ainda como fazer um dicionrio de dados, mais as informaes esto

    chegando. Vamos agora aos relacionamentos, lembre-se que a modelagem

    chama-se Entidade-Relacionamento, j vimos as entidades, agora iremos aos

    relacionamentos.

    3.4. Relacionamento

    Um bom comeo para definir os relacionamentos do nosso banco de dados

    olhar para as entidades e tentar relacion-las uma a uma.

    Por exemplo, ser que a entidade produto se relaciona com a entidade

    estoque?

    A resposta SIM!

  • 39

    Banco de Dados

    Competncia 03

    Ento existe uma relao, mas qual seria a cardinalidade desta relao?

    Cada produto pode ter um registro no estoque que ir informar a quantidade

    de produtos.

    Pode haver mais de um registro no estoque para o mesmo produto?

    NO, pois se houver mais de um registro como saberemos qual a quantidade

    real? Ento a cardinalidade 1:1 (um para um).

    Ser que a entidade produto possui relao com a entidade cliente?

    SIM, a entidade cliente realiza compra de produtos, precisamos ento

    modelar este relacionamento.

    A cardinalidade N:N (N para N), ou seja muitos para muitos, pois um cliente

    pode comprar vrios produtos (Itens) e um produto (ou um item) pode ser

    comprado por mais de um cliente. ATENO: No confundir o termo produto

    que se refere entidade com o termo produto que se refere ao item. Ento

    Sabo em p vem-ri-ri um produto ou item da entidade produto. OK?

    A entidade produto possui uma relao com a entidade fornecedor, qual a

    cardinalidade desta relao?

    N:N, responda o porqu desta cardinalidade.

    Agora podemos montar o nosso diagrama MER, a Figura 11 mostra todos os

    elementos que modelamos, com exceo dos atributos que sero colocados

    depois, quando criarmos o dicionrio de dados.

  • 40

    Tcnico em Informtica

    Competncia 03

    Figura 12 Diagrama MER Fonte: O autor 2013

    Este diagrama ainda no est completo, falta os atributos que sero definidos.

    Aps esta etapa ser necessrio fazer a representao tabular que resultar

    nas tabelas propriamente ditas, pois os relacionamentos geram troca de

    chaves que dependem da cardinalidade da relao.

    3.5. Integridade de dados

    Um banco de dados bem feito, precisa garantir a integridade dos dados que

    so armazenados, isto porque durante a vida til do banco muitas operaes

    sero realizadas, como remoo de um registro, modificao de valores de

    registros, insero de novos registros, etc.

    Para que o banco de dados possua integridade necessrio que o projetista

    garanta isto durante a etapa de criao do diagrama ER e do dicionrio de

    dados que veremos em breve. So trs nveis de integridade que devem ser

    observadas:

    1) Integridade de domnio: Esta integridade garante que tipos de dados

    estejam corretamente associados aos atributos. Por exemplo, se voc

  • 41

    Banco de Dados

    Competncia 03

    definir um campo sexo que pode assumir F ou M voc deve garantir

    o domnio adequado que relacionado ao tipo CHAR (Caractere) e no

    ao tipo INT (Inteiro).

    2) Integridade de Entidade: So as chaves primrias que definimos

    anteriormente. Temos que garantir que dois registros no tenham a

    mesma chave primria, para isto escolhemos uma chave nica para o

    registro.

    3) Integridade referencial: So as chaves estrangeiras, devemos garantir

    que o valor associado ao um campo que seja uma chave estrangeira

    esteja cadastrado na tabela de referncia.

    Voc ver estas integridades acima mencionadas sendo colocadas no nosso

    projeto.

    No prximo tpico vamos mostrar como fazer a representao tabular do

    diagrama ER, se possvel faa um rpida leitura na seo 2.6 da competncia 2

    (Atributos chaves em um relacionamento).

    3.6. Representao tabular.

    A representao tabular a forma de transformar o diagrama ER em tabelas

    que sero construdas no SGBD. Para criar a tabela devemos seguir duas

    regras bsicas:

    1. Todas as entidades viram uma tabela. No nosso caso teramos as

    seguintes tabelas: clientes, produtos, fornecedor e estoque.

    2. Se uma entidade tiver um relacionamento associada, ento devemos

    organizar as chaves estrangeiras nas tabelas da relao.

    Para organizar as chaves nos relacionamentos devemos olhar para a

    cardinalidade das relaes (ver seo 2.6). Dependendo da cardinalidade ser

    ou no necessria a criao de uma nova tabela, vamos analisar cada uma das

    relaes do nosso diagrama ER.

  • 42

    Tcnico em Informtica

    Competncia 03

    Relacionamento compram: As entidades envolvidas so clientes e

    produtos com cardinalidade N:N (muitos para muitos). Neste caso

    devemos fazer a unio dos atributos chaves das duas entidades.

    Onde vamos colocar a unio destas chaves?

    Vamos criar duas tabelas, uma registro_venda que se relacionar com os

    clientes (vamos colocar uma chave estrangeira do cliente nesta tabela) e outra

    tabela chamada produtos_venda que registrara os produtos vendidos a cada

    venda para o cliente (vamos colocar uma chave estrangeira de produtos e

    outra de registro_venda).

    Relacionamento fornece: As entidades envolvidas so fornecedores e

    produtos com cardinalidade N:N (muitos para muitos).

    Neste caso devemos fazer a unio dos atributos chaves das duas entidades,

    como no caso anterior.

    Vamos criar a tabela registro_entrada que ter atributo chave relacionada ao

    fornecedor e a tabela produto_entrada que listar os produtos entregues

    pelo fornecedor com chaves estrangeiras das tabelas registro_entrada e

    produtos.

    Relacionamento armazena: As entidades envolvidas so estoque e

    produtos com cardinalidade 1:1 (um para um).

    Neste caso no necessrio criar uma nova tabela, devemos apenas colocar o

    atributo chave estrangeira em cada uma das tabelas estoque e produtos.

    Resumindo, da anlise do diagrama iro surgir 8 tabelas que devero

    obedecer a distribuio das chaves definidas nesta etapa. So elas: clientes,

    produtos, estoque, fornecedor que vieram das entidades e as tabelas

  • 43

    Banco de Dados

    Competncia 03

    registro_venda,produtos_venda, registro_entrada e produtos_entrada que

    foram definidas a partir das relaes.

    Para finalizar nossa modelagem devemos documentar de uma forma mais

    clara tudo que ficou definido, para isto iremos criar o dicionrio de dados.

    3.7. Dicionrio de dados

    Junto com o modelo de entidade e relacionamento, necessrio que se

    mantenha um documento com a explicao de todos os objetos nele criados.

    Este documento, que pode ser chamado de dicionrio de dados e permite

    que os analistas obtenham informaes sobre todos os objetos do modelo de

    forma textual e direta. Ele vai conter explicaes difceis de incluir no

    diagrama. vlido lembrar que o objetivo do documento ser claro e

    consistente. Para apresentao do dicionrio de dados, devemos utilizar uma

    tabela para cada entidade. Este modelo que irei apresentar um dos

    possveis, observe que outras colunas podem ser adicionadas de acordo com a

    necessidade de explicao do modelo.

    Entidade: Produto

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Descrio Simples Texto 50 Descrio do produto, marca.

    Estoque_minimo Simples Numrico Quantidade mnima no estoque

    Estoque_mximo Simples Numrico Quantidade mxima no estoque

    Preo Simples Numrico Preo de venda do produto

    Saiba mais: Na modelagem

    Relacional implementada

    pelos SGBD, existe um passo

    muito importante. Procure por

    Normalizao junto com SGDB para saber mais.

  • 44

    Tcnico em Informtica

    Competncia 03

    Vamos explicar cada uma das colunas desta tabela,

    Entidade: o nome da entidade que foi definida no MER.

    Atributo: deve-se colocar o nome do atributo.

    Classe: as classes podem ser: simples, composto, multivalorado, nulo,

    derivado e chave. Consulte o tpico 2.3 (competncia 2) que falamos

    destes tipos de atributos.

    Domnio: podem ser numrico, texto, data e booleano. Aqui usamos

    portugus mesmo para definir os tipos dos atributos. No banco iremos

    transformar para o tipo especifico do banco.

    Tamanho: define a quantidade de caracteres que sero necessrios

    para armazenar o seu contedo. Geralmente o tamanho definido

    apenas para atributos de domnio texto.

    Descrio: opcional e pode ser usado para descrever o que aquele

    atributo ou oferecer informaes adicionais que possam ser usadas

    futuramente pelo analista ou programador do sistema.

    Vamos continuar com as outras entidades.

    Entidade: Estoque

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Qtde Simples Numrico Quantidade de produtos no estoque

    Valor_unitrio Simples Numrico O preo do Produto

    Produto_id Estrangeira Numrico Chave do relacionamento com a entidade produto

  • 45

    Banco de Dados

    Competncia 03

    Entidade: Cliente

    Atributo Classe Domnio Tamanho Descrio

    CPF Chave Texto 12 Atributo chave

    Nome Simples Texto 50 Nome do Cliente

    Email Simples Texto 30 Email do cliente

    Telefone Simples Texto 12 Telefone do cliente

    Entidade: Fornecedor

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Razo_social Simples Texto 50 Nome do fornecedor

    CNPJ Simples Texto 15 CNPJ do fornecedor

    Telefone Simples Texto 12 Telefone do fornecedor

    Relacionamento: registro_venda

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Data_sada Simples Data Data da Venda

    Valor _total Calculado Numrico Valor total da venda

    Cliente_cpf Estrangeira Texto 12 Chave estrangeira

  • 46

    Tcnico em Informtica

    Competncia 03

    Relacionamento: produtos_entrada

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Qtde Simples Numrico Quantidade do produto recebido

    Produto_id Estrangeira Numrico Chave estrangeira da tabela produto

    Registro_venda_id Estrangeira Numrico Chave estrangeira da tabela registro_venda

    Relacionamento: produtos_venda

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Qtde Simples Numrico Quantidade do produto vendido.

    Produto_id Estrangeira Numrico Chave estrangeira da tabela produto

    Sada_produto Estrangeira Numrico Chave estrangeira da tabela registro venda

    Relacionamento: registro_entrada

    Atributo Classe Domnio Tamanho Descrio

    Id Chave Numrico Atributo chave

    Data_entrada Simples Data Data da Venda

    Valor _total Calculado Numrico Valor total da venda

    Fornecedor_id Estrangeira Numrico Chave estrangeira da tabela fornecedor

  • 47

    Banco de Dados

    Competncia 03

    Voc tem duas formas

    Voc tem duas formas de criar tabelas usando o PHPMYADMIN, uma

    utilizando a interface grfica como fizermos na competncia 2. Veja este vdeo

    mostrando a criao destas tabelas e relaes usando o PHPMYADMIN e o

    MYSQL WORKBENCH.

    Outra forma usando o comando create table da linguagem SQL. Por

    exemplo, a tabela produto pode ser criada com o seguinte comando em SQL.

    CREATE TABLE produto (

    `id` INT(11) NOT NULL AUTO_INCREMENT , `descricao` VARCHAR(50), `estoque_minimo` INT(11), `estoque_maximo` INT(11), `preco` DECIMAL(9,2) , PRIMARY KEY (`id`) )

    Cada linha do comando significa alguma coisa:

    CREATE TABLE produto: o comando seguido do nome da tabela.

    NOT NULL AUTO_INCREMENT: NOT NULL indica que este campo no

    pode assumir o valor NULL, ou seja, nulo. AUTO_INCREMENT indica que

    este campo ser auto incrementado, aumentar em uma unidade cada

    vez que um novo registro for inserido.

    PRIMARY KEY (`id`): indica qual ser o campo que ser a chave

    primria.

    Observe agora a criao da tabela registro_entrada, esta tabela tem uma

    chave estrangeira.

    Vdeo aula

    mostrando como

    criar tabelas com

    relacionamentos

    usando o

    PHPMYADMIN,

    link disponvel no

    AVA.

    Vdeo aula

    mostrando como

    criar tabelas com

    relacionamentos

    usando o MYSQL

    WORKBENCH,

    link disponvel no

    AVA.

  • 48

    Tcnico em Informtica

    Competncia 03

    CREATE TABLE registro_entrada ( `id` INT(11) NOT NULL AUTO_INCREMENT , `valor_total` DECIMAL(9,2) NULL DEFAULT '0.00' , `data_entrada` DATE NULL DEFAULT NULL , `fornecedor_id` INT NOT NULL , PRIMARY KEY (`id`) , FOREIGN KEY (`fornecedor_id` ) REFERENCES `supermercado`.`fornecedor` (`id` ) ON DELETE CASCADE ON UPDATE CASCADE)

    Observe que nesta tabela foi necessrio criar uma chave estrangeira.

    FOREIGN KEY (`fornecedor_id`): Indica que fornecedor_id um campo

    que ser chave estrangeira

    REFERENCES `fornecedor` (`id`): Indica que a tabela a qual ser feita a

    referncia atravs da chave estrangeira a tabela fornecedor e o

    campo desta tabela id.

    ON DELETE CASCADE: Significa que se um registro for deletado na

    tabela fornecedor os registros correspondentes nesta tabela tambm

    sero deletados. Voc ver estes detalhes na seo 4.8 mais a frente.

    ON UPDATE CASCADE): Significa que se um registro for atualizado na

    tabela fornecedor os registros correspondentes nesta tabela tambm

    sero atualizados.

    Vamos agora analisar o fluxo da informao dentro do banco de dados.

    3.8. Anlise do fluxo de informao no banco de dados.

    Esta etapa apenas para ficar mais claro como iremos trabalhar com o nosso

    banco de dados. A figura abaixo mostra o banco de dados modelado no

    MYSQL workbench.

  • 49

    Banco de Dados

    Competncia 03

    Figura 13 Relao entre as tabelas do projeto Fonte: O autor 2013

    Para comear devemos inserir elementos nas tabelas, quais tabelas devem ser

    usadas primeiro?

    Todas as tabelas que no possuem chaves estrangeiras, pois a insero de um

    elemento no depender inicialmente de nenhum valor cadastrado em outra

    tabela.

    Tabela cliente:

    CPF Nome Email Telefone

    90878712354 Luiz Gonzaga [email protected] 87-98787676

    98767678790 Marina da Silva [email protected] 81-89760989

    98787965454 Marcos Morais [email protected] 81-89767654

    Tabela produto:

    Id Descrio Estoque_minimo Estoque_maximo Preo

    123 Sabo em p 12 100 1,29

    134 Leite longa vida 15 100 3,56

    235 Feijo preto 20 200 4,89

  • 50

    Tcnico em Informtica

    Competncia 03

    Tabela fornecedor:

    Id CNPJ Razo_social Telefone

    1 29182738473625 Joao costa AS 81-90989876

    2 23438372637489 Trafweu 88-98787657

    3 98768764645346 Granada Ltda. 81-98789765

    Ateno!

    Para vender os produtos, o dono precisa inicialmente compra-los dos

    fornecedores, para t-los no estoque. Esta operao de insero de

    mercadorias no estoque vai envolver o cadastro do fornecedor, o cadastro de

    produtos e ainda vai mexer com 3 tabelas diferentes que so as tabelas

    estoque, registro_entrada e produtos_entrada. Veja a figura abaixo

    mostrando as alteraes.

    Figura 14 Insero de um novo produto no estoque Fonte: O autor 2013

    Ento vamos imaginar que o fornecedor Granada Ltda cujo id 3, vai

    vender 100 caixas de Sabo em p (id=123), e 30 kg de Feijo Preto

    (id=235), vamos atualizar as tabelas corretamente.

  • 51

    Banco de Dados

    Competncia 03

    Tabela registro_entrada

    Id Valor_total Data_entrada Fornecedor_id

    1 275,70 25/03/2013 3

    O valor total calculado assim, valor_total = 100*1,29+30*4,89 = 275,70. A

    prxima tabela ir registrar os produtos vendidos nesta venda que foi o sabo

    em p e o feijo preto.

    Tabela produtos_entrada

    Id Produto_id Qtde Registro_entrada

    1 123 100 1

    2 235 30 1

    Observe que o campo produto_id uma chave estrangeira que aponta para a

    tabela produto e o campo registro_entrada que aponta para a tabela

    registro_entrada. Para finalizar o registro da venda completamente devemos

    registrar a entrada na tabela estoque.

    Tabela estoque:

    Id Qtde Valor_unitario Produto_id

    1 100 1,29 123

    2 30 4,89 235

    Pronto, todas as tabelas esto devidamente atualizadas. Agora possvel

    realizar as vendas, pois a tabela estoque acusa um estoque de 100 caixas de

    sabo e 30 de feijo.

    Caro alunos, sei que at agora fizemos um grande exerccio para entender

    todo este processo de insero. Na prtica a insero no banco de dados no

    acontece manualmente, devemos usar a linguagem SQL para fazer isto.

    Vamos aprender a inserir registros na tabela usando SQL.

  • 52

    Tcnico em Informtica

    Competncia 03

    Pronto, todas as tabelas esto devidamente atualizadas. Agora possvel

    realizar as vendas, pois a tabela estoque acusa um estoque de 100 caixas de

    sabo e 30 de feijo.

    Caro alunos, sei que at agora fizemos um grande exerccio para entender

    todo este processo de insero. Na prtica a insero no banco de dados no

    acontece manualmente, devemos usar a linguagem SQL para fazer isto.

    Vamos aprender a inserir registros na tabela usando SQL.

    3.9. Inserindo registros com o SQL.

    O comando para insero nas tabelas do banco de dados com SQL o

    comando INSERT, veja como escrever este comando.

    INSERT INTO cliente (`cpf`, `nome`, `email`, `telefone`) VALUES

    ('90878712354', 'Luiz Gonzaga', '[email protected]', '87-98787676');

    O comando INSERT composto das seguintes partes, veja:

    INSERT INTO: O inicio do comando identifica o prprio comando.

    cliente (`cpf`, `nome`, `email`, `telefone`) : o nome da tabela e os

    registros que sero inseridos. Obedea a ordem de insero dos valores

    com a ordem dos campos colocados nesta parte do comando.

    VALUES ('90878712354', 'Luiz Gonzaga', '[email protected]', '87-

    98787676'): os valores que sero inseridos na tabela. Devem seguir a

    ordem dos nomes dos campos colocados na parte anterior do

    comando.

    Veja como fcil, tente voc mesmo, preencha os valores abaixo, colocando

    os valores corretamente (Faa isto num papel a parte):

  • 53

    Banco de Dados

    Competncia 03

    CPF Nome Email Telefone

    98767678790 Marina da Silva [email protected] 81-89760989

    98787965454 Marcos Morais [email protected] 81-89767654

    INSERT INTO ___________(_____________,______________ ,____________ , ________________) VALUES (_____________ ,______________ , ____________ , ________________);

    INSERT INTO ___________(_____________,______________ ,____________ , ________________) VALUES (_____________ ,______________ , ____________ , ________________);

    O mesmo vale para as outras tabelas. Nas atividades de fixao no fim desta

    competncia voc poder exercitar mais esta atividade.

    4. 0. Deletando/removendo registros com SQL.

    A remoo de registros das tabelas feito com o comando DELETE. Vamos ver

    como este comando executado.

    DELETE FROM `cliente` WHERE cpf= 90878712354

    O comando ir remover o registro cujo CPF igual a 90878712354. Voc

    poder remover um registro por qualquer campo dos registros, veja:

    DELETE FROM `cliente` WHERE nome=Luiz Gonzaga

    ATENO: A remoo de registros de tabelas que tenham chave estrangeira

    em outras tabelas deve ser seguida da remoo de todos os registros que

    existirem nas outras tabelas ligadas, isto se deve a necessidade de se manter a

    integridade referencial no banco de dados. Esta operao garantida pelo

    comando ON DELETE CASCADE que foi inserido durante a criao da tabela.

    (veja o vdeo 4) e o MySQL faz esta operao automaticamente.

  • 54

    Tcnico em Informtica

    Competncia 03

    Figura 15 Remoo automtica pelo MySQL. Fonte: o autor 2013

    4.1. Modificando registros com SQL.

    Os comandos para remover e modificar registro usando SQL so muito

    semelhantes. A questo da integridade referencial tambm garantida pelo

    comando ON UPDATE CASCADE que diz ao MySQL que uma chave ao ser

    alterada dever cascatear esta modificao nos registros que fazem

    referncia a esta chave nas tabelas. Para modificar um registro com SQL

    devemos usar o comando UPDATE.

    UPDATE produto SET `descricao`='sabao em po bam-bam' WHERE id

    =908;

  • 55

    Banco de Dados

    Competncia 03

    Explicando o comando:

    UPDATE produto: Comando SQL para alterar um registro da tabela

    produto.

    SET descricao='sabao em po bam-bam': SET a parte do comando que

    define qual ou quais campos devero ser atualizados, no nosso caso o

    campo descrio passar a ter o valor sabo em p bam-bam.

    WHERE id=908: Esta parte do comando indica qual o registro que ser

    atualizado, neste caso o que tem o campo id = 908.

    4.2. Melhorando as consultas usandoSELECT.

    Na competncia 1 e 2 fizermos vrias consultas para exemplificar o uso do

    comando SELECT. Agora vamos aprender como fazer diversos tipos de

    consultas usando o comando SELECT e suas sub-partes.

    4.2.1. Fazendo consultas a mais de uma tabela por vez.

    Imagine que voc gostaria de saber quais as quantidades de cada

    produto no estoque. Esta consulta simples, basta voc dar um

    comando SELECT na tabela estoque:

    o SELECT produto_id, qtde FROM estoque

    Agora imagine que voc gostaria que a sua lista inclusse a descrio de

    cada produto. Esta pesquisa envolve duas tabelas: estoque e produtos.

    Preste ateno neste comando:

    o SELECT produto.descricao, estoque.qtde FROM produto, estoque

    WHERE produto.id=estoque.produto_id

    Sero listados os campos descrio da tabela produto que indicamos no

    comando por produto.descricao e o campo qtde da tabela estoque que

    indicamos com o comando estoque.qtde. Depois da clausula FROM segue os

    nomes das duas tabelas envolvidas na pesquisa. As duas tabelas sero unidas

    usando o critrio depois da clausula WHERE que associa o campo id da tabela

  • 56

    Tcnico em Informtica

    Competncia 03

    produto com o campo produto_id da tabela estoque atravs do comando

    produto.id=estoque.produto_id.

    4.2.2. Ordenando os dados.

    Imagine que na pesquisa anterior, voc gostaria de mostrar os produtos

    em ordem alfabtica crescente. Para isto devemos usar o comando

    ORDER BY, veja o exemplo:

    o SELECT produto.descricao, estoque.qtde FROM produto, estoque

    WHERE produto.id=estoque.produto_id ORDER BY

    produto.descricao

    Este comando retornar uma lista de produtos com suas quantidades em

    estoque e ordenados pela descrio do produto.

    4.2.3. Realizando clculos.

    Podemos usar uma srie de comandos para realizar clculos. Uma

    possibilidade multiplicar valores de colunas com outras colunas. Por

    exemplo, qual o valor total de cada produto no estoque, ou seja, se

    existem 30 caixas de sabo bam-bam e cada uma custa 1,30 ento o

    valor do estoque do sabo bam-bam de 30*1,30 = 39,00. O comando

    abaixo d o valor de cada produto no estoque:

    o SELECT produto.preco*estoque.qtde FROM produto, estoque

    WHERE produto.id=estoque.produto_id

    Tambm gostaramos de saber quantos produtos tm cadastrados na

    nossa base de dados. Para isto usamos o comando COUNT(). Ex:

    o SELECT COUNT(descricao) FROM produtos

    Este comando retorna apenas uma linha com a quantidade de produtos da

    tabela. Existem outras funes para realizar clculos: MAX() retorna o maior

    valor, MIN() retorna o menor valor, SUM() retorna a soma dos valores.

  • 57

    Banco de Dados

    Competncia 03

    4.2.4. Agrupando resultados.

    Podemos realizar consultas e agrupar o resultado por um determinado

    campo. Por exemplo, gostaramos de saber quanto cada cliente

    comprou no supermercado at hoje. Para isto devemos usar o comando

    GROUP BY unido a uma funo de calculo, no caso, SUM()

    o SELECT SUM(valor_total), cliente_cpf FROM registro_venda

    GROUP BY cliente_cpf

    O resultado ser uma coluna contendo o cpf do cliente e outra com a soma

    das suas compras.

    4.3. Atividades de fixao

    1) Usando o esquema proposto para o nosso banco de dados e a linguagem

    SQL, tente realizar as seguintes inseres no banco de dados que criamos

    nesta competncia:

    a) Tabela Cliente:

    CPF Nome Email Telefone

    90878712987 Maria Aparecida [email protected] 87-98787676 98789876577 Tereza Cristina [email protected] 81-89760989

    98078676565 Jota Ramos Silva [email protected] 81-89767654

    b) Tabela produtos:

    Id Descrio Estoque_minimo Estoque_maximo Preo

    423 Sabo barra JT 200 700 1,78

    129 Pasta de Dente KK 15 100 3,56

    987 Arroz tio Braz 50 200 4,89

  • 58

    Tcnico em Informtica

    Competncia 03

    c) Tabela Fornecedor:

    Id CNPJ Razo_social Telefone

    4 29182738987678 Moinho Cristo 81-9098876

    5 67654545677656 Brasil comida 88-98787865

    6 89765546567898 Limpa Brasil 81-98788987

    2) Realize as seguintes inseres nas tabelas apropriadas.

    a) O fornecedor Limpa Brasil vendeu 300 caixas de pasta de dente KK pelo

    preo de 1,43, e mais 50 caixas de Sabo barra JT.

    b) O fornecedor Moinho Cristo vendeu 200 quilos de Arroz tio Braz pelo

    preo de 3,45 o quilo.

    c) A cliente Maria Aparecida comprou 3 quilos de Arroz tio Braz, 2 pasta

    de dente KK e 1 barra de sabo JT.

    d) O cliente Jota Ramos comprou 5 pastas de dente KK e 1 kg de Arroz tio

    Braz.

    3) Realize as seguintes pesquisas no banco de dados.

    a) As compras realizadas pelo cliente Jota Ramos

    b) Uma lista de todos os produtos da loja

    c) A descrio do produto cujo id 423

  • 59

    Banco de Dados

    REFERNCIAS

    CERTIFICACAODB. Figura 2 website disponvel em

    http://certificacaobd.com.br/2012/05/09/visao-dos-dados/. Acessado em

    maro/2013

    CERTIFICACAODB. Figura 2 website disponvel

    em http://certificacaobd.com.br/2012/05/09/visao-dos-dados/. Acessado em

    maro/2013

    MIRELLA, Profa. Disponvel

    em http://homepages.dcc.ufmg.br/~mirella/DCC011/aula19.pdf acessado em

    maro/2013

  • 60

    Tcnico em Informtica

    CURRCULO DO PROFESSOR-PESQUISADOR

    Srgio de S Leito Paiva Jnior

    Graduado em Licenciatura em computao na UFRPE, Mestrado em

    Biometria pela UFPE, Atualmente faz o doutorado em Bioinformtica na UFPE,

    Atualmente professor pela UFRPE unidade acadmica de Serra Talhada-PE.

    Possui experincia com ensino de computao nos nveis tcnicos, superior e

    ps-graduao a mais de 9 anos nas disciplinas de Banco de dados,

    Programao, lgica de programao e estatstica computacional.

    J trabalhou em grandes empresas com desenvolvimento de software em

    Pernambuco, alm de desenvolver vrios softwares para empresas do estado.