seb_cap5_2.pdf

40
Pág. 1 Introdução aos Sistemas de Gestão de Bases de Dados Microsoft ACCESS (TÓPICOS ABORDADOS NAS AULAS DE INFORMÁTICA II) Por: Filipe Caldeira Informática II

Upload: sandro-branquinho-matos

Post on 01-Oct-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

  • Pg. 1

    Introduo aos Sistemas de Gesto de Bases de Dados Microsoft ACCESS

    (TPICOS ABORDADOS NAS AULAS DE INFORMTICA II)

    Por: Filipe Caldeira

    Informtica II

  • Pg. 2

    NDICE

    1 O QUE UMA BASE DE DADOS? ........................................................................................ 4 1.1 PORQU APRENDER BASES DE DADOS?.................................................................................. 5

    2 O SISTEMA DE GESTO DE BASES DE DADOS ACCESS ............................................... 6 2.1 A AJUDA .............................................................................................................................. 7

    3 DISTRIBUINDO A INFORMAO POR VRIAS TABELAS............................................ 8 3.1 RELACIONAMENTOS.............................................................................................................. 8 3.2 INTEGRIDADE REFERENCIAL ............................................................................................... 10

    4 ELABORAO DE MODELO DE DADOS......................................................................... 12 4.1 MODELOS DE DADOS .......................................................................................................... 12 4.2 UMA APLICAO - REQUISIO DE LIVROS NUMA BIBLIOTECA ............................................ 12 4.3 NORMALIZAO ................................................................................................................. 14

    4.3.1 Formas Normais ........................................................................................................ 14 4.3.2 Uma Soluo para o Caso da Biblioteca .................................................................... 15 4.3.3 Esquema Geral da Normalizao............................................................................... 15 4.3.4 Anexo A................................................................................................................. 16 4.3.5 Entidades.......................................................................................................................... 16 4.3.6 Anexo B................................................................................................................. 16

    5 FORMULRIOS..................................................................................................................... 18 5.1 O ASSISTENTE .................................................................................................................... 19 5.2 A VISTA DE ESTRUTURA ..................................................................................................... 19 5.3 CONTROLOS ....................................................................................................................... 20 5.4 CAIXA DE TEXTO PARA NOME............................................................................................. 23 5.5 COMBO BOX PARA ENTRADA DA TURMA ............................................................................. 23 5.6 INTRODUO DE UM GRUPO DE OPES ("OPTION GROUP") ................................................ 24 5.7 CLCULO DE TOTAIS .......................................................................................................... 25 5.8 CRIAO DE MAIN/SUBFORM.............................................................................................. 25 5.9 CONTROLO SUBFORM.......................................................................................................... 28

    6 ANEXO A ................................................................................................................................ 30 6.1 ENTIDADES E RELACIONAMENTOS....................................................................................... 30

    6.1.1 Entidades ................................................................................................................... 30 6.1.2 Relacionamentos entre Entidades............................................................................... 30

    Informtica II Gesto Comercial e da Produo

  • Pg. 3

    7 ANEXO B................................................................................................................................. 34 7.1.1 Definio de Campos ................................................................................................. 35 7.1.2 Definio das Propriedades dos Campos ................................................................... 36 7.1.3 Definio da Chave.................................................................................................... 39 7.1.4 Edio de Dados ........................................................................................................ 39 7.1.5 Alterao da Estrutura das Tabelas ........................................................................... 40

  • Pg. 4

    1 O que uma Base de Dados? possvel dizer de uma forma genrica que qualquer conjunto de dados uma Base de Dados (BD): uma agenda com as moradas de pessoas conhecidas, uma lista de CDs, um livro, apontamentos tirados nas aulas, os dados guardados nos computadores das Finanas sobre os contribuintes e a World Wide Web. O objectivo de criarmos e mantermos uma BD a de poder obter e utilizar os dados l guardados: procurar a morada de uma determinada pessoa, saber o que foi dito nas aulas sobre um tema ou procurar a pgina WWW do Prmio Nobel da Economia deste ano. Embora sendo possvel usar a definio genrica dada acima, o termo base de dados aplicado hoje em dia principalmente para fazer referncia a bases de dados informticas, isto , conjuntos de dados estruturados, manipulados usando um Sistema de Gesto de Bases de Dados (SGBD) ou Database Management System (DBMS). Para permitir ao utilizador atingir os objectivos referidos acima, um SGBD disponibiliza linguagens de:

    definio de dados: para criao e alterao da estrutura da BD (DDL - Data Definition Language)

    consulta de dados: obter e processar os dados armazenados (DQL - Data Query Language) manipulao de dados: para acrescentar dados novos e modificar dados existentes (DML -

    Data Manipulation Language). Hoje em dia, cada vez mais SGBD, como o Access, "escondem" essas linguagens por trs de interfaces do utilizador grfica. Outras caractersticas dos SGBDs so:

    acesso simultneo: vrios utilizadores podem aceder e alterar a mesma BD ao mesmo tempo sem criar inconsistncias. Por exemplo, 2 utilizadores diferentes podem consultar simultaneamente os dados do mesmo cliente. No entanto o SGBD no permite que ambos os utilizadores alterem esses dados ao mesmo tempo.

    vistas: diferentes utilizadores podero ter o seu acesso limitado a partes da BD. Por exemplo, embora todos os dados de uma organizao estejam na mesma BD, aqueles que so importantes para a definio da estratgia s podem ser consultados pela administrao.

    construo de aplicaes: a tendncia actual dos SGBDs para combinarem a gesto do armazenamento/manipulao dos dados com a construo das aplicaes que implementam os processos da organizao. Tradicionalmente, os processos eram implementados independentemente, com recurso a linguagens de programao mais ou menos integradas com o SGBD.

    Alguns exemplos de SGBD de grande porte so ORACLE, Informix, Adabas, SQL Server e DB2. Para PCs temos o MySQL, Dbase, FoxPro e Access. Os primeiros tm mais capacidade e so mais fiveis do que os ltimos. Estes so adequados para uso domstico, em pequenas empresas ou como forma de aceder a partir de PCs a BDs instaladas em sistemas de grande porte, atravs de uma aplicao acessvel ao utilizador no especialista em informtica

  • Pg. 5

    1.1 Porqu aprender Bases de Dados? Porque que algum que no (nem pretende ser) profissional de sistemas de informao dever aprender a usar BDs? 1. Pelo mesmo motivo pelo qual se devia aprender a usar um computador h 10 anos atrs: a divulgao crescente dos computadores far com que dentro em breve os SGBDs sejam ferramentas de uso to comum como so hoje em dia as folhas de clculo. 2. Para facilitar a comunicao com os profissionais de sistemas de informao: a criao de sistemas de informao um processo que envolve pessoas tanto da rea de sistemas de informao como da rea de aco da organizao, sendo a comunicao entre ambos os grupos essenciais para o sucesso do sistema. Ora, os problemas de comunicao fazem com que o sistema criado raramente satisfaa as expectativas do cliente e mesmo algumas vezes seja o motivo do insucesso deste tipo de projectos. Sendo as BDs a infra-estrutura dos sistemas de informao, algum conhecimento destas poder contribuir para melhorar a qualidade dos sistemas de informao.

  • Pg. 6

    2 O Sistema de Gesto de Bases de Dados Access O Access um Sistema de Gesto de Bases de Dados (SGBD) para PCs. Adequa-se ao uso domstico, em pequenas empresas ou como forma de aceder a BDs instaladas em sistemas de grande porte. Ao executar o Access apresentada a seguinte caixa de dilogo:

    Com o assistente (wizard) possvel construir uma base de dados (BD) a partir de um conjunto de modelos que podem ser alterados para melhor se adequarem ao problema em questo. Os modelos incluem BDs para listas de endereos, coleces de discos e livros, despesas, entre outras. Se escolhermos criar uma BD vazia, -nos pedido o nome do ficheiro onde ela ser guardada. Cada base de dados do Access guardada num nico ficheiro, de extenso mdb ou (mde, no caso de ser uma BD encriptada). Depois apresentada a janela da base de dados, como se pode ver na figura:

    Atrs, definimos uma base de dados (BD) como sendo um conjunto de dados estruturados. No Access essa definio estendida para englobar no s as estruturas, ou objectos, onde os dados so guardados mas tambm os objectos que permitem manipular esses dados. Em cada separador da janela de bases de dados guardado um tipo diferente de objectos:

    Tables [Tabelas]: objectos onde os dados so armazenados. Queries [Consultas]: objectos de consulta e processamento dos dados armazenados nas tabelas. Forms [Formulrios]: estes objectos podem ser usados simplesmente como forma de dar um

    aspecto mais agradvel e organizado s tabelas e consultas mas tambm como forma de ligao entre todos os objectos da BD, permitindo que o utilizador tenha a sensao de estar a trabalhar com uma aplicao e no com um conjunto de objectos.

    Reports [Relatrios]: objectos para formatar dados de forma a poderem ser imprimidos. Macros: objectos para automatizar aces. Modules [Mdulos]: programas.

  • Pg. 7

    Cada objecto vai ser identificado por um nome dado pelo utilizador. Os objectos criados so guardados no ficheiro da BD.

    2.1 A Ajuda O Access, como a maior parte das aplicaes Windows possui uma ajuda on-line muito completa. Est organizada como um livro mas tambm inclui um ndice e um mecanismo de procura que facilitam a obteno de informao sobre assuntos especficos. O assistente do Office (Office Assistant) fornece ajuda relativa ao contexto. Por exemplo, se o utilizador estiver a fazer alguma coisa errada, ele procura "adivinhar" o que pretendido e faz sugestes.

  • Pg. 8

    3 Distribuindo a Informao por vrias Tabelas Em aplicaes mais complexas, a alocao da informao numa s tabela acarreta problemas de espao e consistncia. Exemplo: Se um banco guardasse toda a informao sobre uma conta (nmero, data de abertura, nome do 1 titular, morada do 1 titular, etc) junto com a informao de cada movimento feito, o tamanho de cada registo seria enorme e a tabela atingiria uma dimenso incomportvel. Para alm disso, se, por exemplo, o 1 titular mudasse de residncia, seria necessrio corrigir todos os registos de movimentos na conta respectiva. Se se considerar o facto de que cada conta pode ter vrios titulares, ento o problema agravar-se-ia, dado que seria preciso acrescentar estrutura da tabela campos para o nome e morada, etc dos outros titulares. Isto provocaria, entre outros problemas, desperdcio de espao, dado que nas contas com menos titulares do que o mximo previsto teriam vrios campos vazios, e tambm dificuldade na definio da estrutura da tabela, para decidir qual o nmero mximo de titulares que uma conta pode ter. Exemplo: Pretende-se registar informao sobre alunos, disciplinas e notas.

    Pode-se verificar aqui redundncia, com dados como a morada, localidade e data de nascimento a serem registados para cada nota do aluno. O mesmo sucede com o regente da disciplina que guardado com cada nota da disciplina respectiva. Para alm das dificuldades com a alterao de informao, a introduo repetida dos mesmos dados vai multiplicar os erros. Note-se, por exemplo, que na 4 linha, o utilizador esqueceu-se do acento na palavra Informtica. Este erro reflectir-se-ia, por exemplo, quando se calculasse a mdia das notas lanadas a 10 de Julho de 97 a essa disciplina. Uma soluo seria preencher estes campos apenas uma vez, o que implicaria um desperdcio de espao considervel. Implicaria tambm que se esse registo fosse apagado seria necessrio reintroduzir esses dados noutro registo. Repare-se tambm que, como foi utilizado o tipo AutoNumber para o campo nmero, cada vez que introduzida uma nota atribudo um nmero diferente ao aluno. Finalmente, como esta tabela tem informao de notas, seria impossvel obter informao sobre um aluno que ainda no tivesse nenhuma nota lanada.

    3.1 Relacionamentos A melhor soluo para estes problemas dividir a informao por vrias tabelas, relacionando-as para poder ter acesso informao como um todo. O desenho da BD a fase mais importante da criao de uma BD e resulta num modelo de dados. Exemplo: A anlise da informao a armazenar na BD da faculdade resulta num modelo de dados que se pode interpretar da seguinte forma: H trs entidades sobre as quais se guarda informao: alunos, disciplinas e notas. Cada aluno tem vrias notas ( mesma ou a vrias disciplinas). Para cada disciplina so lanadas vrias notas (para o mesmo ou alunos diferentes). Assim, para alm da tabela Alunos original so criadas tabelas para as outras entidades representadas, Disciplinas e Notas:

  • Pg. 9

    com os dados distribudos pelas 3 tabelas da seguinte forma:

    Note-se que a tabela Notas tem um campo Aluno que guarda o nmero do aluno a que a nota diz respeito. acrescentado um campo chamado Cdigo tabela Disciplinas para substituir o campo Disciplina no papel de chave. A disciplina , assim, identificada na tabela Notas pelo campo Disciplina que guarda um valor correspondente ao cdigo. Apesar da diviso da informao em vrias tabelas, nada foi perdido: para saber o nome do aluno a que corresponde a nota na 3 linha da tabela Notas, obtm-se o valor do campo Aluno desse registo, 2, e procura-se na tabela Alunos o aluno cujo Nmero 2, que a Maria Oliveira. Se algum aluno mudar de morada, basta alterar o registo respectivo na tabela Alunos. Os relacionamentos representados no modelo de dados so implementados directamente em Access. Um relacionamento envolve 2 tabelas que tm um campo comum, isto , um campo que representa o mesmo elemento de informao. A criao de um relacionamento uma indicao ao SGBD desse facto. O Access suporta dois tipos de relacionamentos: um para um ou 1:1 (one to one), em que a cada valor do campo comum corresponde um e um s registo em ambas as tabelas. Estes relacionamentos so utilizados, por exemplo, para separar informao sobre um determinado item qual s uma parte dos utilizadores deve ter acesso. um para muitos ou 1:N (one to many), em que a cada valor do campo comum numa das tabelas (tabela primria ou lado 1 do relacionamento) correspondem vrios registos, isto , vrios registos tm o mesmo valor nesse campo, na outra tabela (tabela relacionada ou lado N). Note-se que a cada registo do lado N corresponde 1 e um s registo do lado 1. Os relacionamentos mais comuns so do tipo 1:N. Para criar relacionamentos executar o comando Tools, Relationships. apresentada uma caixa de dilogo para seleccionar as tabelas a relacionar:

  • Pg. 10

    Seleccionadas as tabelas, o relacionamento definido arrastando o campo comum na tabela primria para cima do campo comum na tabela relacionada. Um relacionamento pode envolver vrios campos comuns, 2 a 2, bastando para isso preencher o resto das linhas disponveis. O tipo de relacionamento automaticamente detectado e indicado em baixo. O valor Indeterminate indica que o Access no conseguiu detectar o tipo de relacionamento. O campo comum tem que ser do mesmo tipo em ambas as tabelas e ter tambm o mesmo tamanho (Field Size). A excepo regra permite relacionar campos do tipo AutoNumber e Number, desde que o Field Size seja o mesmo. O campo comum , normalmente, o campo chave da tabela primria. Na tabela relacionada o campo comum chamado chave externa (foreign key). No caso raro de haver um relacionamento entre tabelas em que o campo comum no chave em nenhuma, ento ele ter que ser indexado numa delas. Exemplo: Para definir os relacionamentos da BD da faculdade, executar o comando Tools, Relationships e seleccionar todas as tabelas. Depois arrastar o campo Nmero da tabela Alunos para o campo Aluno da tabela Notas e o campo Cdigo da tabela Disciplinas para Disciplina de Notas. O Access detecta que so relacionamentos 1:N. Para apagar um relacionamento preciso seleccion-lo e executar Edit, Delete. Ateno que a execuo desse comando depois de seleccionada uma tabela s provoca o desaparecimento da tabela da janela de relacionamentos. Este mecanismo permite facilitar a anlise dos relacionamentos em BD complexas. Para visualizar todos os relacionamentos executar Relationships, Show All e para ver todos os relacionamentos em que a tabela seleccionada participa, executar Relationships, Show Direct. Numa BD bem desenhada e bem construda cada tabela est relacionada com pelo menos outra tabela.

    3.2 Integridade Referencial Dividir a informao por vrias tabelas resolveu os problemas de redundncia e inconsistncia referidos acima, mas criou outros. Por exemplo, se um registo numa tabela primria for apagado e existirem registos relacionados noutra tabela, a BD fica inconsistente. De forma semelhante, se for alterado o valor do campo comum de um registo da tabela primria, a informao na BD deixar de ser consistente. Exemplo: Se eliminar o registo da tabela Disciplinas referente a Informtica, a BD passa a estar inconsistente porque vrios registos na tabela Notas fazem referncia disciplina 1 que j no existe. Isto , no possvel, por exemplo, saber a qual disciplina que a aluna Carolina Santos teve 15, como indicado pelo 1 registo de Notas. Se, por exemplo, os nmero dos alunos Maria Oliveira e Paulo Silva forem alterados na tabela Alunos (o que impossvel de fazer neste caso porque um campo do tipo AutoNumber) ento estes alunos passaro a ter as notas trocadas entre eles. Activando a opo Enforce Referential Integrity, o Access passa a validar os valores dos campos relacionados, de forma a garantir a integridade referencial, e, portanto, a consistncia da informao

  • Pg. 11

    distribuda pelas tabelas. Assim, todos os valores existentes no campo comum da tabela relacionada tero que existir no campo comum da tabela primria. Na janela de relacionamentos, um relacionamento com esta opo activada passa a ter indicao do lado 1 e do lado N, este ltimo representado por um smbolo de infinito ( ). Exemplo: Activando a opo Enforce Referential Integrity para os relacionamentos da BD da faculdade, a janela de relacionamentos ser semelhante seguinte:

    Se tentar apagar o 1 registo de Alunos o Access d a seguinte mensagem de erro:

    Note-se que a partir deste momento no possvel introduzir a informao na BD por qualquer ordem. Os dados das tabelas primrias tm que ser introduzidos antes dos dados das tabelas relacionadas. Assim, para alterar o valor de um campo comum ou apagar um registo numa tabela primria, necessrio antes alterar/apagar os registos relacionados. Para simplificar estas tarefas que so frequentes, o Access permite que as alteraes efectuadas na tabela primria sejam automaticamente reflectidas nas tabelas relacionadas aps confirmao pelo utilizador. Quando a opo Enforce Referential Integrity activada so disponibilizadas mais 2 opes: Cascade Update Related Fields: provoca a propagao de alteraes no campo comum do lado 1 a todas as ocorrncias do valor alterado nos registos no lado N. Cascade Delete Related Records: provoca a eliminao de todos os registos do lado N com o mesmo valor do campo comum que o registo eliminado do lado 1. Exemplo: Depois de activar ambas as opes de propagao em ambos os relacionamentos da BD da faculdade, se se apagar o registo da aluna Carolina Santos em Alunos, aparece a seguinte caixa de dilogo:

  • Pg. 12

    4 Elaborao de Modelo de Dados

    4.1 Modelos de Dados A informao que circula numa empresa, habitualmente sob a forma de documentos, analisada por diferentes pessoas com diferentes perspectivas e objectivos. Por vezes tem que ser duplicada, outras vezes dividida de acordo com os interesses das pessoas que a vo analisar. Se pretendermos automatizar sectores da empresa, a informao tem que ser analisada de forma a obter um modelo de dados, que contemple os diferentes interesses dos utilizadores e que seja flexvel de forma a possibilitar novas perspectivas.

    Fig. 1.

    A implementao do modelo de dados, pode ser realizada com em Sistemas de Gesto de Bases de Dados (SGBD) relacionais. No modelo relacional de bases de dados, toda a informao disposta em relaes (tabelas). Cada relao caracterizada por um conjunto de propriedades ou atributos. Relaes representam estruturas lgicas de dados que possibilitam uma boa comunicao entre utilizadores e o analista e facilmente implementveis em computadores que suportem Sistemas de Gesto de Bases de Dados, de que o Access um exemplo.

    4.2 Uma Aplicao - Requisio de livros numa biblioteca O nosso objectivo consiste em obter um conjunto de bases de dados que possibilitem guardar e manter a informao necessria para o bom funcionamento da biblioteca. Supe-se que, na interaco com o pblico, a biblioteca utiliza o documento da Fig. 2 (carto de leitor) para identificar os leitores. Os leitores podem consultar os livros existentes na biblioteca utilizando os conjuntos de fichas (Fig. 3). Existem trs conjuntos de fichas (cada ficha est triplicada) ordenados de maneira diferente: um conjunto de fichas ordenado por ordem alfabtica do autor do livro, o segundo ordenado por ordem alfabtica do ttulo do livro, e o terceiro por ordem alfabtica do tema principal do livro. Sempre que um leitor requisita livros, essa informao fica registada no livro de requisies, de que mostrada uma pgina na Fig. 4.

    Figs. 2, 3, 4.

    Os documentos so uma fonte importante da informao e cuja anlise um bom inicio para a elaborao de um modelo de dados. Outra fonte de informao o dilogo com os agentes por onde

  • Pg. 13

    circula a informao. A regra aqui a de reunir o maior conjunto de informaes sobre todo o ambiente envolvido. Qualquer modelo de dados corresponde a uma "interpretao" do analista em relao ao micro-mundo onde circula a informao. Uma interpretao incorrecta desse micro-mundo pode ter implicaes inconvenientes, em termos de limitaes do sistema. Analisando o documento da Fig. 4, numa primeira anlise, poderamos ser levados a dispor a informao numa nica base de dados, obtendo: ReqNr Data Devol Nome Morada Tel Titulo Autor Coloca Assina 1 7/6/94 14/8/94 Costa R.de Cima 1234 "Dbase" E.Jones I.321 "Lotus" D.Bolocan I.124 2 7/6/94 17/7/94 Silva R.de Baixo 4771 "Dos" M.Edward I.567 "Dbase III" J.Hall I.322

    Fig. 5 Assim as duas primeiras linhas referem a requisio nmero 1, feita em 7/6/94 pelo Sr. Costa que mora na R.de Cima com o telefone 1234. Requisitou dois livros: um com o ttulo "Dbase" escrito por E.Jones, cuja posio, na biblioteca I.321; e o livro "Lotus" escrito por D.Bolocan que corresponde posio I.124. Esta disposio da informao, no est de acordo com os requisitos do modelo relacional de base de dados. Apesar de a informao estar disposta sob a forma de uma relao (tabela), existem atributos que no tm valor atribudo, pelo que a informao no independente da ordem das linhas. Assim, se por qualquer processo (indexao, por exemplo) trocssemos a ordem das linhas, a informao ficava inconsistente. Uma forma de dispor a informao de acordo com o modelo relacional, ser preencher completamente a tabela:

    ReqNr Data Devol Nome Morada Tel Ttulo Autor Coloca Assina 1 7/6/94 14/8/94 Costa R. de Cima 1234 "Dbase" E.Jones I.321

    1 7/6/94 14/8/94 Costa R. de Cima 1234 "Lotus" D.Bolocan I.124

    2 7/6/94 17/7/94 Silva R. de Baixo 4771 "Dos" M.Edward I.567

    2 7/6/94 17/7/94 Silva R. de Baixo 4771 "Dbase III" J.Hall I.322

    Fig. 6

    Uma anlise desta BD evidencia a redundncia da informao: sistematicamente a mesma informao aparece em diferentes linhas. Esta situao tem vrios inconvenientes: por um lado, faz crescer desmesuradamente a BD o que implica maiores recursos em termos de capacidade de disco e velocidade de processamento. Por outro lado dificulta os processos de manuteno da BD. Imagine que um leitor muda de morada. Para manter a BD consistente, necessrio alterar a morada do leitor tantas vezes quantas as requisies por ele efectuadas, quando s deveria ser necessrio alterar uma vez essa informao. As situaes de redundncia da informao, manuteno complicada e tambm a falta de flexibilidade no sentido de obter outras maneiras de olhar para os dados que no aquelas previamente definidas, so as dificuldades sentidas quando os dados so analizados de uma forma primria. Estas situaes so evitadas, obtendo um modelo de dados. Vamos estudar duas metodologias, com o mesmo objectivo ltimo: obter um conjunto de bases de dados que, por um lado, assegurem a consistncia da informao, e por outro lado possibilitem guardar os factos o menor nmero de vezes possvel.

  • Pg. 14

    4.3 Normalizao Este mtodo representa um processo do especfico para geral. 4.3.1 Formas Normais Dois conceitos bsicos, subjacentes a toda a anlise baseada na normalizao, so o conceito de dependncia funcional e o conceito de campo chave. No caso da Fig. 6, a cada nmero de requisio corresponde uma nica data, mas o inverso j no verdadeiro, isto pode haver vrias requisies efectuadas no mesmo dia. Dizemos que o atributo "data" funcionalmente dependente do nmero de requisio. usual representar como: ReqNr Data. Isto significa que ReqNr identifica a Data, ou seja, sendo conhecido o nmero da requisio podemos saber a Data da requisio. De uma forma geral, o atributo A funcionalmente dependente de B, se a cada valor de B corresponder um e um s valor do atributo A. Chave o atributo ou conjunto de atributos, cujos valores permitem identificar de forma nica todas as linhas da relao. Eventualmente poder haver situaes em que haja vrias possibilidades para a escolha de uma chave, e, num caso extremo, a conjuno de todos os atributos de uma relao constitui uma chave. O critrio de escolha dever ser baseado na simplicidade: prefervel uma chave com poucos atributos, a uma chave mais complexa. Numa anlise da Fig. 6, a conjuno dos atributos ReqNr+Colocao constitui uma chave para a relao. 1 Forma Normal A informao da Fig. 6, satisfaz as condicionantes do modelo relacional: dito estar na 1 Forma Normal (1FN). 2Forma Normal Obtida a 1 FN e identificada a chave da relao, vamos efectuar um estudo das dependncias funcionais entre os atributos e a chave. A data da requisio, o nome, morada e assinatura da pessoa que requisita os livros dependem apenas do nmero da requisio e so independentes dos livros requisitados. Assim, teremos: ReqNr, Data, Nome, Morada, Telefone, Assinatura O ttulo e o autor dos livros requisitados s dependem da colocao e so independentes do nmero da requisio. Teremos: Colocao, Ttulo, Autor Em relao data de devoluo, o considerar que esta depende do nmero da requisio, implica que todos os livros tero que ser devolvidos simultaneamente, porque a cada requisio corresponde apenas uma data de devoluo. Esta interpretao impe limitaes ao funcionamento da biblioteca. Seria mais funcional, se cada livro pudesse ser devolvido individualmente, ou seja: ReqNr + Colocao, Devoluo A partir da relao original, na 1 FN, obtemos trs grupos de dependncias dos atributos, em relao chave. Isto significa que a relao da Fig. 6, pode ser decomposta em trs relaes: Relao: requisio

    ReqNr Data Nome Morada Tel Assinatura 1 7/6/94 Costa R.de Cima 1234

    2 7/6/94 Silva R.de Baixo 4771

    Relao: livros requisitados

    ReqNr Colocao Devoluo 1 I.321 14/8/94 1 I.124 14/8/94 2 I.567 17/7/94

  • Pg. 15

    2 I.322 17/7/94 Relao : livros

    Colocao Titulo Autor I.321 "Dbase" E.Jones I.124 "Lotus" D.Bolocan I.567 "Dos" M.Edward I.322 "Dbase III" J.Hall

    Por decomposio da relao na 1FN, obtemos trs relaes, mais simples e com menos redundncia. Por exemplo, a informao respeitante pessoa que efectuou a requisio aparece apenas uma vez e independente do nmero de livros requisitados. De notar que as relaes mantm atributos em comum: so estes atributos - chaves em relaes- que vo permitir manter consistente a informao porque possibilitam estabelecer relacionamentos entre as relaes. ReqNr a chave da relao requisio, ReqNr+Colocao a chave da relao livros_requisitados e Colocao a chave da relao livros.Nas trs relaes, todos os atributos dependem funcionalmente da chave: a informao dita na 2 Forma Normal. 3 Forma Normal Analisando a relao requisio, todos os atributos dependem da chave, mas existem dependncias transitivas, entre os atributos:

    ReqNr, Nome, Morada isto , o atributo Nome depende funcionalmente da chave da relao, por sua vez o atributo Morada depende funcionalmente do Nome, o que implica que Morada dependa da chave da relao. Situao equivalente a do atributo telefone. Desdobrando a relao, de forma a eliminar as dependncias transitivas, obtemos duas relaes ditas na 3 FN. Uma relao est na 3 FN se cada atributo depender nica e exclusivamente da chave:

    ReqNr Data Nome Assinatura 1 7/6/94 Costa

    2 7/6/94 Silva

    Nome Morada Tel Costa R.de Cima 1234 Silva R.de Baixo 4771

    4.3.2 Uma Soluo para o Caso da Biblioteca Normalizando os documentos relativos a leitores e livros (que deixamos como exerccio para o leitor), apresentada uma soluo: livros(colocao, ttulo, autor, editor, edio, ano) tema(tema,colocao) leitores(bilhete_identidade, nome, localidade, telefone, fotografia, assinatura) requisio(nmero, bilhete_identidade, data, assinatura) reqlivro(nmero, colocao, data_devoluo) 4.3.3 Esquema Geral da Normalizao Dispor a informao em tabelas de forma a que todas as ocorrncias dos atributos sejam elementares (assumam apenas um valor).

  • Pg. 16

    1 Forma Normal

    Identificar as dependncias funcionais dos atributos em relao chave. Desdobrar a relao de forma a que cada atributa dependa da totalidade da chave.

    2 Forma Normal

    Identificar as dependncias transitivas. Desdobrar a relao de forma a que cada atributo dependa nica e exclusivamente da chave.

    3 Forma Normal

    4.3.4 Anexo A Entidades e Relacionamentos Este mtodo representa um processo do geral para o especfico. Para problemas complexos, definidos por muitos atributos, os estados iniciais das relaes, quando abordadas pelo mtodo da normalizao, so extensos e com dependncias complexas. Torna-se fastidioso e sujeito a enganos, trabalhar com as relaes no normalizadas. 4.3.5 Entidades Um outro processo de obter um modelo de dados que satisfaz os objectivos inicialmente definidos, a metodologia "Entidades e Relacionamentos". uma metodologia que parte dos conceitos abstractos em jogo e os vai especializando. Por esse motivo, os passos intermdios so mais simples, envolvendo menos informao. O resultado final, um conjunto de relaes normalizado. (....)

    4.3.6 Anexo B Tabelas Todos os dados que so armazenados de forma permanente pelo Access, so guardados em tabelas. Cada tabela armazena dados sobre um tipo de coisa, pessoa ou relao entre coisas/pessoas. Numa tabela pode-se, por exemplo, guardar informao sobre alunos, disciplinas ou notas (que podem ser vistas como relaes entre alunos e disciplinas). As tabelas esto organizadas em linhas e colunas. Em cada linha guarda-se dados sobre um item, isto , sobre um aluno, disciplina ou nota, respectivamente para os exemplos dados. Cada coluna representa uma determinada caracterstica que est associada a todos os itens do tipo que a tabela representa. Por exemplo, numa tabela de alunos dever existir uma coluna para o nome e outra para a data de nascimento. Em linguagem de bases de dados (BD), uma linha um registo (record) e uma coluna um campo (field). possvel ter um nmero potencialmente ilimitado de registos em cada tabela, mas o nmero de campos fixo e limitado. Cada campo de uma tabela tem um tipo associado que limita o tipo de dados que l podem ser guardados. O campo "nome" da tabela de alunos ser do tipo texto e o campo "data de nascimento" ser do tipo data. Assim, no campo "nome"

  • Pg. 17

    podero ser introduzidos caracteres alfanumricos enquanto no campo "data de nascimento" apenas podem ser guardadas datas. Ao conjunto de campos que compe uma tabela, chama-se a estrutura da tabela. O tipo determina tambm as operaes que podem ser efectuadas com valores do campo. Por exemplo, no possvel fazer uma soma que envolva um campo do tipo texto. A informao inserida numa tabela persistente. Isto , cada registo criado numa tabela imediatamente guardado no ficheiro da BD. (...)

  • Pg. 18

    5 Formulrios A visualizao da informao nas folhas de dados (datasheets) das tabelas e consultas pouco agradvel e dificulta a sua manipulao. Os formulrios servem para organizar e tornar mais agradvel a interaco com a BD. Em conjunto com os controlos, permitem a construo de aplicaes sobre a BD. Pode-se resumir as funcionalidades dos formulrios a: editar (mostrar, alterar ou inserir) informao contida em tabelas (ou tabelas virtuais), mostrar informao derivada atravs de expresses (nos campos calculados), gerir a interaco com os utilizadores, mostrar informao suplementar (comentrios, grficos, etc). Para criar um formulrio, clicar no boto New no separador Forms da janela de BD. Aparece ento uma caixa de dilogo que permite seleccionar o tipo de formulrio a criar e a tabela ou consulta que servir de fonte de registos:

    As opes disponveis so: Design View [Vista de estrutura]: Construo manual do formulrio. Form Wizard [Assistente de Formulrios]: Criao de formulrios pela resposta a um conjunto de questes colocadas pelo assistente. AutoForm: Columnar [Formulrio Automtico: Colunas]: Esta opo e as 2 seguintes permitem a criao automtica de formulrios muito simples, baseados numa tabela apenas, em que a informao organizada, respectivamente, um registo por pgina com os campos dispostos na vertical, AutoForm: Tabular [Formulrio Automtico: Tabelas]: vrios registos por pgina com os campos dispostos na horizontal, Autoform: Datasheet [Formulrio Automtico: Folha de dados]: e em folha de dados. Chart Wizard [Assistente de Grficos]: Criao de grficos. Pivot Table Wizard [Assistente de Tabelas Dinmicas]: Criao de formulrios que apresentem os dados de forma agregada organizados em dimenses (data cube) atravs de Tabelas Dinmicas (Pivot Tables) do Excel. A maior parte das vezes, a melhor forma de construir um formulrio comear por usar o assistente para construir o essencial da visualizao da informao. Depois, na vista de estrutura, efectuam-se pequenos ajustamentos e acrescentam-se controlos para associar funcionalidades ao formulrio, como procura de registos, ligao a outros formulrios, entre outras. A excepo mais comum a esta regra a construo de formulrios que servem como menus, em que se comea a construir um formulrio do nada, usando a vista de estrutura.

  • Pg. 19

    5.1 O Assistente Para criar um formulrio com o assistente, escolher a opo Form Wizard e, opcionalmente, seleccionar a tabela que lhe vai servir de base. Em seguida aparece uma caixa de dilogo para escolha dos campos a incluir. Note-se que nesta altura possvel alterar a tabela que serve de base ao formulrio e possvel usar campos de vrias tabelas. Neste ltimo caso, o assistente guia o utilizador na criao de um formulrio com sub-formulrios, como ser explicado mais adiante. Se for seleccionada apenas uma tabela apresentada em seguida uma caixa de dilogo para escolher a organizao dos campos, em que, para alm das opes Columnar, Tabular e Datasheet explicadas acima, existe a opo Justified, em que os campos so dispostos uns a seguir aos outros, da esquerda para a direita e de cima para baixo. Na caixa de dilogo que se segue define-se o estilo a usar e na ltima, o nome do formulrio e se se deseja abrir o formulrio para ver os dados ou em vista de estrutura. Exemplo: Para tornar a visualizao e edio dos dados sobre os alunos mais agradvel, cria-se um formulrio. Clicar em New no separador Forms, seleccionar a tabela Alunos para fonte de registos e o assistente para criao do formulrio. Em seguida incluir todos os campos de Alunos no formulrio:

    Escolher a organizao dos campos em coluna e depois o estilo Standard. Finalmente, atribuir ao formulrio o nome Lista de Alunos. O resultado o seguinte:

    5.2 A Vista de Estrutura Como foi dito a utilizao mais frequente da vista de estrutura para editar formulrios construdos com o assistente. Um formulrio consiste em vrias seces: cabealho (Form Header), detalhe (Detail) e rodap (Form Footer). Exemplo: Seleccionar o formulrio Lista de Alunos e abrir a vista de estrutura:

  • Pg. 20

    O cabealho serve para apresentar informao sobre o formulrio, como o ttulo. A zona de detalhe normalmente usada para mostrar os campos do(s) registo(s). O rodap essencialmente usado para informao de estado, como, por exemplo, o nmero do registo actual, e informao agregada, como totais. O utilizador pode ver as propriedades associadas a um formulrio executando o comando View, Properties. As propriedades so agrupadas em 4 conjuntos: Format: formatao e aspecto visual. Data: qual a fonte de registos e como esto ligados. Event: associao de procedimentos/macros para interaco do utilizador com o formulrio. Other: outras propriedades (menu, ajuda, impresso, etc). O separador All apresenta todas as propriedades. Exemplo: As propriedades do formulrio Lista de Alunos so:

    Note-se que o facto de o formulrio basear-se na tabela Alunos, indicado ao assistente, foi registado na propriedade Record Source.

    5.3 Controlos As peas utilizadas para a construo de um formulrio so os controlos. Para alm de mostrar informao, os controlos permitem organizar e decorar o formulrio, de forma a tornar a sua utilizao mais agradvel e eficiente. Um controlo pode ser colocado em qualquer uma das seces e tem tambm um conjunto de propriedades agrupadas da mesma forma que nos formulrios. Alguns controlos tm assistentes que facilitam a sua criao. A seguinte tabela apresenta os controlos existentes no Access: Controlo Utilizao Assistente Control

    source

  • Pg. 21

    Label [Rtulo] Informao ou texto descritivo. No No Text Box [Caixa de texto]

    Mostrar e/ou editar campos de tabelas e insero de dados pelo utilizador, por exemplo, para procura de registos. constitudo por 2 partes, uma caixa com um ttulo e outra onde se visualizam/editam os dados, e em que cada uma tem as suas propriedades.

    No Sim

    Option Group [Grupo de opes]

    Pode conter check boxes, option buttons ou toggle buttons. Apenas uma opo pode estar seleccionada.

    Sim Sim

    Toggle Button [Boto de alternar]

    Se utilizado isoladamente, selecciona um valor de Yes/No. Em option group selecciona um valor de um conjunto de valores.

    No Sim

    Option Button [Boto de opo]

    Idem toggle button. No Sim

    Check Box [Caixa de verificao]

    Idem toggle button. No Sim

    Combo Box [Caixa de combinao]

    Seleco de valor de uma lista. Se no estiver aberta, apenas o valor escolhido mostrado. Permite insero de novos valores.

    Sim Sim

    List Box [Caixa de listagem]

    Seleco de um valor de uma lista. O controlo est sempre aberto. No permite insero de valores novos.

    Sim Sim

    Command Button [Boto de comando]

    Permite executar comandos, macros ou chamar procedimentos.

    Sim No

    Image [Imagem] Imagem guardada em ficheiro. No No Unbound Object Frame [Moldura de objecto independente]

    Objecto OLE no ligado (unbounded). No -

    Bound Object Frame [Moldura de objecto dependente]

    Objecto OLE ligado (bounded). No -

    Page Break [Quebra de pgina]

    Separa um formulrio em pginas. No No

    Tab Control [Controlo separador]

    Separador usado, por exemplo, para organizar de forma mais legvel tabelas com muitos campos.

    No No

    Subform/ Subreport [Subformulrio/ subrelatrio]

    Inserir um subformulrio ligado ao formulrio actual, por exemplo, os movimentos de uma conta bancria cujos dados so apresentados no actual.

    Sim No

    Line [Linha] Linha decorativa. No No Rectangle [Rectngulo]

    Rectngulo decorativo. No No

    More Controls [Mais controlos]

    Outros controlos disponibilizados pelo Access ou outras aplicaes.

    - -

    Das propriedades dos controlos, duas, comuns a vrios, so de especial importncia: Name e Control Source. Control Source permite definir a forma como o controlo obtm a informao que mostra:

  • Pg. 22

    Campo: Para ligar um controlo a um campo da fonte de registos introduz-se o nome deste nesta propriedade. A lista de campos (View, Field List) permite acrescentar controlos ligados a campos a um formulrio por drag&drop. Expresso: possvel calcular expresses em formulrios como se faz nas consultas. O contedo dos campos da fonte de registos so usados como nas consultas, isto , o nome do campo entre parntesis rectos ([nome do campo]). Para fazer referncia a outros controlos, usar a seguinte notao [Forms]![nome do formulrio]![nome do campo], em que o Nome do campo refere-se ao contedo da propriedade Name. Utilizador: Para obter dados ou parmetros do utilizador deixa-se esta propriedade vazia ou com o valor Unbound. Name indica o nome do controlo, permitindo utilizar ao seu contedo (isto , o valor mostrado) numa expresso, macro ou num procedimento. Exemplo: As propriedades de um dos controlos da Lista de Alunos so:

    Para facilitar a edio de formulrios, o Access disponibiliza uma barra de ferramentas (View, Toolbox):

    O boto Select Objects [Seleccionar objectos] activa um apontador que permite seleccionar (por exemplo, para ver as propriedades), mover, alterar tamanho e editar objectos num formulrio. O boto Control Wizards [Assistentes de controlos] liga/desliga os assistentes de controlos. A utilizao de assistentes na construo de controlos particularmente til porque facilita as tarefas de lhes associar comportamentos, como procura de registos, abertura de formulrios, etc. De outra forma, esses comportamentos s poderiam ser definidos usando macros e procedimentos em Visual Basic. Para inserir um novo controlo clicar no boto respectivo e seleccionar, arrastando, a zona do formulrio onde o controlo dever ser colocado. O seguinte formulrio (tipo columnar) apresenta alguns destes controlos:

  • Pg. 23

    A seguir alguns dos controlos utilizado no formulrio alunos sero analisados em pormenor.

    5.4 Caixa de Texto para Nome Consideremos a caixa de texto que contm o nome do aluno. A caixa de texto identificada por nome ( o nome deste controlo) e est ligada ao campo nome da tabela alunos (ver propriedades deste controlo). Assim, se o utilizador tiver um registo em branco (no preenchido) e digitar um nome, esse nome ser introduzido na tabela. Neste caso a fonte de informao (Control Source) associada a um campo da tabela alunos. Noutras circunstncias a caixa de texto podia ser conectada uma expresso, ou alternativamente ficar no ligada (para permitir ao utilizador digitar informao que no armazenada). Propriedades de controlo tipo "Text Box" para "nome":

    5.5 Combo Box para entrada da Turma Suponha que o nome de aluno j foi preenchido, mas falta escrever os restantes dados. A introduo da turma pode ser feita atravs uma Combo Box, pois h um nmero limitado de alternativas. O seguinte quadro mostra o que se pretende obter:

  • Pg. 24

    Uma Combo Box pode ser construda com o auxlio de um wizard ou no. Aqui exemplificamos a sua criao manual. Para garantir que isso acontea, deve ligar o controlo ao campo apropriado da tabela (campo Turma) especificando o Control Source. As opes (tp1; tp2 etc,) devem ser introduzidas no Row Source de propriedades:

    5.6 Introduo de um Grupo de Opes ("Option Group") Como para a Combo Box, tambm os Option Group podem ser construdos com um wizard. Nesta seco consideramos vrias alternativas para mostrar o nmero limitado e pr-definido de valores no formulrio. Suponha que pretende armazenar informao sobre o tipo de avaliao em que os alunos foram avaliados. Actualmente considere trs possibilidades de avaliao, mutuamente exclusivas: testes, exame final ou exame oral. Primeiro consideramos algumas alternativas que no envolvem o grupo de opes. Uma possibilidade, utilizar uma Combo Box com duas colunas:

    Uma outra possibilidade seria armazenar esta informao num campo tipo Text com uma regra de validao apropriada, por exemplo: IN("Testes";"Exame";"Oral"). No entanto, a soluo com o grupo de opes mais apropriada. Assim, dever associar a cada opo um cdigo, por exemplo 1 para "Testes", 2 para "Exame" e 3 para "Oral". Num grupo cada opo apresentada por controlos que podero ser Check Box, Option Button ou Toggle Button. O efeito que assim ser possvel escolher s uma das diferentes alternativas. Considere, por exemplo, a seguinte soluo que envolve o uso de Option Buttons.

  • Pg. 25

    Para criar um grupo de opes deste tipo, em primeiro lugar criado o enquadramento, arrastando-o para o formulrio da ferramenta. Posteriormente so acrescentadas as opes, arrastando o controlo desejado (ex. Option Button), para dentro da caixa do enquadramento. Ao acrescentar uma opo, propriedade Option Value deste controlo atribudo um nmero sequencial. A figura seguinte mostra as propriedade de Button1. O Option Value deste boto 1. Quando o controlo seleccionado, o grupo de opes retorna o valor de OptionValue deste controlo.

    Ao escolher uma opo, ao campo da tabela ligada fica atribudo o valor de parmetro Option Value do controlo escolhido. Assim ao campo avaliao fica atribudo o valor 1 se o utilizador escolher o boto testes; o valor 2, se escolher o boto exame, etc.

    5.7 Clculo de Totais Suponha que se pretende calcular o total de todos os valores que aparecem no campo valor:

    Para atingir este fim, deveria criar uma caixa de texto, cujo fonte de informao (Control Source) deveria ser uma expresso, que neste caso =Sum([valor]):

    Os campos que aparecem na expresso ligada ao controlo que efectua a operao sobre um conjunto de registos, devero ser campos da fonte de registos (Tabela ou Query) (isto , no controlos calculados no formulrio).

    5.8 Criao de Main/Subform

  • Pg. 26

    Como j foi dito atrs frequentemente necessrio obter informao que no se encontra em apenas uma tabela. Para isso podemos criar uma query que envolva as vrias tabelas pelas quais os campos desejados se encontram distribudos e usar um formulrio para visualizar os resultados da execuo dessa query. Alternativamente podemos usar o mecanismo de formulrio principal/subformulrio (main/subform).

    Por exemplo, suponhamos que queremos ver as vrias notas de cada aluno usando um formulrio do tipo formulrio principal/subformulrio. Para criar um formulrio deste tipo usamos o FormWizard: cria-se um formulrio (comando New no separador Forms) e selecciona-se a opo FormWizard, como se pode ver na figura. Note-se que no necessrio indicar a tabela/query de onde os dados so obtidos. Em seguida acrescentar os campos desejados das vrias tabelas/queries aos campos seleccionados (Selected Fields). Neste caso, acrescentamos os campos nmero e nome da tabela Alunos e os campos disciplina, nota e lanamento da tabela Notas, como se pode ver nas figuras que se seguem.

    importante notar que tem que existir um relacionamento 1:N entre as tabelas/queries envolvidas para que o wizard funcione correctamente. Se tal no fr verdade, o Access no ser capaz de detectar que se pretende criar um formulrio do tipo formulrio principal/subformulrio. Para dar a volta a este problema pode-se usar o controlo subform (ver Controlo subform). Em seguida dado que vamos visualizar informao de mais do que uma tabela, necessrio indicar a forma como queremos que essa informao seja organizada. Neste caso, como temos informao sobre alunos e notas, a questo ser: queremos ver as notas de cada aluno ou os alunos de cada nota? A resposta , obviamente, a primeira. Assim, a informao deve ser organizada por aluno (by Alunos), como se pode ver na figura.

  • Pg. 27

    Em caso de dvida deve-se experimentar as vrias alternativas, podendo-se antever no lado direito da janela o aspecto do formulrio em criao. Na mesma janela ainda possvel escolher entre ver toda a informao numa s janela (Form with subform(s)) ou em vrias (Linked forms). Escolhendo esta ltima, criado um boto no formulrio principal que d acesso ao subformulrio. Naturalmente, neste subformulrio sero apresentados registos da tabela/query respectiva que estejam relacionados com o registo mostrado no principal. Isto , no exemplo dado, se estivermos a visualizar o registo do aluno de nome Antnio, clicando no boto sero apresentadas as suas notas. Mais uma vez, possvel antever o resultado da opo seleccionada. Nas duas caixas de dilogo seguintes so apresentadas opes relativas ao aspecto grfico do formulrio. Finalmente, na ltima caixa de dilogo podemos dar nome aos formulrios criados, resultando no formulrio apresentado na figura.

    Note-se que so criados 2 formulrios, um com os dados da tabela Alunos e outro com os dados da tabela Notas. No formulrio principal o wizard insere um controlo que vai estar ligado ao subformulrio. Podemos ver a forma como so ligados acedendo s propriedades do subformulrio, mostradas na figura seguinte.

    O campo Source Object indica o formulrio a incluir, isto , a mostrar como subformulrio. Em seguida preciso determinar como esse formulrio ser ligado ao formulrio principal, isto , que campos de um e outro permitem lig-los. Neste caso ligmos o campo nmero do formulrio principal (Link Master Fields) ao campo com o mesmo nome do subformulrio (Link Child Fields).

  • Pg. 28

    5.9 Controlo subform Outra forma de acrescentar subformulrios a formulrios j existentes usando o wizard do controlo subform. Supondo a existncia de uma query que nos indique as disciplinas que faltam fazer a cada aluno, chamada disciplinas por fazer, para juntarmos essa informao ao formulrio criado atrs devemos primeiro entrar na design view do formulrio principal. Em seguida criar um controlo do tipo Subform/Subreport como explicado atrs para os outros controlos. Em seguida podemos seleccionar se queremos acrescentar um formulrio j existente (Forms) ou criar um formulrio novo a partir de uma tabela/query (Table/Query).

    Depois seleccionamos os campos que desejamos incluir no subformulrio. Note-se que necessrio incluir o campo nmero que permitir a seguir fazer a ligao ao formulrio principal.

    ento apresentada uma caixa de dilogo onde nos pedido para identificar a ligao entre a tabela/query do formulrio principal e a escolhida para o subformulrio. No caso do Access detectar a existncia de um relacionamento entre elas, apresenta uma sugesto (Choose from list). Caso contrrio, ser preciso indicar (Define my own) um ou mais campos no formulrio principal (Form/report fields) que faro a ligao com campos correspondentes indicados para o subformulrio (Subform/subreport fields). Neste caso foi detectada a ligao correcta.

    Finalmente d-se um nome ao subformulrio e o resultado apresentado. conveniente alterar a apresentao do formulrio de forma a que o nmero do aluno no aparea repetido.

  • Pg. 29

  • Pg. 30

    ANEXOS

    6 ANEXO A 6.1 Entidades e Relacionamentos Este mtodo representa um processo do geral para o especfico. Para problemas complexos, definidos por muitos atributos, os estados iniciais das relaes, quando abordadas pelo mtodo da normalizao, so extensos e com dependncias complexas. Torna-se fastidioso e sujeito a enganos, trabalhar com as relaes no normalizadas. 6.1.1 Entidades Um outro processo de obter um modelo de dados que satisfaz os objectivos inicialmente definidos, a metodologia "Entidades e Relacionamentos". uma metodologia que parte dos conceitos abstractos em jogo e os vai especializando. Por esse motivo, os passos intermdios so mais simples, envolvendo menos informao. O resultado final, um conjunto de relaes normalizado. Os conceitos essenciais, nesta metodologia, so o conceito de "Entidade" e o de "Relacionamentos" entre as entidades. Uma entidade um objecto abstracto considerado importante para o sistema. No caso em estudo, poderemos considerar que a situao envolve Leitores e Livros cuja interaco registada sob a forma de uma Requisio. Estas sero as entidades importantes para o modelo de dados. usual representa-las como:

    Livros Leitores Requisio Cada Entidade descrita por um conjunto de propriedades, designadas por atributos: livros(colocao, ttulo, autor, editor, edio, ano) leitores(bilhete_identidade, nome, localidade, telefone, assinatura) requisio(nmero, data) Os atributos sublinhados constituem as chaves das relaes. 6.1.2 Relacionamentos entre Entidades As interaces entre as entidades so descritas pelos seus relacionamentos. No caso da biblioteca, uma anlise dos relacionamentos entre as entidades, revela: Um leitor pode efectuar vrias requisies, mas cada requisio s pode ser feita por um nico leitor. Numa requisio, podem ser requisitados vrios livros, e o mesmo livro pode ser requisitado vrias vezes (em momentos diferentes). Toda a interaco entre leitores e livros tem de ser efectuada sob a forma de uma requisio: no existe um relacionamento directo entre Livro e Leitor. O modelo, considera trs tipos de relacionamentos: Relacionamentos 1:1 - Quando a cada valor da chave de uma entidade, corresponde um e um s valor da chave da outra entidade. No caso da biblioteca, no h um relacionamento entre entidades, deste tipo. Deixamos ao leitor, como exerccio, o encontrar em situaes do seu interesse, relacionamentos deste tipo. Graficamente, relacionamentos 1:1 so representados por:

    Relacionamentos 1:N - Quando a cada valor da chave de uma entidade correspondem vrios valores da chave da outra. o caso do relacionamento Leitores - Requisies, que representada por:

  • Pg. 31

    Relacionamentos N:M - Quando a cada valor da chave de uma entidade correspondem vrios valores da chave da outra entidade, e vice-versa. o caso do relacionamento Livros - Requisio, que representada por:

    Diagrama de Entidades e Relacionamentos Graficamente, os diversos relacionamentos entre as entidades, so representados pelo diagrama de Entidades - Relacionamentos (diagrama E-R):

    Os relacionamentos N:M so difceis de implementar na maior parte dos SGBD, porque requerem uma relao simtrica, isto de Entidade1 Entidade2 e de Entidade2 Entidade1. No entanto sempre possvel desdobrar um relacionamento N:M em dois relacionamentos 1:N e 1:M, criando uma entidade de ligao. Por exemplo, o relacionamento N:M, Livros Requisio pode ser desdobrado em dois relacionamentos: Livros ReqLivros e Requisio ReqLivros, sendo ReqLivros a entidade de ligao. A verso final do diagrama E-R, fica:

    Ao definir os atributos de cada relao, e para garantir a consistncia da informao, necessrio "importar" chaves. Uma requisio, por exemplo, caracterizada por um nmero e uma data. Desta forma, no poderamos saber quem efectuou a requisio. Mas, como mantm uma relao N:1 com Leitores, vai herdar a chave de leitores: ou seja, a chave de Leitores passa a fazer parte dos atributos de Requisio, tornando possvel determinar quem efectuou uma dada requisio. Uma entidade importa a chave das entidades com as quais tem uma relao N:1 Utilizando esta regra, a relao Requisio importa a chave de Leitores e a relao ReqLivros importa as chaves de Livros e de Requisio. Os atributos de cada relao, sero: livros(colocao, ttulo, autor, editor, edio, ano) leitores(bilhete_identidade, nome, localidade, telefone, assinatura) requisio(nmero, bilhete_identidade, data) reqlivro(nmero, colocao, data_devoluo) Esta soluo no contempla o problema da temtica de cada livro. proposto, ao leitor, efectuar as alteraes necessrias ao diagrama E-R, assim como s relaes, de forma a englobar esta situao. Implementao do Modelo Geralmente o estudo do modelo de dados, tem como objectivo final, uma implementao, utilizando um Sistema de Gesto de Bases de Dados. Esta fase envolve passar de uma definio lgica dos dados para uma descrio fsica. Dois aspectos a considerar: Definio das Tabelas - a regra geral de que cada relao d origem a uma tabela.

  • Pg. 32

    Definio dos campos da Tabela - a regra geral de que os campos de cada tabela so os atributos da entidade respectiva, eventualmente acrescidos das chaves importadas.

    De uma forma geral, pretendem-se implementaes que, preservando as propriedades do modelo, possibilitem um bom desempenho nas operaes de manuteno da Base de Dados e nos processos de transaco. Uma forma de melhorar o desempenho, pode ser obtida minorando o nmero de Tabelas. Um exemplo tpico o caso dos relacionamentos 1:1. Nesta situao, normalmente decidida a juno dos atributos das duas entidades, assim relacionadas, numa nica Tabela. Outra forma de melhorar o desempenho, consiste em optimizar o acesso aos registos: utilizar acesso directo (obtido atravs da indexao) por oposio ao acesso sequencial. A chave de uma relao usualmente utilizada como ndice para a Tabela respectiva. No caso da importao de chaves, normal que a chave importada venha a fazer parte da chave da Tabela. o caso das entidades de ligao, cuja chave sempre a conjuno das duas chaves importadas. No entanto, nem todas as situaes de importao de chaves verificam esta regra. Podero existir outras conjunes de atributos, que por si s, podero ser chave da relao, sem necessidade de incorporao da chave importada: o caso da entidade requisio (no exemplo da biblioteca), que importa a chave da entidade leitores, no entanto, esta no faz parte da chave de requisio. No caso da biblioteca, e supondo que utilizamos o SGBD Access, o conjunto de Tabelas seriam: Tabela: Livros, chave Colocao

    Campo Tipo Tamanho Colocao Text 6 Ttulo Text 30 Autor Text 25 Editor Text 25 Edicao Text 10 Ano Integer

    Tabela: Leitor, chave BI Campo Tipo Tamanho BI Integer Nome Text 30 Localidade Text 25 Telefone Text 8

    Tabela: Requisio, chave ReqNr Campo Tipo Tamanho ReqNr Integer BI Integer Data Date

    Tabela: ReqLivros Campo Tipo Tamanho ReqNr Integer Colocao Text 6 DataDevol Date

    Desta forma, a informao fica distribuda por diferentes Tabelas. Para saber o nome da pessoa que fez uma determinada requisio, necessrio consultar, pelo menos, duas Tabelas. sempre possvel reconstituir a informao original, relacionando as tabelas. A figura ilustra o diagrama de relacionamentos entre as diferentes tabelas:

  • Pg. 33

  • Pg. 34

    7 ANEXO B Tabelas Todos os dados que so armazenados de forma permanente pelo Access, so guardados em tabelas. Cada tabela armazena dados sobre um tipo de coisa, pessoa ou relao entre coisas/pessoas. Numa tabela pode-se, por exemplo, guardar informao sobre alunos, disciplinas ou notas (que podem ser vistas como relaes entre alunos e disciplinas). As tabelas esto organizadas em linhas e colunas. Em cada linha guarda-se dados sobre um item, isto , sobre um aluno, disciplina ou nota, respectivamente para os exemplos dados. Cada coluna representa uma determinada caracterstica que est associada a todos os itens do tipo que a tabela representa. Por exemplo, numa tabela de alunos dever existir uma coluna para o nome e outra para a data de nascimento. Em linguagem de bases de dados (BD), uma linha um registo (record) e uma coluna um campo (field). possvel ter um nmero potencialmente ilimitado de registos em cada tabela, mas o nmero de campos fixo e limitado. Cada campo de uma tabela tem um tipo associado que limita o tipo de dados que l podem ser guardados. O campo "nome" da tabela de alunos ser do tipo texto e o campo "data de nascimento" ser do tipo data. Assim, no campo "nome" podero ser introduzidos caracteres alfanumricos enquanto no campo "data de nascimento" apenas podem ser guardadas datas. Ao conjunto de campos que compe uma tabela, chama-se a estrutura da tabela. O tipo determina tambm as operaes que podem ser efectuadas com valores do campo. Por exemplo, no possvel fazer uma soma que envolva um campo do tipo texto. A informao inserida numa tabela persistente. Isto , cada registo criado numa tabela imediatamente guardado no ficheiro da BD. Criao de Tabelas

    Para criar uma tabela necessrio seleccionar o separador Tables na janela de BD, clicar no boto New. Aparece ento uma caixa de dilogo que permite seleccionar a forma como a tabela ser criada: As opes disponveis so: Datasheet View [Vista de folha de dados]: o utilizador introduz dados numa matriz semelhante a uma folha de clculo e o Access procura inferir os tipos dos campos. Design View [Vista de estrutura]: definio explcita da estrutura da tabela. Table Wizard [Assistente de Tabelas]: o assistente disponibiliza um conjunto de campos pr-definidos e dividido em categorias com os quais o utilizador pode constituir a sua tabela. Import Table [Importao de Tabelas]: construo de tabelas a partir de ficheiros j existentes, por exemplo, documentos Excel ou ficheiros de texto. Link Table [Ligao de Tabelas]: possibilita que o Access tenha acesso a uma tabela de um aplicao/SGBD diferente sem ser preciso duplicar a tabela nem que os utilizadores da aplicao/SGBD original percam o acesso aos mesmos dados.

  • Pg. 35

    Embora tanto a vista de folha de dados como o assistente possam parecer mais apelativos primeira vista, a utilizao dessas opes trazem algumas limitaes e dificuldades para alm de serem especficas do Access. Assim, ser dado nfase vista de estrutura. Exemplo: Para exemplificar a criao de uma tabela supe-se que as pessoas com os dados que se seguem se inscreveram numa escola:

    Carolina Santos R. Cedofeita, 14 Porto 11-12-1979 Maria Oliveira R. Igreja, 3 Lisboa 23-3-1978 Antnio Silva Tr. Povo, 8 Moura 12-5-1979 Paulo Castro R. Flores, 50 Porto 23-4-1979 Ana Oliveira P. Municpio, 1 Moura 2-2-1979

    Como se pode ver, a organizao dos dados permite identificar facilmente a estrutura da tabela: os campos necessrios so nome, morada, localidade e data de nascimento. Note-se que nem sempre to fcil perceber a estrutura da tabela a partir dos dados. Depois de escolher a opo Design View na caixa de dilogo anterior, apresentado a seguinte janela:

    7.1.1 Definio de Campos Como explicado atrs, um campo definido por um nome (Field Name) e um tipo de dados (Data Type). O Access possibilita ainda a introduo de uma pequena descrio do contedo do campo (Description). O nome identifica o campo e possibilita aceder informao nele contida. Embora tal possa no ser evidente partida, a escolha dos nomes dos campos muito importante para facilitar a utilizao das tabelas. Ser mais difcil perceber a que diz respeito o contedo de um campo se o nome for DN do que se for Data de Nascimento. A escolha do tipo de dados feita utilizando o menu:

    O tipo de dados determina quer o tipo de informao que o campo pode armazenar, quer o espao (em bytes) que a informao ocupa. Os tipos disponveis no Access so: Text [Texto]: texto (at 255 caracteres alfanumricos). Memo: texto (at 64.000 caracteres alfanumricos).

  • Pg. 36

    Number [Nmero] : valores numricos. Date/Time [Data/Hora]: datas e horas. Currency [Moeda]: valores monetrios. AutoNumber [Numerao Automtica]: valores inteiros atribudos automaticamente pelo Access (anteriormente ao Access 97 este tipo era chamado Counter ) Yes/No [Sim/No]: valores lgicos (Booleanos), OLE object [Objecto OLE]: incluso ou ligao de desenhos, imagens e grficos (at 128 MB). Hyperlink [Hiperligao]: apontador para outro ficheiro ou URL (Uniform Resource Locator), por exemplo o endereo de uma pgina World Wide Web. A opo Lookup Wizard [Assistente de Pesquisa] no representa um tipo. Na realidade possibilita a definio de um campo e dos valores que pode tomar, ou manualmente ou a partir de outro campo, normalmente de outra tabela. Uma vantagem de atribuir tipos aos campos limitar os erros que os utilizadores podem fazer ao introduzir dados. Por exemplo, se um campo estiver definido como sendo do tipo Number no possvel introduzir letras. A escolha do tipo de dados est relacionada com as operaes que se pretende efectuar nesse campo. Quando fr necessrio efectuar operaes aritmticas com os valores de um campo, ento ser melhor utilizar o tipo Number ou Currency (este ltimo no caso de se estar a lidar com valores monetrios). Por exemplo, para que seja possvel calcular mdias, o campo que guardar notas dos alunos dever ser do tipo Number. Por outro lado, para guardar informao sobre nomes de pessoas convm usar o tipo Text. Nalguns casos a escolha poder no ser to imediata. Um exemplo comum so os campos onde se guarda nmeros de telefone. Dado que no faz sentido efectuar operaes aritmticas com esse tipo de informao podemos usar o tipo Text. Com este tipo de dados possvel efectuar a operao de concatenao, por exemplo, para acrescentar o indicativo da rede ao incio do nmero. Por outro lado, se fr usado o tipo Number, evita-se que o utilizador possa introduzir letras, dado que em Portugal os nmero de telefone so constitudos por algarismos. Exemplo: Todos os campos da tabela de alunos so do tipo Text excepto Data de Nascimento que do tipo Date/Time, como se pode ver na figura:

    Como os nomes dos campos so bvios torna-se desnecessrio introduzir qualquer descrio. Dado que o campo corrente est definido, j possvel ver na seco de baixo da janela as suas propriedades, que sero explicadas a seguir. Antes de prosseguir, grava-se a tabela (File, Save). O Access pede um nome que poder ser Alunos. 7.1.2 Definio das Propriedades dos Campos Como se pode ver na figura acima, existe um conjunto de propriedades associado a cada campo. Essas propriedades permitem refinar as caractersticas desse campo. Para cada tipo de dados as propriedades variam. Uma utilizao adequada destas propriedades diminui a possibilidade de introduo de dados errados e facilita a utilizao da BD de forma significativa.

  • Pg. 37

    Em seguida so descritas as mais importantes, todas referentes ao separador General, indicando os tipos de dados a que dizem respeito: FieldSize [Tamanho de Campo] Text: Nmero de caracteres mximo. O tamanho definido pelo Access quando se cria um campo tipo texto geralmente demasiado grande para as necessidades do utilizador. Exemplo: O tamanho dos campos Nome e Localidade da tabela Alunos ser, respectivamente 30 e 20, enquanto o do campo Morada pode ficar nos 50 que o Access preenche automaticamente. Number: Byte, Integer, Long Integer e ReplicationID (ver AutoNumber) para nmeros inteiros, e Single ou Double para nmeros reais. O tamanho de um nmero permite definir a gama de valores que so representveis. AutoNumber: Long Integer que equivalente ao mesmo tamanho para Number ou ReplicationID, sendo este ltimo necessrio apenas para BDs partilhadas, assunto que est fora do mbito deste texto. Format [Formatar] (todos os tipos excepto OLE Object) Os formatos possibilitam definir a maneira como o valor do campo vai ser visualizado e imprimido. O utilizador pode definir os seus prprios formatos ou usar formatos pr-definidos quando disponveis: Number: General Number, Currency, Fixed, Standard, Percent e Scientific. O formato Fixed permite representar valores com um nmero pr-determinado de casas decimais. O formato Scientific permite representar nmeros reais. Exemplo: O nmero "1200" no formato Scientific representado como 1.2E+3 (isto , o nmero 1.2 x 103). Date/Time: Os formatos para datas so General Date, Long Date, Medium Date e Short Date. Os formatos para tempo so: Long Time, Medium Time e Short Time. Exemplo: A data "26 de Fevereiro 1996" no formato Medium Date aparece como 26-February-96. Se fr utilizado Short Date, a data ter a forma 2/26/96 (repare que o ms aparece em primeiro lugar). Exemplo: Utilizando o formato Short Time, a hora "17h30" seria apresentada como 17:30. Exemplo: O formato do campo Data de Nascimento da tabela Alunos pode ser Medium Date dado que no necessrio saber a hora de nascimento. Input Mask [Mscara de Edio] (todos os tipos excepto Memo, AutoNumber, Yes/No e OLE Object) As mscaras de edio formatam o campo no momento da introduo ou alterao de dados de forma a tornar esse processo mais simples para o utilizador. Exemplo: A Input Mask do campo Data de Nascimento deve corresponder ao formato definido na propriedade Format, ou seja, Medium Date. Tal pode ser feito facilmente usando o assistente. Default Value [Valor predefinido] (todos excepto AutoNumber e OLE Object) Definio de um valor a ser preenchido automaticamente pelo Access quando criado um registo novo. Exemplo: Assumindo que a maior parte dos alunos so do Porto, o Default Value do campo Localidade ser "Porto". Validation Rule e Validation Text [Regra de Validao e Texto de Validao] (todos os tipos excepto AutoNumber e OLE Object) Estas propriedades permitem, respectivamente, definir uma expresso que tem que ser verificada pelos valores introduzidos no campo e o texto a mostrar na caixa de dilogo apresentada ao utilizador no caso da regra no se verificar. Exemplo:

    Validation Rule Validation Text >=0 Digite um Nmero Positivo >=0 AND ==100 Valor tem que ser zero ou maior que 100 Like "K???" Digite 4 caracteres, comeando por K =Date() Digite data no anterior de hoje

    Alguns comentrios relativos ao exemplo anterior:

  • Pg. 38

    Os textos so dados entre aspas. possvel usar caracteres de substituio (wild cards) nas regras de validao de campos de texto. ? representa "um caracter qualquer" e * representa "0, 1 ou mais caracteres quaisquer". As datas so representadas entre sinal de cardinalidade (#). Pode-se usar funes, como no caso do ltimo exemplo em que foi usada a funo Date que devolve a data de hoje. Exemplo: Dado que os alunos tm que ter pelo menos 17 anos para entrar na faculdade a regra de validao do campo Data de Nascimento ser: Year([Data de Nascimento])

  • Pg. 39

    possvel definir ordem crescente ou decrescente na coluna Sort Order. Criar um ndice com vrios campos semelhante a criar vrios ndices seguidos s com um campo, apenas com a diferena de que o nome do ndice definido na primeira linha e deixado em branco nas linhas dos outros campos. 7.1.3 Definio da Chave Em princpio, todos os registos de uma tabela sero diferentes entre si. Por esse motivo dever ser possvel identificar um campo (ou conjunto de campos) tal que conhecido o seu valor, possvel identificar de forma nica o registo correspondente. Esse campo (ou conjunto de campos) designado por chave (key). Uma tabela pode ter mais do que uma chave. Nesse caso escolhe-se uma e designa-se por chave primria (primary key). Exemplo: Numa BD que inclua campos para o nmero de Bilhete de Identidade e o nmero de contribuinte (NIF), qualquer um desses campos serve como chave. Dependendo da aplicao, escolhe-se um deles para ser a chave primria. recomendvel a definio de chaves para todas as tabelas que se cria: vo ter um papel importante no estabelecer de relacionamentos entre tabelas, possibilitando aceder a informao distribuda por diferentes tabelas. Por vezes nem mesmo todos os campos permitem identificar o registo (isto , h registos duplicados) ou no existe nenhuma chave que faa sentido na aplicao em questo. Nesse caso, acrescenta-se um campo com esse fim que, no Access, tem normalmente o tipo de dados AutoNumber. Para definir a chave da tabela, dever seleccionar o(s) campo(s) chave (clicando no selector de campo respectivo, usando a tecla CTRL no caso de mais do que um campo) e executar o comando File, Primary Key.

    Exemplo: Na tabela Alunos, dado que pode haver vrios alunos com o mesmo nome, mesma morada, mesma localidade e mesma data de nascimento, nenhum dos campos existentes serve como chave. Assim, acrescentmos um campo Nmero do tipo AutoNumber que definimos como chave primria. A tabela ficar com o seguinte aspecto: prefervel no usar como chave campos de texto com espao para muitos caracteres, como, por exemplo, campos que guardam nomes porque frequente os utilizadores introduzirem erros de difcil deteco neste tipo de campos (espaos a mais ou a menos, falta de acentuao ou maisculas em vez de minsculas e vice-versa). No caso de no haver nenhuma boa alternativa, ser melhor criar um campo cdigo do tipo AutoNumber. 7.1.4 Edio de Dados Definida a estrutura da tabela, esta est apta a guardar informao. Pode-se editar (inserir, eliminar registos ou alterar campos) directamente na tabela, apesar de ser mais apropriado efectuar estas operaes via formulrios. Para abrir a tabela executa-se o comando File, Open sendo necessrio que a tabela Alunos esteja seleccionada na janela da BD. A tabela apresentada com o aspecto de uma folha de clculo, como se pode ver na figura. Os campos esto dispostos em colunas e os registos em linhas. Os registos esto

  • Pg. 40

    ordenados pelo campo chave. O ltimo registo da tabela, marcado com no selector de registos, utilizado para inserir novos registos. Exemplo: Depois de criada, insere-se os dados na tabela Alunos:

    Note-se que o registo actual indica o nmero do registo, o que nesta tabela por acaso o mesmo valor do campo Nmero. Quando edita dados num registo, toda a informao indicada na criao da tabela utilizada: os campos so preenchidos inicialmente com os valores pr-definidos, feita a validao do tipo de dados e aplicadas as regras de validao definidas. Para o utilizador se aperceber de quando est a alterar um registo, o cone de registo corrente substitudo por um lpis. As situaes de erro do origem a caixas de dilogo, como por exemplo:

    Para eliminar um registo necessrio selecion-lo (clicando no selector de registo) e carregar na tecla Delete ou colocar o cursor em qualquer campo do registo e executar o comando Edit, Delete. 7.1.5 Alterao da Estrutura das Tabelas Depois de definir a tabela, pode em qualquer momento eliminar e alterar campos existentes, inserir campos novos ou alterar a ordem pela qual os campos esto dispostos. Para efectuar estas operaes so utilizados os processos usuais no ambiente grfico do Windows: o rato, o menu Edit e a barra de ferramentas.