Você está na página 1de 3

-2*361Å8-'% '%4È8903

Os requisitos de dados contidos nesta situação são: funcionário, quantidade de Depois de escolher o SGBD, devemos verificar quais são os tipos de dados que
produto, valor total de produto, nome do produto e do cliente. Já o requisito fun- este aceita, bem como seus tamanhos, pois tais características variam muito. Exis-
cional é: anota, pois o funcionário deverá anotar os itens comprados pelo cliente. tem quatro tipos básicos de dados: texto, número, data e hora. Para a padaria do
senhor João, usaremos o Banco de dados MySQL. Com essa definição, podemos
Requisitos colhidos até agora. passar à etapa seguinte: fazer o projeto lógico das entidades e relacionamentos com
Ao terminar a análise dessa parte do problema, teremos: os campos que usaremos na solução. É preciso definir os atributos de cada enti-
• Requisitos de dados: funcionário, quantidade comprada, valor total do pro- dade, além de tipo, tamanho e obrigatoriedade ou não de cada atributo, e, ainda,
duto e descrição do produto. avaliar se o atributo é chave primária ou estrangeira e se é único. Resta conhecer o
• Requisitos funcionais: funcionário anota itens solicitados pelo cliente, isto significado das classificações dos atributos (Leia o quadro abaixo).
é, o funcionário deverá ter um “lugar” no sistema para anotar as compras
do cliente. 7-+2-*-'%(37)(-'%7
TEPEZVEUYIMRHMUYISEXVMFYXSRSGSRXI\XSHE
4VSNIXSGSRGIMXYEP 2SQI IRXMHEHIHIZIWIIZMXEVSYWSHIEFVIZMEp~IWI
RQIVSW
Depois de analisar e classificar todos os requisitos levantados, devemos nos con-
centrar nos requisitos de dados, agrupando-os em entidades e relacionamentos. MRHMGEEJSVQEGSQSSEXVMFYXSWIVjEVQE^IREHS
8MTS
Ao pensarmos nas entidades, devemos verificar quais são as informações rele- HEXEXI\XSRQIVSIXG 
vantes em vários aspectos, seguindo os sete passos propostos no tópico Modelo I\TVIWWESRQIVSHIGEVEGXIVIWUYISEXVMFYXS
de entidade e relacionamento, estudado no início deste capítulo, para montar o SGYTEVjREIRXMHEHI
diagrama de entidade e relacionamento, que vai retratar nosso modelo conceitu- fTVIGMWSGYMHEHSTEVEHI½RMVSXEQERLSHS
al e classificará as entidades geradas segundo as regras de normalização. Nosso EXVMFYXSTEVEUYIRnSWIGVMITVSFPIQEWHMJuGIMWHI
projeto conceitual ficará como sugere a figura 35. VIWSPZIVRSJYXYVSTSMWEPXIVEVSXEQERLSHIYQ
8EQERLS EXVMFYXSHITSMWUYISWMWXIQEIWXjIQTVSHYpnS
4VSNIXSPzKMGS MQTPMGEEPXIVEVXSHEWEWXIPEWIVIPEXzVMSWRSWUYEMW
XEPEXVMFYXSETEVIGI4SVI\IQTPSWIGVMEVQSWS
*MKYVE Com o projeto conceitual montado, precisamos, agora, definir o Sistema GEQTSGzHMKSHEXEFIPEGPMIRXIGSQTSWMp~IW
%ETPMGEpnS Gerenciador de Banco de Dados (SGBD) que empregaremos para imple- TSHIVnSWIVGEHEWXVEHSWRSQj\MQSGPMIRXIW
HSHMEKVEQE mentar nossa solução de software. Existem inúmeras opções de SGBD no
SUYIVITVIWIRXEVjYQEPMQMXEpnSRSWMWXIQE
HIIRXMHEHII
mercado, em uma gradação de valor que vai dos gratuitos aos bastante
caros. Todos implicam vantagens e desvantagens, que você deverá analisar HI½RIWIIWXIEXVMFYXSXIQHIWIVTVIIRGLMHS
VIPEGMSREQIRXS
juntamente com os demais participantes do projeto. 3FVMKEXzVMS TEVEUYIWITSWWEMRGPYMVYQEMRJSVQEpnSRIWXE
RETVjXMGE
IRXMHEHISYRnS
SEXVMFYXSHIZIWIVHI½RMHSGSQSRMGSUYERHS
'LDJUDPDGHHQWLGDGHHUHODFLRQDPHQWRGDSDGDULDGRVU-RmR ÏRMGS
WIYWZEPSVIWRnSTYHIVIQWIVVITIXMHSW
'LEZI EXVMFYXSSYGSRNYRXSHIEXVMFYXSWUYIHI½RIQYQ
TVMQjVME RMGSVIKMWXVS XYTPE IQYQEIRXMHEHI
EXVMFYXSSYGSRNYRXSHIEXVMFYXSWUYIKEVERXI
SVIPEGMSREQIRXSIRXVIHYEWSYQEMWIRXMHEHIW
'LEZI %WWIKYVESUYIGLEQEQSWHIMRXIKVMHEHI
IWXVERKIMVE VIJIVIRGMEPMWXSqWIEWXEFIPEWHIZIQSYRnS
TSWWYMVYQEMRJSVQEpnSGEHEWXVEHETEVETIVQMXMV
WIYYWSIQSYXVEXEFIPE
MRHMGEWISEXVMFYXSXIQYQZEPSVTEHVnSHI
:EPSVHIJEYPX
TVIIRGLMQIRXS
HIQSRWXVEWISEXVMFYXSTSWWYMSYRnSYQEVIKVE
6IKVEHI HITVIIRGLMQIRXS4SVI\IQTPSSEXVMFYXSWI\S
ZEPMHEpnS WzTSHIVIGIFIVZEPSVIW1SY*

 
-2*361Å8-'% '%4È8903

