Escolar Documentos
Profissional Documentos
Cultura Documentos
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
-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