Sei sulla pagina 1di 65

Tcnico em Informtica

Banco de Dados

Srgio de S Leito Paiva Jnior

2013

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

Sumrio
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

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

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

Banco de Dados

trabalhando. Na terceira competncia iremos criar um grande sistema com todos os componentes estudados durante a disciplina.

Tcnico em Informtica

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:

Banco de Dados

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

Tcnico em Informtica

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.

Banco de Dados

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

Tcnico em Informtica

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:

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
SGDB um conjunto de arquivos e programas que gerenciam um banco de dados.

10

Tcnico em Informtica

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.

11

Banco de Dados

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

12

Tcnico em Informtica

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,

13

Banco de Dados

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 <campos> FROM <tabelas_ref> WHERE <definio_where> Figura 8: Clusula Select Fonte: o autor (2013)

14

Tcnico em Informtica

Competncia 01
Onde: <campos> : uma lista com o nome dos campos da(s) tabela(s) que estamos acessando. <tabela_ref>: uma lista com o nome das tabelas que estamos acessando. <definio where>: 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 Matricula Nome Email Tipo do Campo Integer Varchar (45) Varchar(20) Descrio Valor inteiro Valor string (palavras) de tamanho 45 Valor string (palavras) de tamanho 45

Esta tabela poderia estar preenchida com vrios valores, como mostrado abaixo.
Matricula 1 2 3 4 Nome Jose da Silva Maria das Dores Mario Ramos Luiz Gustavo Email joa@email.com maria@email.com ramos@email.com luiz@email.com

Vamos imaginar vrias situaes: 1. Gostaria de listar todos os nomes dos alunos que esto na tabela: SELECT nome FROM alunos:

15

Banco de Dados

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 1 2 3 4 Nome Jos da Silva Maria das Dores Mario Ramos Luiz Gustavo

3. Gostaria de listar todos os campos que esto na tabela. SELECT * FROM alunos : Resultado:
Matricula 1 2 3 4 Nome Jos da Silva Maria das Dores Mario Ramos Luiz Gustavo Email joa@email.com maria@email.com ramos@email.com luiz@email.com

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:

16

Tcnico em Informtica

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:

Vdeo aula sobre comando SELECT, link disponvel no AVA. Tabela 1 Operadores clusula WHERE

17

Banco de Dados

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. 2. 3. 4. 5. 6. 7.

a) b) c) d) 8.

O que um SGDB? Quais os nveis de abstrao de um SGBD? Defina viso lgica e viso dos dados. O que um modelo? Fale sobre o modelo entidade relacionamento. Defina DDL, DML. 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: Nome de alunos do curso de EAD. Data de nascimento dos alunos. Valor do salrio dos professores do curso de EAD Valor P ou F para indicar falta ou presena do aluno. O que so operadores? Defina operadores lgicos, aritmticos e relacionais.

18

Tcnico em Informtica

Competncia 01
9. Construa comandos SELECT para os seguintes problemas baseados na tabela Alunos abaixo:
Matricula 1 2 3 4 Nome Jos da Silva Maria das Dores Mario Ramos Luiz Gustavo Email joa@email.com maria@email.com ramos@email.com a. luiz@email.com

a) b) c) d) e)

Consultar os nome e e-mails dos alunos. Consultar os nomes de todos os alunos. Consultar o e-mail do aluno cuja matricula igual a 3. Consultar matricula e e-mail do aluno que tem nome Jose da Silva Consultar todos os alunos cuja matricula seja menor ou igual a 2.

19

Banco de Dados

Competncia 02
2. COMPETNCIA 02 | ELABORAR UM MODELO ENTIDADERELACIONAMENTO
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:

20

Tcnico em Informtica

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 EntidadeRelacionamento (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.

21

Banco de Dados

Competncia 02

Figura 6 Representao da sequncia de modelagem Fonte: Figueira 2005

Saiba mais: Muitos destes conceitos de modelagem, como minimundo, so estudados por uma rea da computao chamada Engenharia de software. Procure aprender sobre esta rea da computao.

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 uni camente 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

22

Tcnico em Informtica

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:

23

Banco de Dados

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: o o Mundo real: Um banco simplificado: Entidades: {cliente, Agencia, Conta, emprstimo} Atributos: Cliente = (nome_cliente: string; cpf: string). Conta = (nmero_conta: string; saldo: real).

24

Tcnico em Informtica

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.

25

Banco de Dados

Competncia 02
CONTRIBUINTE CPF 121234321 234122345 122123345 213454876 NOME Jose da Silva Maria da Penha Silva Roberta Miranda Jose da Silva DATA_NASC 13/01/1974 23/01/1980 2/01/1870 13/01/1974

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

26

Tcnico em Informtica

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:

27

Banco de Dados

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.

28

Tcnico em Informtica

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

29

Banco de Dados

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).

30

Tcnico em Informtica

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

31

Banco de Dados

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.

32

Tcnico em Informtica

Competncia 02
2.10. Atividade de fixao

1) Defina: a) b) c) d) e) f) g) Entidade Atributo Atributo chave Chave estrangeira Chave primria Relacionamento 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)

33

Banco de Dados

Competncia 02
5) Faa as seguintes pesquisas usando o comando SELECT que voc aprendeu na competncia 1. a) b) c) d) Todos os alunos do 3 ano. Todos os alunos que fazem matemtica. Todos os alunos que fazem matemtica e so do 3 ano. Todas as disciplinas do professor Joo da Silva