Tabelas *362)')(36
São inúmeras as formas de apresentar as definições alinhadas, e utilizaremos a  RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI
mais comum, a tabela. Então, por meio de tabelas, vamos criar o modelo lógico   HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES
das entidades da solução imaginada para a padaria do senhor João. As entidades
e relacionamentos com campos passam a ser chamados de tabelas e seus atribu-  GSHMKS -28)+)6  7MQ 7MQ 7MQ 2nS 2nS 2nS
tos de campos. Observe o exemplo, na tabela Cartão.
 RSQI :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS

 VYE :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS


'%68%3
  XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI  GSQTPIQIRXS :%6',%6  2nS 2nS 2nS 2nS 2nS 2nS
RSQI
  HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES
 GSHMKS -28)+)6  7MQ 7MQ 7MQ 2nS 2nS 2nS  FEMVVS :%6',%6  2nS 2nS 2nS 2nS 2nS 2nS
 HXC-RMGMSCYWS (%8)  7MQ 2nS 2nS 2nS 2nS 2nS
 GMHEHI :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS
 HXC½QCYWS (%8)  2nS 2nS 2nS 2nS 2nS 2nS
 IWXEHS :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS
Observação: O campo dt_fim_uso foi definido como não obrigatório, pois nenhum
dos cartões, quando de seu cadastro, tem data indicando fim de prazo de validade.  GIT :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS
Veja as tabelas Produto, Funcionario, Fornecedor, Fornece, ItemFornece e Compra.
 XIPIJSRI :%6',%6  2nS 2nS 2nS 2nS 2nS 2nS
463(983
 RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI  GIPYPEV :%6',%6  2nS 2nS 2nS 2nS 2nS 2nS
  HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES
 GSHMKS -28)+)6  7MQ 7MQ 7MQ 2nS 2nS 2nS Observação: Um campo do tipo varchar permite até 255 caracteres, mas o ta-
 RSQI :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS manho de campos como rua, por exemplo, deve ir no máximo até 50 caracteres.
 TVIGSCZIRHE ()'-1%0  7MQ 2nS 2nS 2nS 2nS :EPSV" Isso porque talvez seja preciso emitir etiquetas de endereçamento e como o fare-
 WEPHS ()'-1%0  7MQ 2nS 2nS 2nS  :EPSV"! mos se o campo rua tiver 255 caracteres? O campo CEP também foi colocado
como obrigatório, para que o usuário se lembre de preenchê-lo.
 IWXSUYICQMRMQS ()'-1%0  7MQ 2nS 2nS 2nS  :EPSV"!
