Caderno de Banco de Dados DIAGRAMADO
-
Upload
sgs-fotolitos-fotolitos -
Category
Documents
-
view
70 -
download
0
Transcript of Caderno de Banco de Dados DIAGRAMADO
-
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.