Escolar Documentos
Profissional Documentos
Cultura Documentos
Modelagem - Access
Modelagem - Access
Ideolgica Produtividade Empresarial Informtica R. Iguatemi, 5 , 9! Andar "elefone #$%%& ''()(%$( * +a, #$%%& '5()( 59
&'dice A'al(tico
I'trod)*+o , modelagem de dados Por que Projetar?....................................................................................................................................................... 2 Problemas Resultantes de um Projeto Pobre............................................................................................................. 2 Introduo ao Projeto de Banco de Dados................................................................................................................. 3 Modelo Domnio/ !a"e.............................................................................................................................................. # $ Processo de %ormali&ao..................................................................................................................................... ' .m M/todo de 0ro1eto de Ba'co de Dados 9 0ro1eto do Modelo do Ba'co de Dados -2
ii
3ap(t)lo
-m pro.eto de /anco de dados 0 uma mat0ria comple,a, n1o importando como algumas pessoas ac2em 3ue se.a fcil. Esta sess1o apenas arran2a a superf4cie, mas com um /elo arran21o.
-m /anco de dados pro.etado de forma conveniente 0 um modelo de uma empresa, ou de alguma outra 5coisa6 no mundo real. 7omo seu modelo f4sico, em contrapartida, um modelo de dados permite a voc8 fa9er perguntas so/re os fatos 3ue comp:em os o/.etivos a serem alcan;ados. Estas s1o as perguntas 3ue precisam de respostas e 3ue determinar1o 3uais fatores precisar1o serem arma9enados no modelo de dados. <o modelo relacional, os dados s1o organi9ados em ta/elas 3ue possuem as seguintes caracter4sticas= "odo registro tem o mesmo n>mero de fatos? "odo campo cont0m o mesmo tipo de fato em cada um dos registros? @ apenas um ingresso para cada fato? Dois registros nunca s1o e,atamente os mesmos? A ordem dos registros e campos n1o 0 importante. Ao final desta leitura, voc8 ter a compreens1o /sica dos pro/lemas resultantes de um pro.eto po/re de /anco de dados, estar familiari9ado com o Modelo Dom4nioA72ave, compreender o processo para se pro.etar um /anco de dados relacional, e sa/er so/re as ferramentas usadas no Microsoft Access para suportar integridade coagindo num /anco de dados.
B espa;o em disco 0 perdido por duplica;1o dos dados so/re o fornecedor. "oda ve9 3ue um novo produto 0 registrado para um fornecedor em particular, todos os dados so/re este fornecedor tem de ser repetidos. Imagine o pro/lema se diversos fornecedores fornecem centenas de produtos cada um.
Modifica*4es A'5malas
B 3ue acontece se o fornecedor Figfoot FreGeries se muda para PortlandH Cuantos campos ter1o de ser modificados para se assegurar 3ue o novo endere;o foi registradoH
IDProduto Descrio 34 23 ;' (2 3! 2. 21 ;1 (; 3& Sasquatch Ale )c!o++i )c!o4olade )cottis! <on+breads "u#$er#an%s "ager )ir Rodne:@s Marmalade )ir Rodne:@s )cones )iro= d@Crable )=e+esild Steele'e Stout Fornecedor Bigfoot Breweries 5eli )67-aren 8mb5 )=ecialt: Biscuits0 <td. Bigfoot Breweries )=ecialt: Biscuits0 <td. )=ecialt: Biscuits0 <td. BorDts d@Crables <:n+b:sild Bigfoot Breweries Endereo 3400 - 8th Avenue Suite 210 9ier+artenstra7e # 2> ?in+@s Aa: (31 )eran+oon <oo=0 3400 - 8th Avenue Suite 210 2> ?in+@s Aa: 2> ?in+@s Aa: 1(' rue !asseur <:n+b:sild Bis4eba44en 1. 3400 - 8th Avenue Suite 210 Cidade Bend Berlin Manc!ester )in+a=ore Bend Manc!ester Manc!ester )te/5:acint!e EuCbec <:n+b: Bend OR OR Regio OR Pas SA 8erman: 2? )in+a=ore SA 2? 2? anada Denmar4 SA
<ovamente, imagine o 3ue pode resultar da modifica;1o de centenas de campos de dados para apenas um fornecedor. Cuando modifica;:es s1o feitas, elas dever1o a/ranger todas as
cpias dos dados. Pense a respeito da confus1o 3ue resulta de modificar apenas um su/grupo de um dado duplicado.
E6cl)s4es A'5malas
Eupon2amos 3ue voc8 n1o tra/al2ou por muito tempo com o produto I e decidiu eliminar esta lin2a de dados de sua ta/elaH
IDProduto 3( 23 ;' 42 2. 21 ;1 (; 3# Descrio )asquatc! *le )c!o++i )c!o4olade )cottis! <on+breads Singa(orean )ried *ee )ir Rodne:@s Marmalade )ir Rodne:@s )cones )iro= d@Crable )=e+esild )teele:e )tout Fornecedor Bi+,oot Bre-eries 5eli )67-aren 8mb5 )=ecialt: Biscuits0 <td. "e+a ,rading )=ecialt: Biscuits0 <td. )=ecialt: Biscuits0 <td. BorDts d@Crables <:n+b:sild Bi+,oot Bre-eries Endereo 3(.. / 't! *"enue )uite 21. 9ier+artenstra7e # 2> ?in+@s Aa: 4!1 Serangoon "oo(2> ?in+@s Aa: 2> ?in+@s Aa: 1(' rue !asseur <:n+b:sild Bis4eba44en 1. 3(.. / 't! *"enue )uite 21. Cidade Bend Berlin Manc!ester Singa(ore Manc!ester Manc!ester )te/5:acint!e EuCbec <:n+b: Bend $R Regio $R Pas 2)* 8erman: 2? Singa(ore 2? 2? anada Denmar4 2)*
Agora, o/servando os dados restantes, onde est o endere;o do fornecedor JeKa "radingH
IDProduto 3( 23 ;' 2. 21 ;1 (; 3# Descrio )asquatc! *le )c!o++i )c!o4olade )cottis! <on+breads )ir Rodne:@s Marmalade )ir Rodne:@s )cones )iro= d@Crable )=e+esild )teele:e )tout Fornecedor Bi+,oot Bre-eries 5eli )67-aren 8mb5 )=ecialt: Biscuits0 <td. )=ecialt: Biscuits0 <td. )=ecialt: Biscuits0 <td. BorDts d@Crables <:n+b:sild Bi+,oot Bre-eries Endereo 3(.. / 't! *"enue )uite 21. 9ier+artenstra7e # 2> ?in+@s Aa: 2> ?in+@s Aa: 2> ?in+@s Aa: 1(' rue !asseur <:n+b:sild Bis4eba44en 1. 3(.. / 't! *"enue )uite 21. Cidade Bend Berlin Manc!ester Manc!ester Manc!ester )te/5:acint!e EuCbec <:n+b: Bend $R Regio $R Pas 2)* 8erman: 2? 2? 2? anada Denmar4 2)*
-ma e,clus1o anDmala fa9 com 3ue percamos mais informa;:es do 3ue o necessrio. <s perdemos dados so/re mais de um assunto a cada e,clus1o.
I'ser*+o A'5mala
Agora voc8 precisa adicionar um novo fornecedor, EtarEtrucK, mas voc8 ainda n1o tem encomendado nen2um produto deste fornecedor. B 3ue voc8 adicionarH
IDProduto 3( 23 ;' (2 2. 21 Descrio )asquatc! *le )c!o++i )c!o4olade )cottis! <on+breads )in+a=orean Bried Mee )ir Rodne:@s Marmalade )ir Rodne:@s )cones Fornecedor Bi+,oot Bre-eries 5eli )67-aren 8mb5 )=ecialt: Biscuits0 <td. <e4a 9radin+ )=ecialt: Biscuits0 <td. )=ecialt: Biscuits0 <td. Endereo 3(.. / 't! *"enue )uite 21. 9ier+artenstra7e # 2> ?in+@s Aa: (31 )eran+oon <oo=0 2> ?in+@s Aa: 2> ?in+@s Aa: Cidade Bend Berlin Manc!ester )in+a=ore Manc!ester Manc!ester Regio $R Pas 2)* 8erman: 2? )in+a=ore 2? 2?
;1 (; 3# ???
1(' rue
!asseur
Esta situa;1o 0 c2amada de inser;1o anDmala. <1o podemos adicionar um dado so/re um assunto at0 3ue ns ten2amos dados adicionais so/re outro assunto.
Depe'd7'cia
-ma depend8ncia 0 uma rela;1o 3ue pode e,istir entre duas colunas . Dados os valores da primeira coluna , voc8 estar apto para determinar o valor de uma outra. Lamos usar a ta/ela dos e,emplos anteriores. Dados o n>mero do produto, ns estaremos capa9es de determinar as descri;:es dos produtos. Esta 0 uma depend8ncia= descri;:es s1o depend8ncias nos n>meros dos produtos. Dados um nome de fornecedor, seremos ns capa9es de determinar a descri;1o do produtoH <1o necessariamente . <o caso do Fig+oot FreGeries, este fornecedor tem um n>mero de produtos associados a ele. Portanto , nas ta/elas acima, descri;1o n1o 0 uma depend8ncia de fornecedores. Para detectar uma depend8ncia, pergunte a si mesmo o seguinte= <esta ta/ela, pode o valor de uma coluna determinar "BDBE BE LAJBREE PBEEMLEIE de outra colunaH
3ha8e
A maior parte das ta/elas deve ter uma coluna ou uma com/ina;1o de colunas 3ue unicamente identifi3ue uma lin2a de dados. -ma coluna 0 c2ave se todas as outras colunas numa lin2a de dados s1o dependentes dela.
A primeira ol2ada, pode parecer 3ue a coluna IDProduto em nosso e,emplo unicamente identifica uma lin2a de dados. Mas IDProduto (I identifica o fornecedor como Fig+oot FreGeries, 3ue tam/0m fa9 parte dos n>meros (5 e (N. Portanto, a coluna IDProduto n1o 0 uma c2ave. <esta ta/ela, ns temos uma c2ave comple,a, derivada de IDProduto, Descri;1o, e +ornecedor.
Dom('io
-m dom4nio 0 o con.unto de valores 3ue uma coluna pode ter. "oda coluna tem um dom4nio 3ue tem, por sua ve9, as propriedades lgicas e f4sicas. Descrio Fsica. A parte f4sica do dom4nio 0 o tipo de informa;1o so/re cada coluna. Em nosso e,emplo, +ornecedor 0 definido como "EO"B I$. A partir desta defini;1o, a descri;1o f4sica do dom4nio 0 o con.unto de valores de dados de "EO"B com I$ caracteres ou menos. Eimilarmente, a descri;1o f4sica para o dom4nio de IDProduto 0 e,pressa como I<"EIRB. Isto resulta em dados com nove n>meros ou menos. Descrio L !ica. A parte lgica do dom4nio 0 o con.unto de informa;:es associadas com os fatos. Bs endere;os dos fornecedores n1o est1o no mesmo dom4nio dos endere;os dos clientes, apesar deles terem a mesma propriedade f4sica de "EO"B P$. 7onsidere o valor N% I E. I%st Place. Este 0 um valor no dom4nio de endere;os de fornecedoresH Para estar neste dom4nio ele precisa ter menos de P$ caracteres e ser um endere;o de fornecedor.
Restri*+o
-ma restri;1o 0 uma limita;1o de algum tipo nos valores da ta/ela. -ma depend8ncia 0 um tipo de restri;1o. Especificar 3ue a Descri;1o 0 dependente de IDProduto 0 uma restri;1o. 72aves s1o um tipo de restri;1o. Cuando uma coluna 0 uma c2ave, significa 3ue todas as outras colunas na ta/ela s1o dependentes dela. Jem/re)se 3ue uma c2ave pode ser uma com/ina;1o de colunas. -m dom4nio 0 outro tipo de restri;1o. Cuando definimos as propriedades lgica e f4sica de uma coluna, ns restringimos os dados 3ue ela poder arma9enar. Restri;1o 0 um termo geral. E,istem muitas maneiras de restringir os dados numa ta/ela. A/ai,o est1o alguns e,emplos= Especificar 3ue as datas dever1o ser formatadas como DDAMMAAA. IDProduto precisa iniciar a partir do n>mero %$$. +ornecedores precisam ser "EO"B com I$ caracteres ou menos. "a,a "otal precisa ser MBEDA com valores entre Q%,$$ e Q9.999.999,99.
)ornecedores
Fornecedor
Bi+,oot Bre-eries 5eli )67-aren 8mb5 H o. ?8 )=ecialt: Biscuits0 <td. <e4a 9radin+ BorDts d@Crables <:n+b:sild
Endereo
3(.. / 't! *"enue )uite 21. 9ier+artenstra7e # 2> ?in+@s Aa: (31 )eran+oon <oo=0 )uite I(.2 1(' rue !asseur <:n+b:sild Bis4eba44en 1.
Cidade
Bend Berlin Manc!ester )in+a=ore )te/5:acint!e <:n+b:
Regio Pas
$R 2)* 8erman: 2? )in+a=or e EuCbec anada Denmar4
Agora voc8 pode adicionar produtos sem duplica;:es, modificar a locali9a;1o de fornecedores sem alterar vrias lin2as de dados, e n1o perder informa;:es se voc8 e,cluir uma parte realmente n1o necessria.
Ee voc8 dese.ar, poder sempre tra9er de volta a ta/ela original usando uma pergunta em associa;1o a +ornecedor.
liente
Produto BuncionKrio
devem partil2ar o mesmo nome. A seguir se encontra uma lista das ta/elas preliminares, colunas e dom4nios para a Sipper=
9abelaL <IF%9F Nome $MP*%M *DD1 *DD2 I9M )9*9F PIP * 9F<P5 $%9* 9 9I9<F
9abelaL PR$D29$ Tipo 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ Compr (# 3. 3. 2# 2 1. 3 3 3. 3. ,a$ela/ 01.12012,1 Nome Tipo D<*)9 DBIR)9 DD$B 9FN9$ 9FN9$ D/5 Compr 1# 1. Nome PR$D%*MF PR$DDF) PR$D $)9 PM*R?2P Tipo 9FN9$ 9FN9$ M$FD* %OM Compr 3. #.
9abelaL B*92R* Nome I%RD*9F RFED*9F )5IP%*MF )5IP*DDR )5IP I9M )5IPPIP I%R9$9*< Tipo D/5 D/5 9FN9$ 9FN9$ 9FN9$ 9FN9$ M$FD* (# 3. 2# 1. Compr
9abelaL B2% I$%QRI$ Nome F))% F<*)9% FBIR)9% FD$B F8F%DFR FM*RI9*< F*DDR1 F*DDR2 F I9M F)9*9F FPIP F* F5$MFP5 Tipo 9FN9$ 9FN9$ 9FN9$ D/5 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 1 1 3. 2. 2# 2 1. 3 3 Compr 11 1# 1.
9abelaL 9*N* DF FMB*RE2F Nome Tipo Compr )5IP)9 )5IPR*9F 9FN9$ %OM 2
+re3Rentemente uma a.uda no estgio de pro.eto 0 desen2ar cai,as representando as ta/elas. Em passos posteriores voc8 poder ent1o preenc2er as colunas c2ave e desen2ar as rela;:es entre as ta/elas.
CLIENTE
PRODUTO
FUNCIONRIO
FATURA
DEPENDENTE
TA"A DE EM#AR$UE
Re%a&es +,rios)*ara)+,rios. Para 3ual3uer lin2a de dados na ta/ela A, e,istem vrias lin2as na ta/ela F. Para 3ual3uer lin2a de dados na ta/ela F, e,istem vrias lin2as na ta/ela A. E,iste uma rela;1o vrios)para)vrios entre a ta/ela de produtos e a ta/ela de faturas. -m produto pode ser associado a diferentes faturas e uma fatura pode conter vrios produtos diferentes. <o caso do /anco de dados Sipper, ns estamos tentando modelar um am/iente 3ue 0 /aseado em transa;:es de vendas. Pegue o e,emplo de produtos e clientes= Apesar de em algumas circunstUncias ns podermos nos interessar nas rela;:es entre clientes e produtos, nas transa;:es de vendas, o cliente 0 relacionado a um produto somente 3uando uma venda ocorre. Portanto, um cliente 0 relacionado a uma fatura, e uma fatura carrega a rela;1o a um produto. B primeiro passo na determina;1o do tipo de relacionamento entre ta/elas 0 listar todas as ta/elas e verificar como cada uma se relaciona com todas as outras= Cliente 0 relacionado T fatura. Cliente n1o 0 relacionado a nen2uma outra ta/ela na lista. Funcionrio 0 relacionado a dependente. Funcionrio #vendas& 0 relacionado a fatura. Produto 0 relacionado a fatura. -m m0todo efica9 de encontrar o tipo de relacionamento 0 perguntar se um determinado registro na ta/ela A pode apontar para #0 relacionado a& uma ou mais lin2as de dados na ta/ela F, e em seguida inverter as ta/elas e fa9er a pergunta novamente.
-m registro de cliente aponta para uma ou vrias faturasH -ma lin2a de dados de fatura se liga a um ou vrios clientesH A rela;1o entre as ta/elas 0 um)para)vrios.
Lrias -m
-m funcionrio de vendas registra uma ou vrias faturasH -ma fatura 0 registrada por um ou vrios funcionriosH A rela;1o entre funcionrio e fatura tam/0m 0 um)para)vrios.
Lrias -m
-m produto pode ser um item listado em uma ou vrias faturasH -ma fatura pode se relacionar a um ou vrios produtosH A rela;1o entre produto e fatura 0 vrios)para)vrios.
Lrias Lrios
A ta/ela "a,a de Em/ar3ue ilustra a id0ia de 3ue uma ta/ela pode ser inclu4da num /anco de dados n1o precisando de relacionamentos com 3ual3uer outra ta/ela.
CLIENTE * c!a"e C 2)9ID S $%9*D$RT. $MP*%M =ode no ser Unica. FUNCIONRIO * c!a"e C FMPID S $%9*D$RT. Poderia ser usada F))% mas C 9FN9$. DEPENDENTE !a"e com=leJa. 9odas as colunas.
PRODUTO * c!a"e C PR$DID S $%9*D$RT. PDF) RIP =ode no ser Unica. FATURA * c!a"e C I%RID S $%9*D$RT
valor correspondente em outra. W importante compreender esta rela;1o para ser capa9 de recon2ecer e controlar esta situa;1o 3uando ela surgir. -ma clssica rela;1o vrios)para)vrios 0 a 3ue e,iste entre produto e fatura. -m determinado produto pode ter um item citado em vrias faturas diferentes e uma fatura pode ter muitos produtos associados a ela. Mas 3ual c2ave iremos usar como eloH Ee invid for colocado na ta/ela produto, ent1o todos os dados so/re os produtos ter1o de ser repetidos para cada fatura 3ue cont0m a3uele produto. Ee prodid for colocado na ta/ela fatura, as informa;:es so/re a fatura dever1o ser repetidas para cada produto contido na fatura. Isto leva a dados redundantes, e o potencial para dados invlidos aumenta. A performance pode ser avariada. A solu;1o para rela;:es vrios)para)vrios 0 criar ta/elas intermedirias. Esta ta/ela deve conter as colunas c2ave de am/as as ta/elas principais. Isto 0 ilustrado pelo diagrama seguinte.
CLIENTE * c!a"e C 2)9ID S $%9*D$RT. $MP*%M =ode no ser Unica. INVOICE * c!a"e C I%RID S $%9*D$RT FUNCIONRIO * c!a"e C FMPID S $%9*D$RT. Poderia ser usada F))% mas C 9FN9$. DEPENDENTE !a"e com=leJa. 9odas as colunas. TRANSA/0O om=leJ 4e:. PR$DID and I%RID. PRODUTO * c!a"e C PR$DID S $%9*D$RT. PDF) RIP =ode no ser Unica.
Ee voc8 est criando uma fatura, voc8 deve ter um cliente para mandar a conta. -m registro na ta/ela cliente deve e,istir antes 3ue a fatura possa ser redigida. <este caso, uma reserva deve e,istir na ta/ela fatura para assegurar 3ue o cliente e,iste. A4 est1o, por menores 3ue se.am, 3uatro m0todos para implementar rela;:es de reserva= 7onstru;1o de controles em DFME Entrada de dados e procedimentos de acesso Programa;1o Implementa;1o de regras B Microsoft Access tem certos mecanismos de integridade referencial constru4dos em seus motores. 7om o Microsoft +o,Pro, a rela;1o de reserva dever ser criada a partir de programa;1o. <o Microsoft Access, regras podem ser empregadas para impor o dom4nio de colunas #por e,emplo, aceitar valores menores 3ue $$, ou valores de te,to dever1o ser + ou M& ou em 3ual3uer outra opera;1o onde voc8 necessite de um teste nos dados a serem registrados.
Avalia34o da ,a$ela 5liente 2)9ID $MP*%M *DD1 *DD2 I9M )9*9F PIP * 9F<P5 $%9* 9 9I9<F
A ta/ela tem um >nico tema= clientes. A ta/ela tem uma c2ave= custid. A ta/ela n1o tem nen2uma depend8ncia 3ue n1o se.a conse3R8ncia lgica da c2ave. Dado custid, uma compan2ia e endere;o da compan2ia podem ser determinados unicamente. Dada uma compan2ia, ns n1o podemos determinar nen2um custid em particular. Dada um estado, ns n1o podemos determinar nen2um custid em particular. Portanto, a ta/ela cliente n1o tem nen2uma depend8ncia. B nome das colunas n1o 0 usado em nen2uma outra ta/ela, e,ceto custid 3ue 0 uma c2ave estrangeira na ta/ela fatura. As restri;:es s1o dom4nio ou c2ave.
A seguir est uma lista das ta/elas finais, colunas e dom4nios para a Sipper, incluindo colunas elo=
9abelaL <IF%9F Nome 2)9ID $MP*%M *DD1 *DD2 I9M )9*9F PIP * 9F<P5 $%9* 9 9I9<F Tipo $%9*D$R 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ (# 3. 3. 2# 2 1. 3 3 3. 3. ,a$ela/ ,A6A 01 1*BAR7 1 Nome )5IP)9 )5IPR*9F Tipo 9FN9$ %OM Compr 2 Compr 9abelaL PR$D29$ Nome PR$DID P%$MF PDF) RIP P $)9 PM*R?2P Tipo $%9*D$R 9FN9$ 9FN9$ M$FD* %OM 3. #. Compr
9abelaL B*92R* Nome I%RID 2)9ID I%RD*9F RFED*9F )5IP%$MF )5IP*DDR )5IP I9M )5IP)9 )5IPPIP I%R9$9*< Tipo $%9*D$R %OM D/5 D/5 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ M$FD* (# 3. 2# 2 1. Compr Nome I%RID
9abelaL B2% I$%QRI$ Nome FMPID F))% F<*)9% FBIR)9% FD$B F8F%DFR 1FM*RI9*< F*DDR1 F*DDR2 F I9M F)9*9F FPIP F* F5$MFP5 Tipo $%9*D$R 9FN9$ 9FN9$ 9FN9$ D/5 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 9FN9$ 1 1 3. 2. 2# 2 1. 3 3 11 1# 1. Compr
9abelaL DFPF%DF%9F Nome FMPID D<*)9 DBIR)9 DD$B Tipo %OM 9FN9$ 9FN9$ D/5 1# 1. Compr