Os campos telefone e celular são do tipo varchar, pois o zero à esquerda é signi-
Observação: O campo saldo foi definido com decimal, porque nem sempre os ficativo, isto é, 01 é diferente de 1.
produtos são vendidos em unidades.
*362)')
*92'-32%6-3  RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI
 RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI   HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES
  HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES
 RYQIVSCRSXE -28)+)6  7MQ 7MQ 7MQ 2nS 2nS 2nS
 GSHMKS -28)+)6  7MQ 7MQ 7MQ 2nS 2nS 2nS
 GSHCJSVRIGIHSV -28)+)6  7MQ 2nS 7MQ 7MQ 2nS *SVRIGIHSV
 RSQI :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS
 JYRpnS :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS          NjHIZIWIV
         GEHEWXVEHS
 HEXE (%8)  7MQ*362)')
2nS 2nS 2nS 2nS 2nS
2PHOKRU6*%'  ZEPSVCXSXEP ()'-1%0  7MQ 2nS 2nS 2nS 2nS 7SQEHSW
‡Ƥ‹”“—ƒŽ‹•–‡ƒ ‡”‡ ‹ƒ†‘”†‡ƒ ‘†‡ƒ†‘•†‡˜‡‘•ƒ†‘–ƒ”‡—ƒ•‘Ž—­ ‘‹ˆ‘”ƒ–‹œƒ†ƒ
‡•‡’”‡±ˆž ‹ŽǤ”‡ ‹•ƒ‘•Ž‡˜ƒ”‡ ‘–ƒ•‡—’”‡­‘ǡ•—ƒˆ‘”ƒ†‡ ‘‡” ‹ƒŽ‹œƒ­ ‘ǡ•‡—• —•–‘•          MXIRWHI
ƒ†‹ ‹‘ƒ‹•ȋ˜ƒŽ‘”†ƒƒ—–‡­ ‘ƒ—ƒŽǡ’”‡­‘’‘”—•—ž”‹‘‡– ǤȌǡ‡•–”—–—”ƒ†‡Šƒ”†™ƒ”‡“—‡ƒ•‘Ž—­ ‘          MXIQJSVRIGI
†‡ƒ†ƒ”žȋ”‡†‡ǡ•–ƒ†ǦƒŽ‘‡ǡ‹–‡”‡–Ȍǡ‰”ƒ—†‡•‡‰—”ƒ­ƒǡ–‹’‘•†‡ƒ ‡••‘ǡˆ‘”ƒ•†‡‰‡”‡ ‹ƒ‡–‘          TEVEIWXE
†‡‹ˆ‘”ƒ­Ù‡•Ǥ‘†‘•‡••‡•ˆƒ–‘”‡•–²†‡•‡” ‘•‹†‡”ƒ†‘•ǡ’ƒ”ƒ Š‡‰ƒ”‡ŽŠ‘”•‘Ž—­ ‘Ǥ
         RSXE

 
-2*361Å8-'% '%4È8903

-8)1*362)') Observação: Um campo autonumeração é um campo numérico, que terá seu va-
 RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI lor sequencial preenchido pelo próprio SGBD. Mas é importante frisar que nem
  HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES todo Sistema Gerenciador de Banco de Dados (SGBD) possui esse campo. Por
isso, é preciso verificar essa disponibilidade conforme o sistema adotado. Veja que
 RYQIVSCRSXE -28)+)6  7MQ 7MQ 7MQ 7MQ 2nS 2nS o campo cod_func_caixa não estava definido no projeto lógico, mas, ao analisar  
 GSHCTVSHYXS -28)+)6  7MQ 2nS 7MQ 7MQ 2nS 4VSHYXSNj as funcionalidades, verificou-se que o senhor João quer saber quem recebeu pela †‡Ƥ‹­ ‘†ƒ•–ƒ„‡Žƒ•
compra e, assim, foi necessário possibilitar o registro desta informação, a qual †‘‘†‡Ž‘Ž×‰‹ ‘†‡˜‡
         HIZIWIV •‡”ˆ‡‹–ƒ ‘—‹–ƒ
servirá também para indicar se determinada compra já foi paga ou não.
         GEHEWXVEHS ƒ–‡­ ‘‡ —‹†ƒ†‘ǡ’‘‹•
’‘†‡‘•ˆƒ ‹Ž‹–ƒ”ǡ‡
 UYERXMHEHI ()'-1%0  7MQ 2nS 2nS 2nS 2nS 2nS 4VSNIXSJuWMGS —‹–‘ǡƒ‹’Ž‡‡–ƒ­ ‘
 ZEPSVCYRMXEVMS ()'-1%0  7MQ 2nS 2nS 2nS 2nS " †ƒ•‘Ž—­ ‘ǡ’‘”‡š‡’Ž‘ǡ