34

Tcnico em Informtica

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

35

Banco de Dados

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?

36

Tcnico em Informtica

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.

37

Banco de Dados

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, e u 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!

38

Tcnico em Informtica

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.

39

Banco de Dados

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

40

Tcnico em Informtica

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.

41

Banco de Dados

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

42

Tcnico em Informtica

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 Id Descrio Estoque_minimo Estoque_mximo Preo Classe Chave Simples Simples Simples Simples Domnio Numrico Texto Numrico Numrico Numrico 50 Tamanho Descrio Atributo chave Descrio do produto, marca. Quantidade mnima no estoque Quantidade mxima no estoque 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.

43

Banco de Dados

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 Id Qtde Valor_unitrio Produto_id Classe Chave Simples Simples Estrangeira Domnio Numrico Numrico Numrico Numrico Tamanho Descrio Atributo chave Quantidade de produtos no estoque O preo do Produto Chave do relacionamento com a entidade produto

44

Tcnico em Informtica

Competncia 03
Entidade: Cliente Atributo CPF Nome Email Telefone Classe Chave Simples Simples Simples Domnio Texto Texto Texto Texto Tamanho 12 50 30 12 Descrio Atributo chave Nome do Cliente Email do cliente Telefone do cliente

Entidade: Fornecedor Atributo Id Razo_social CNPJ Telefone Classe Chave Simples Simples Simples Domnio Numrico Texto Texto Texto 50 15 12 Tamanho Descrio Atributo chave Nome do fornecedor CNPJ do fornecedor Telefone do fornecedor

Relacionamento: registro_venda Atributo Id Data_sada Valor _total Cliente_cpf Classe Chave Simples Calculado Estrangeira Domnio Numrico Data Numrico Texto 12 Tamanho Descrio Atributo chave Data da Venda Valor total da venda Chave estrangeira

45

Banco de Dados

Competncia 03
Relacionamento: produtos_venda Atributo Id Qtde Produto_id Sada_produto Classe Chave Simples Estrangeira Estrangeira Domnio Numrico Numrico Numrico Numrico Tamanho Descrio Atributo chave Quantidade do produto vendido. Chave estrangeira da tabela produto Chave estrangeira da tabela registro venda

Relacionamento: registro_entrada Atributo Id Data_entrada Valor _total Fornecedor_id Classe Chave Simples Calculado Estrangeira Domnio Numrico Data Numrico Numrico Tamanho Descrio Atributo chave Data da Venda Valor total da venda Chave estrangeira da tabela fornecedor

Relacionamento: produtos_entrada Atributo Id Qtde Produto_id Registro_venda_id Classe Chave Simples Estrangeira Estrangeira Domnio Numrico Numrico Numrico Numrico Tamanho Descrio Atributo chave Quantidade do produto recebido Chave estrangeira da tabela produto Chave estrangeira da tabela registro_venda

46

Tcnico em Informtica

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.

47

Banco de Dados

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.

48

Tcnico em Informtica

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 90878712354 98767678790 98787965454 Nome Luiz Gonzaga Marina da Silva Marcos Morais Email lula@gmail.com M_silva@uol.com.br mm@hotmail.com Telefone 87-98787676 81-89760989 81-89767654

Tabela produto:
Id 123 134 235 Descrio Sabo em p Leite longa vida Feijo preto Estoque_minimo 12 15 20 Estoque_maximo 100 100 200 Preo 1,29 3,56 4,89

49

Banco de Dados

Competncia 03
Tabela fornecedor:
Id 1 2 3 CNPJ 29182738473625 23438372637489 98768764645346 Razo_social Joao costa AS Trafweu Granada Ltda. Telefone 81-90989876 88-98787657 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.

50

Tcnico em Informtica

Competncia 03
Tabela registro_entrada

Id 1

Valor_total 275,70

Data_entrada 25/03/2013

Fornecedor_id 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 1 2 Produto_id 123 235 Qtde 100 30 Registro_entrada 1 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 1 2 Qtde 100 30 Valor_unitario 1,29 4,89 Produto_id 123 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.

51

Banco de Dados

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', 'lula@gmail.com', '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', 'lula@gmail.com', '8798787676'): 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):

52

Tcnico em Informtica

Competncia 03
CPF 98767678790 98787965454 Nome Marina da Silva Marcos Morais Email M_silva@uol.com.br mm@hotmail.com Telefone 81-89760989 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.

53

Banco de Dados

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 re gistros 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;

54

Tcnico em Informtica

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

55

Banco de Dados

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.

56

Tcnico em Informtica

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 90878712987 98789876577 98078676565 Nome Maria Aparecida Tereza Cristina Jota Ramos Silva Email ma@gmail.com t_silva@uol.com.br jj@hotmail.com Telefone 87-98787676 81-89760989 81-89767654

b) Tabela produtos:
Id 423 129 987 Descrio Sabo barra JT Pasta de Dente KK Arroz tio Braz Estoque_minimo 200 15 50 Estoque_maximo 700 100 200 Preo 1,78 3,56 4,89

57

Banco de Dados

Competncia 03
c) Tabela Fornecedor:
Id 4 5 6 CNPJ 29182738987678 67654545677656 89765546567898 Razo_social Moinho Cristo Brasil comida Limpa Brasil Telefone 81-9098876 88-98787865 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

58

Tcnico em Informtica

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

59

Banco de Dados

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.

60

Tcnico em Informtica

Potrebbero piacerti anche