O projeto físico consiste na tradução do modelo lógico para a linguagem SQL.
‹ Ž—‹†‘ ƒ’‘•
Normalmente, é feito um script (lista dos comandos de criação do banco de da-
‘‘‘„”‹‰ƒ–×”‹‘•‡
'3146% dos e de suas tabelas dentro do SGBD). Os comandos para gerar as tabelas em
†‡Ƥ‹†‘”‡‰”ƒ•†‡
 RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI SQL serão estudados no próximo capítulo, mas como exemplo, vem a seguir o
‹ Ž—• ‘‡ƒŽ–‡”ƒ­ ‘Ǥ
  HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES projeto físico de nosso estudo de caso para o SGBD MySQL. ‡••ƒˆ‘”ƒǡ ‘Ž‘ ƒ‘•
‘ ’ƒ”–‡†ƒ
 RYQIVS -28)+)6  7MQ 7MQ 7MQ 2nS 2nS %YXS ”‡•’‘•ƒ„‹Ž‹†ƒ†‡’‡Žƒ
         2YQIVEpnS CREATE DATABASE Padaria; ‘•‹•–² ‹ƒ†‘•†ƒ†‘•
 GSHCGEVXES -28)+)6  7MQ 2nS 2nS 7MQ 2nS 'EVXnSNj USE Padaria; ‡ƒŽ‹˜‹ƒ‘•‘•’”‘‰”ƒƒ•
         HIZIWIV “—‡ˆƒ” ‘ƒ‡–”ƒ†ƒ‡ƒ
         GEHEWXVEHS ƒ‹’—Žƒ­ ‘†‡†ƒ†‘•Ǥ
 HEXE (%8)  7MQ 2nS 2nS 2nS 2nS 2nS
CREATE TABLE Cartao (
 JSVQECTEKXS :%6',%6  7MQ 2nS 2nS 2nS 2nS 2nS
codigo INTEGER NOT NULL PRIMARY KEY,
 ZEPSVCXSXEPC ()'-1%0  7MQ 2nS 2nS 2nS 2nS 7SQE dt_inicio_uso DATE NOT NULL,
 GSQTVE        HSWZEPSVIW
         HSWMXIRWHI dt_fim_uso DATE);
         MXIQGSQTVE
         TEVEIWXE
         GSQTVE
 GSHCJYRGC -28)+)6  7MQ 2nS 2nS 7MQ 2nS *YRGMSRjVMS CREATE TABLE Produto (
 GEM\E        HIZIWIV codigo INTEGER NOT NULL PRIMARY KEY,
         GEHEWXVEHS
nome VARCHAR(40) NOT NULL,
preco_venda DECIMAL(10,2) NOT NULL,
-8)1'3146% saldo DECIMAL(10,2) NOT NULL,
 RSQI XMTSHI XEQERLS SFVMKEXSVMS YRMGS GLEZI GLEZI ZEPSV VIKVEHI estoque_minimo DECIMAL(10,2) NOT NULL);
  HEHSW    TVMQEVME IWXVERKIMVE HIJEYPX ZEPMHEGES
 RYQIVSCRSXE -28)+)6  7MQ 7MQ 7MQ 2nS 2nS 2nS
 GSHCTVSHYXS -28)+)6  7MQ 2nS 7MQ 7MQ 2nS 4VSHYXSNj CREATE TABLE Funcionario (
         HIZIWIV codigo INTEGER NOT NULL PRIMARY KEY,
         GEHEWXVEHS nome VARCHAR(50) NOT NULL,
funcao VARCHAR(30) NOT NULL);
 UYERXMHEHI ()'-1%0  7MQ 2nS 2nS 2nS 2nS 2nS
 ZEPSVCYRMXEVMS ()'-1%0  7MQ 2nS 2nS 2nS 2nS :EPSVHS
         GEQTSTVIGSC CREATE TABLE Fornecedor (
         ZIRHEHE
         XEFIPETVSHYXS codigo INTEGER NOT NULL PRIMARY KEY,
         UYERHSHE nome VARCHAR(50) NOT NULL,
         MRGPYWnSHE rua VARCHAR(50) NOT NULL,
         RSXE

 

Você também pode gostar