curs de base de dades mysql/openoffice.org...

60
Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mdul 2: Treball amb bases de dades Antoni Salv Salv Mar 2004 Materials de Formaci

Upload: lamque

Post on 28-Mar-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de base de dadesMySQL/OpenOffice.org 1.1.0

Mòdul 2: Treball amb bases de dades

Antoni Salvà Salvà

Març 2004

Materials de Formació

Page 2: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs Base de Dades MySQL/OpenOffice.org 1.1.0© 2004 Antoni Salvà Salvà© D'aquesta edicióServei de Formació Permanent del ProfessoratDirecció General d'Ordenació, Innovació i Formació del ProfessoratConselleria d'Educació i CulturaGovern de les Illes Balears

Page 3: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Índex de contingut

1 Introducció 11.1 Què és una base de dades?..................................................................................................11.2 Què significa relacional?........................................................................................................3

2 Elements per dissenyar una base de dades.............................................................................32.1 Decisió dels camps que formen la taula principal..................................................................32.2 Definició dels tipus de camps................................................................................................6

3 Creació i definició de les taules.................................................................................................93.1 Fer una còpia de seguretat d'una base de dades................................................................173.2 Restauració d'una base de dades des d'un arxiu de còpia de seguretat............................. 183.3 Traslladar el contingut d'una taula creada amb una altra aplicació a una taula MySQL...... 203.4 Operacions amb les taules..................................................................................................24

3.4.1 Cerca de registres........................................................................................................243.4.2 Ordenar registres.........................................................................................................253.4.3 Filtrar registres.............................................................................................................26

4 Creació i definició de consultes...............................................................................................284.1 Disseny d'una consulta bàsica.............................................................................................284.2 Opcions dels camps en la definició de les consultes...........................................................32

4.2.1 Funcions sobre camps.................................................................................................334.2.2 Criteris de selecció de camps......................................................................................35

5 Traslladar dades a un document d'OpenOffice.org............................................................... 375.1 Creació d'una taula de text a partir de la vista d'una taula o d'una consulta........................375.2 Correu en sèrie....................................................................................................................39

6 Creació i disseny de formularis...............................................................................................416.1 Creació bàsica d'un formulari..............................................................................................416.2 Personalització d'un formulari .............................................................................................44

6.2.1 Quadres de combinació...............................................................................................456.2.2 Quadres de llista .........................................................................................................476.2.3 Sots-formularis.............................................................................................................506.2.4 Incorporar el formulari a l'apartat �Enllaços� del navegador de dades......................... 52

7 Creació d'informes....................................................................................................................54

Page 4: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball
Page 5: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

1 Introducció

1.1 Què és una base de dades?

Una de les eines més potents que ofereixen els ordinadors és la que ens permet la possibilitatd'emmagatzemar i cercar dades.

Una base de dades no és més que una sistemàtica per organitzar dades. Un exemple històricben clar és la famosa calaixera de Mn. Antoni Maria Alcover, la qual, des de l'any 2002 es troba al'Arxiu del Museu de Mallorca. En aquest moble s'emmagatzemen les cèdules lexicogràfiques querecolliren els col·laboradors del fundador del Diccionari Alcover-Moll. En una primera fase, esvaren recollir unes 700.000 cèdules lexicogràfiques, que es varen redactar en uns fulls de paper ique van esser ordenades alfabèticament dins una calaixera de 33 calaixos. Quan es va traslladara Barcelona, a l'Institut d'Estudis Catalans, el seu nombre havia augmentat a 900.000 cèdules.Després d'haver estat traslladada de nou a Mallorca, com descriu en Francesc de Borja Moll,

�(...) Amb la feinada col·lectiva d'aquells anys, el cúmul de materials lexicogràfics va augmentarfins a més de tres milions de cèdules, i en lloc de l'única històrica calaixera primitiva, de 33calaixos, van quedar plenes quatre calaixeres amb un total de 120 calaixos. Un equip de quatresenyoretes dirigit per Joan Riutort, el criat i administrador de Mn. Alcover, va treballar cinc anysen l'ordenació alfabètica d'aquest gran cedulari.�

Si fem servir aquest exemple, en suport informàtic, el conjunt de la calaixera de Mn. Alcover iels procediments de la seva gestió és una base de dades de cèdules lexicogràfiques, de formaque cada ítem (escrita en una fitxa, targeta o full de paper) és un registre. Cada una de lesinformacions que definex cada un dels registres és un camp. Per exemple, les informacions quepodrien aparèixer a una cèdula lexicogràfica són el lema, equivalència, text de la citació literària,data de la citació, obra literària i autor. En una base de dades informatitzada, diríem que cadaregistre ve definit per cinc camps, cada un d'ells corresponent a cada una de les informacionsanteriors. L'agrupació de tots els registres que venen descrits pels mateixos camps forma unataula, de forma que, com veurem, direm que una taula es defineix pels camps i els tipus de campsque defineixen cada un dels registres.

Podem establir la següent comparació entre els sistemes de gestió d'informació informatitzats(bases de dades) i un fitxer clàssic:

Autor: Antoni Salvà Salvà 1

Page 6: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Base de dades informàtica Fitxer clàssic

Taules de la base de dades Conjunt de fitxes amb la mateixa informació

Registres Fitxes

Camps: Ítems d'informació

Els avantatges que proporciona el suport informàtic en la gestió de les dades es troben en lareducció de l'espai físic d'emmagatzemament dels ítems, en la facilitat de la seva duplicació i de laposta en disposició als usuaris de les dades mitjançant la interconnexió d'ordinadors en una xarxalocal o en la Internet, i, sobretot, en l'automatització dels procediments d'ordenació i selecció deregistres que es volen bestreure. La tasca d'ordenació alfabètica dels tres milions de registres dela calaixera de Mn. Alcover s'hauria pogut realitzar, sense cap error, en un període de temps quees pot comptar en segons en comptes de 5 anys! De fet, un dels motius pels quals els primersginys informàtics varen rebre el nom d'�ordinador� va ser, precisament, per la potència que ofereixaquesta possibilitat.

Les primeres aplicacions que treballaven amb dades desaven les dades per als programes aarxius i feien servir indexos per cercar dins d'aquests arxius elements de dades particulars.Aquests tipus de programes no funcionen molt bé en un entorn d'ordenadors connectats en xarxa,ja que apareixen problemes quan diferents ordinadors intenten accedir a les mateixes dades deforma simultània, especialment quan es tracta de realitzar una operació d'actualització. Aquestadificultat i el fet de que cada programa de gestió de bases de dades tingués una estructuradistinta per a les taules i una sintaxi de comandaments específica va promoure la creació debases de dades relacionals que tinguessin un bon funcionament en entorns de xarxa.

Autor: Antoni Salvà Salvà 2

Page 7: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

1.2 Què significa relacional?

Les bases de dades en format informàtic proporcionen moltes possibilitats. En una mateixabase de dades podem tenir distintes taules relacionades entre si per camps de contingut comú, deforma que, amb la definició d'una consulta podem bestreure informació combinada d'una o méstaules. Dels sistemes de bases de dades que permeten aquesta característica se'n diuenrelacionals.

Seguint l'exemple anterior, imagineu que tenim una taula addicional formada per registres quedescriuen cada un dels autors de les citacions literàries de les cèdules lexicogràfiques. Enaquests registres hi apareixerien, per exemple, els camps del nom de l'autor, l'any de naixament,el nom del corrent literari al que pertany,... Si aquesta taula, formada per cada uns dels registresaixí descrits, fos, físicament, una col·lecció de fitxes o targetes a un calaix, seria una feinaformidable respondre a la següent qüestió: fes un llistat de totes les cèdules lexicogràfiques quecontenen una citació del segle XVII i en la qual hi aparegui el nom de l'autor, la seva data denaixement i la font de la citació. Ordena-les, per la data de citació. Caldria revisar, una a una,totes les cèdules, seleccionar aquelles que tenen una data de citació entre el 1 de gener de 1700 iel 31 de desembre de 1799, anotar el lema, nom de l'autor, nom de l'obra i, llavors, ordenar lallista per data de citació.

Aquesta operació, com veurem en el disseny de consultes a l'apartat 5.1, es realitzaria de formamolt ràpida amb una base de dades informatitzada. Si les cèdules lexicogràfiques són registresd'una taula (per exemple, la taula �paraules�) i la relació d'autors són registres d'una altra taula (lataula �autors�) i ambdues taules tenen en comú el camp �nom de l'autor�, el programa de base dedades pot generar un llistat en base a la definició d'una consulta amb la informació combinada detotes dues taules realitzant el mateix procediment que farien els pacients assistents de'n Francescde Borja Moll, però de forma automàtica, molt més ràpida i, a més, sense errors. Aquesta i d'altresoperacions les realitzarem al llarg d'aquest tutorial.

2 Elements per dissenyar una base de dades2.1 Decisió dels camps que formen la taula principal

Els programaris de gestió de base de dades permeten la construcció de bases de dades amida. Atès l�ampli ventall de possibilitats, perquè la base de dades sigui efectiva ha de facilitar lafeina i superar les limitacions que té el sistema manual de registre de la informació. La qüestiómés delicada en el treball amb bases de dades es troba en el disseny inicial de les taules ons'emmagatzemaran els registres. Per aquest motiu i abans d�acumular informacions, és moltimportant fer un plantejament clar que hauria d�incloure, d�entrada, els següents punts:

1. Què pretenem amb aquesta base de dades?

2. Quins són els ítems que volem enregistrar i quina informació (camp clau) o informacions(camps claus combinats) els fa distingibles l�un de l�altre?

3. Quines altres informacions (camps) que defineixen cada ítem ens interessarà incloure?

4. Quin tipus de llistats i/o informes ens interessarà extreure d�aquestes dades?

Mereix un cert esment l'elecció del camp clau de la taula. El camp clau és aquell que permetidentificar de forma inequívoca un registre dins de la base de dades. L'efecte de tenir definit uncamp clau en una taula és que quan s'hi vol introduir un nou registre que té el mateix valor delcamp clau, la base de dades ens dóna un error de �violació de clau�, que ens impedeix queaquest registre s'incorpori a la taula. Així, la definició d'un camp clau evita que es puguin introduirregistres amb el valor del camp clau duplicats dins de la taula. A les bases de dades MySQL, és

Autor: Antoni Salvà Salvà 3

Page 8: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

obligatòria la inclusió d'un camp clau en la definició de la taula. Com veurem, aquest camp claupot ser únic (un sol camp) o combinat (dos o més camps).

Així, per exemple, si pensam en una llista de noms de persones, en la qual per a cada persona(registre) hi apareix el seu DNI, un nom, un primer llinatge i un segon llinatge (per tant, un campper al DNI, un segon camp per al nom, un tercer camp per al primer llinatge i un quart camp per alsegon llinatge), i ens demanam quin és el camp més adient per definir-lo com a clau, veim que ésperfectament possible que dues persones tinguin el mateix nom; per tant, no seria una bonaelecció escollir el camp �nom� com a camp clau perquè ens impediria que a la llista tinguéssim,per exemple, en �Joan Cladera Fornari� i en �Joan Ferrer Mut�. Ens passaria el mateix siescollíssim qualsevol dels dos camps de llinatges. La solució, òbviament, estaria en definir elcamp �DNI� com a camp clau. Atès que aquest és un número distint per a cada persona,permetria que a la llista es relacionassin totes les persones distintes i no hi hauria la possibilitat detenir un registre duplicat de cap persona.

Hem esmentat que hi ha la possibilitat de cercar una combinació de camps que defineixen unaclau. Així, per a la llista de noms d'exemple que hem esmentat, si no disposam d'un sol camp quefaci distingibles els registres, com el DNI, podem pensar que és poc probable (tot i que noimpossible) que hi hagi dues persones amb el nom i els dos llinatges idèntics. En aquest cas éspossible definir la combinació d'aquests tres camps com a camps clau. Així, els noms de �JoanCladera Fornari� i �Joan Ferrer Mut� serien identificats com a registres distints, ja que, tot icoincidir en un camp (el camp �Nom�), són distints per als camps �Llinatge1� i �Llinatge2�.

També, com veurem en el disseny de les taules, és possible assignar com a camp clau uncamp del tipus autonumèric. Si al disseny de la taula es defineix com a camp clau un campd'aquest tipus, cada cop que entrem un registre se li assignarà a aquest camp el valor d'unnúmero de forma incremental: al primer registre, el número �1�, al segon registre, el número �2� iaixí successivament. És aquesta assignació la que fa que els registres siguin, llavors, distingibles.

El disseny de les taules a les bases de dades pot ampliar-se i millorar-se, encara que estenguin registres desats. No obstant això, ha d'evitar-se modificar el camp clau o eliminar campsque poden comportar la pèrdua d�informació i tenir esment a la possibilitat que els formularis, lesconsultes i els informes que s�hagin creat en base a aquestes taules no siguin, llavors, operatius.

Al llarg d'aquest curs creareu una base de dades al servidor MySQL local que faceu servir idefinireu amb OpenOffice.org els objectes que en formaren part (taules i consultes) a mida querealitzau les activitats proposades. A més, per veure com es poden fer els plantejamentsnecessaris per crear una taula d'una base de dades i aprendre a treballar-hi, al llarg d'aquesttutorial en crearem una a mena d�exemple a partir del plantejament que es descriu tot seguit.Aquesta base de dades, que tendreu al vostre servidor MySQL i que podreu recuperar de formacompleta dels arxius de pràctiques del curs, la farem servir també per realitzar exercicis de gestióde taules, elaboració de consultes, formularis d'entrada i consulta de registres, i informesimpresos.

Activitat 1

Considerem el propòsit següent per dissenyar una base de dades. En un centreescolar un o una docent és el/la responsable de l�equipament audiovisual. Lestasques de gestió que se li encomanen podrien ser:

1. Portar al dia l�inventari de l�equipament.

Autor: Antoni Salvà Salvà 4

Page 9: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

2. Mantenir-ne actualitzada la ubicació i el professorat que el fa servir.

3. Portar el seguiment de les reparacions.

4. Elaborar una memòria a final del curs de l'ús d'aquests recursos al centre, perjustificar la sol·licitud d'adquisició de nou material.

D�entrada, per tant, partirem d�aquest propòsit. És clar que els ítems que ensinteressarà relacionar són els distints aparells audiovisuals.

Quina informació fa distingible un aparell d�un altre? Aquí convé pensar unamica. És clar que ni la marca ni el model són informacions úniques per cadaaparell. Seria perfectament possible tenir-ne més d�un. Podria pensar-se que elnúmero de sèrie és únic per a cada aparell, però pot no estar prou clar o visibleperquè sigui pràctic el seu ús. En molts casos, per tant, és necessariproporcionar una identificació exclusiva a un ítem per poder-lo distingir d�un altre.Això se sol resoldre mitjançant l�assignació d�un número identificatiu, que enaquest cas seria el camp clau. Veurem que és possible que aquest número desèrie sigui assignat automàticament per part del programa.

En tercer lloc ens cal saber quines informacions (camps) descriuran cadaaparell audiovisual, és a dir, cada registre. És necessari posar les informacionsque pensem que puguin ésser d�interès per al propòsit que ens hem plantejat.Aquí cal tenir en compte que posar un excés d�informacions pot fer tediosa latasca de manteniment de la base de dades, però tenir-la minsa també és undefecte, perquè pot limitar-ne, llavors, la utilitat. Un cop creada la base de dades,és possible afegir o eliminar camps en el disseny de la taula. Afegir camps enuna taula ja creada que té un contingut comporta la tasca d�haver d�incorporaraquestes informacions extra a tots els registres.

Per al propòsit que ens hem marcat, les informacions que podrien incorporar-seserien les següents:

Camp 1. Número identificatiu (camp clau). Veurem com el pot assignarautomàticament el programa, tot i que, per exemple, es podria introduir unnúmero de referència que es podria correspondre, per exemple, amb el del'inventari del centre.

Camp 2. Marca del fabricant.

Camp 3. Model.

Camp 4. Número de sèrie del fabricant.

Camp 5. Tipus d'equipament: imatge, so, imatge i so, multimèdia.

Camp 6. Prestació: ràdio, radiocassette, radiocassette i CD, CD, DVD, VHS,cassett, giradiscos, televisor, vídeo Hi-8, vídeo Super 8, càmera fotogràficapel·lícula 36 mm, càmera fotogràfica digital.

Autor: Antoni Salvà Salvà 5

Page 10: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Camp 7. Disponibilitat: les possibilitats podrien ser: disponible, assignat a unaactivitat, en reparació, pendent de reparació.

Camp 8. Data de disponibilitat.

Camp 9. Localització: aula 1, aula 2, ..., biblioteca, sala d'audiovisuals (engeneral les dependències on es podrien trobar aquests equips).

Camp 10. Persona responsable. Aquí hi hauria de figurar el nom delresponsable de l'equipament audiovisual o del professor que el faci servir sil'equipament es troba assignat a una activitat. Els noms d'aquestes personeshaurien de seleccionar-se entre el personal docent del centre.

Camp 11. Origen de l�equipament: Dotació del MEC, dotació de la Conselleriad�Educació i Cultura, adquisió, donació.

Camp 12. Data d�alta de l�equipament al centre.

Camp 13. Cost de l�equipament, en el cas que aquest sigui una adquisició.

Examinau aquest exemple i raonau sobre la utilitat del disseny d'aquesta taulaen la base de dades segons el propòsit que s'ha plantejat.

2.2 Definició dels tipus de camps

Les informacions dels camps poden ser obertes o correspondre a un mínim d'alternatives. Perexemple, un camp que descriu un número de sèrie d'un aparell ha d'ésser obert, ja que l'usuari, apriori, no disposa d'una previsió de quins són els possibles números amb els quals es pot trobar.En canvi, com hem vist a l'activitat anterior, un camp que descriu la disponibilitat d'un objectehauria de tenir un nombre més limitat de possibilitats (al nostre exemple són �disponible�,�assignat a una activitat�, �en reparació�, �pendent de reparació�). Parlarem, per tant, de campsamb informacions obertes (aquells en els quals el contingut o valor del camp és proveït per partde l'usuari de la base de dades que enregistra les dades) i camps amb informacions tancades (enels quals l'usuari de la base de dades que enregistra les dades ha de seleccionar els valorspossibles d'una llista). D'acord amb aquest criteri, els camps que s�han relacionat podríemclassificar-los, inicialment, d'acord amb aquests dos tipus distints:

Camps amb informacions obertes. Els 2n, 3r, 4t, 8è, 12è i 13è de l'exemple del'activitat d'introducció 1. En aquests es teclegen directament les informacionsnecessàries que descriuen cada registre. En aquests casos és necessari tenir curad�escriure de la mateixa forma els continguts dels camps en el cas que es repeteixin,amb l'objectiu de facilitar l'elaboració de llistes ordenades i, com veurem, de consultesper tal de relacionar taules que comparteixen camps amb contingut comú. Perexemple, si al centre hi ha diversos aparells de la marca �Sony�, el programa potreconèixer, com a valors distints del camp �Model� les informacions �Sony�, �Sonycorporation� o �Sony Co.� i els llistarà com a aparells de marca distinta.

Camps amb informacions tancades. Els 5è, 6è, 7è, 9è, 10è i 11è de l'exemple del'activitat d'introducció 1 poden tenir només les informacions possibles que s'indiquenper a cada camp. Aquestes informacions possibles hauran d�enregistrar-se en unataula annexa, la qual cosa facilita també la possibilitat d�afegir-ne d�altres o modificar

Autor: Antoni Salvà Salvà 6

Page 11: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

les actuals. Això és especialment útil si interessa que els continguts d�un camp haginde seleccionar-se d'entre uns valors possibles, la qual cosa facilita poder portar aterme posteriorment classificacions i filtrats de dades.

Veurem que en establir la taula de dades s�ha d�especificar el tipus de camp, el qual depèn dela informació que conté. A MySQL es poden definir fins a 36 tipus de camps distints, els qualsadmeten diversos modificadors. Alguns d'aquests modificadors es poden introduir des de l'entorngràfic (com el format i el valor per defecte). D'altres, com veurem, hauran de comportar l'execuciód'una instrucció MySQL que es podrà llençar des del menú d'opcions del navegador de dadesd'OpenOffice.org. De forma general els tipus de camps poden agrupar-se en tres tipus distints:numèrics, de data/hora i de cadenes alfanumèriques. Als efectes d'aquest curs, veurem elssegüents tipus específics:

De text de longitud variable (text [ varchar ]). Contenen fins a 50 caràctersalfanumèrics, és a dir, el seu contingut admet números i lletres. En entrar-hi números,no es possible fer càlculs amb aquests.

Numèrics (Número [ numeric ]). Contenen números amb els quals hom pot operar.Si els números són sencers o han de tenir números decimals s'han d'especificar tipusde camps distints ja que, en aquest darrer cas, caldrà assenyalar directament les xifresdecimals que volguem que tingui el camp.

Memo (Memò [ text ]). Són camps on es poden introduir frases senceres i petitstextos (fins a 65535 caràcters). No és permesa la realització d'ordenacions amb elcontingut d�aquest camp. Són útils per enregistrar de forma lliure observacions ianotacions d'un camp particular.

Data/Hora (Data [ date ]). Dates i hores. En entrar aquesta informació en un campd�aquest tipus és possible realitzar operacions de càlcul amb aquests valors.

Sí/No (Sí/No [ bit ]). Permet d�introduir una casella de verificació, en el cas que elque es vulgui és entrar una informació que només tengui contingut afirmatiu o negatiu.En seleccionar aquest tipus de camp, vos apareixerà en la definició del camp com atinyint, un format més avançat de cinc caràcters en el que 0 és el valor fals i 1(127) veritat. Això no afecta l'ús que en fareu.

Imatge (Imatge [ blob ]). Són objectes gràfics que s'incrusten o vinculen d'acordamb aquest protocol de bescanvi d'arxius entre diversos programes. Per exemple, sitenim uns arxius d'imatge d'una fotografia d'un alumne o alumna i es crea una base dedades dels estudiants d'una aula, es pot usar un camp d'aquest tipus que apuntarà al'arxiu d'imatge que correspon a un registre determinat. Als efectes d'aquest curs, notreballarem amb aquest tipus de camps.

Activitat 2

Assignarem el tipus de camps als camps que hem definit a l'activitat anterior pera la base de dades d'exemple, d'acord amb les definicions anteriors. Acontinuació, se presenta l'assignació que es fa servir en l'esmentada base dedades. Revisau-la.

Autor: Antoni Salvà Salvà 7

Page 12: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Camp 1. Número identificatiu (camp clau). L'establirem com a autonumèric, deforma que el valor del camp es vagi incrementant de forma automàtica cadavegada que s'insereix un nou registre (si aquest número identificatiu s'assignàsmanualment, es tractaria d'un camp obert de tipus numèric o text).

Camp 2. Marca del fabricant. Camp obert. Tipus: text.

Camp 3. Model. Camp obert. Tipus: text.

Camp 4. Número de sèrie del fabricant. Camp obert. Tipus text. (Notau que,encara que sigui un número, no caldrà fer-ne càlculs, a més d'aquesta forma éspossible entrar un caràcter que no sigui numèric).

Camp 5. Tipus d'equipament. Camp tancat. Tipus: text.

Camp 6. Prestació. Camp tancat. Tipus: text.

Camp 7. Disponibilitat. Camp tancat. Tipus: text.

Camp 8. Data de disponibilitat. Camp obert. Tipus: data/hora.

Camp 9. Localització. Camp tancat. Tipus: text.

Camp 10. Persona responsable. Camp tancat. Tipus numèric si s'assigna unnúmero a cada professor o bé si es fa servir el DNI. Això evitarà el problema dela coincidència de llinatges.

Camp 11. Origen de l�equipament. Camp tancat: Tipus: text.

Camp 12. Data d�alta de l�equipament. Camp obert. Tipus: data/hora.

Camp 13. Cost de l�equipament, en el cas que aquest hagi estat adquirit.Numèric.

Quines alternatives de tipus de camp hi hauria per als camps que s'han definiten aquesta base de dades d'exemple? Quins avantatges o inconvenientstendrien?

Activitat d'entrega obligada 1

Feis un plantejament com el de l'activitat d'introducció 1 per fer una base dedades que respongui a un propòsit aplicable a la vostra tasca docent o de gestióescolar que portau a terme al vostre centre. Descriviu, llavors, quins campshaurien de descriure els ítems que voleu relacionar a la taula principal de lavostra base de dades. Serà d'acord amb aquest disseny que creareu una basede dades en aquest curs. Redactau-ho i deseu-lo amb el format d'un arxiu detext, de document de Word (.doc) o OpenOffice.org (.sxw), amb el nom <el vostrellinatge>_1

Autor: Antoni Salvà Salvà 8

Page 13: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Assignau llavors a cada camp de la vostra base de dades el tipus de camp iassenyalau si es tracta d'un camp de contingut obert o tancat. Descriviul'assignació dels camps en un document amb el nom <el vostre llinatge>_1 itrameteu-lo a la tutoria. Esperau els comentaris del vostre tutor o tutora abans defer l'Activitat d'entrega obligada 2.

3 Creació i definició de les taulesVeurem la forma de definir una taula tot fent servir OpenOffice.org com a visor de la base de

dades que tinguem creada al servidor MySQL de l'ordinador local a la qual tingueu accés (per alnostre exemple es tractarà de la base de dades amb el nom curs_1 que, a la definició de font dedades d'OpenOffice.org rep el nom de curs_1_antoni).

Obriu un document en blanc d'OpenOffice.org (pot ésser un document de text, una pàgina htmlo una presentació). Aneu a �Visualitza/Navegador de dades� o premeu la tecla F4. Veureu que a lapart superior del document s'obre un nou marc que farem servir a partir d'ara com a finestra degestió de les dades disponibles per a les aplicacions d'OpenOffice.org:

A la columna de l'esquerra apareixen els noms de les fonts de dades d'OpenOffice.org, quecorresponen a les bases de dades disponibles al sistema que heu incorporat amb el procedimentque es descriu al mòdul 1 d'aquest curs (Instal·lació i configuració). A la columna de la dretapodrem veure, en forma tabular, els continguts de la taula o consulta que seleccionem. Atès queno s'ha seleccionat cap taula encara, totes les opcions de selecció i edició de registres de la taulao registre apareixen deshabilitades (en gris). Anem a crear les taules que contendran elspossibles valors dels camps de contingut tancat, i en veurem el procediment general.

Feu clic al requadre que es troba a l'esquerra de l'entrada de la base de dades en la qualcrearem la taula. Veureu com es despleguen els distints objectes de la base de dadesdisponibles: enllaços, consultes i taules. Per crear una taula nova, feu clic amb el botó de ladreta del ratolí a sobre de �Taules� i, del menú que apareix, seleccioneu �Nou disseny de taula�.S'obre una nova finestra amb el nom �Disseny de la taula: nom de la base de dades�:

Autor: Antoni Salvà Salvà 9

Page 14: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

És en aquesta finestra en la que definirem els camps i els tipus de camp per a la taula quevolem incorporar a la base de dades.

Per defecte, el programa assigna el nom �Taula1� a aquesta taula. Veurem que, en volerguardar-ne la definició, se'n podrà modificar el nom. Els elements que s'han d'incorporar aldisseny de la taula son:

1. Nom del camp. És el que identifica la informació que es descriurà per a aquest apartat. Tot ique es pot escriure el que es vulgui, és molt recomanable, a efectes de poder bescanviar lainformació en altres formats o dirigir-la a altres aplicacions, no superar els vuit caràcters si éspossible i no fer servir caràcters no alfanumèrics com [ ] { } < > � ,; * - _ & % $ # @ | \ º ª,lletres amb accents, dièresi i combinacions de majúscules i minúscules. Quan es vol donar unnom de camp amb dues paraules, és una bona solució separar-les amb un guió baix: perexemple ubicacio_provisional.

2. Tipus de camp. Si no s�assenyala res, el programa estableix per defecte que la informació quecorrespondrà a aquest camp serà un text de longitud variable, text [ varchar ], encaraque sigui un número o una data. És molt recomanable definir el tipus de dades, especialmentcom a número o data, per tal de deixar oberta la possibilitat de realitzar operacions ambaquestes informacions, si s�escau, més endavant. Per establir el tipus de dades, en fer clicsobre el quadre, es desplega una llista amb els tipus de camp que preveu el programa, de laqual se n'ha de seleccionar un.

3. Descripció. El contingut d'aquesta columna, que pot quedar en blanc, és un text de formatlliure amb què podem anotar qualsevol indicació que entenem que sigui útil sobre el camp obé que pugui tenir una funció de recordatori.

4. A �Propietats del camp�, a la part inferior de la finestra, podem proporcionar definicionsaccessòries sobre cada un dels camps que en aquest moment s'han seleccionat. El queconvé sempre és revisar si les que apareixen per defecte són o no adients. Són les següents:

1. �Es necessita una entrada� (amb el valor possible sí/no) permet de definir si, per a cadaregistre, és obligatori que aquest camp tingui algun valor.

2. �Longitud� permet de limitar el nombre de caràcters que tendrà el camp a un valor màxim.

Autor: Antoni Salvà Salvà 10

Page 15: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

3. A �valor per defecte� és possible establir un valor que tendrà el camp si no n'especificam capde concret. Si la primera propietat �Es necessita una entrada� està definida a �Sí�, ésrecomanable posar un valor per defecte.

4. �Exemple de format� permet de definir una màscara per proporcionar un format específic alvalor del camp. La màscara es pot definir directament tot fent servir un format específic pera la definició de màscares, o bé seleccionar-la en fer clic al botó d'organitzador. Als efectesd'aquest curs, no farem servir aquesta opció, de la qual en podreu trobar informació al'ajuda d'OpenOffice.org.

Un aspecte important serà decidir quin dels camps és la clau primària de la taula (o quins, siescollim fer servir una clau combinada, vegeu la pàgina 3 per recordar aquest concepte). Abansde desar la definició de la taula, cal establir la clau primària de la taula. Veurem el procediment detot plegat a l'activitat següent:

Activitat 3

Anem a veure el procediment per a la definició d'una taula que contendrà lesopcions del camp en el qual s'especificarà el tipus de material audiovisual. A lataula principal, aquest serà un camp de contingut tancat, per la qual cosa lesdistintes opcions s'escolliran d'una llista a un formulari d'entrada de dadesd'acord amb els valors possibles que hem escollit a l'activitat 1.

Aquests tipus de taules han de tenir un únic camp tipus text, que es potanomenar amb el mateix nom de la taula; per tant cream el camp tipus_mat dela taula del mateix nom, per a la definició de tipus de material audiovisual.

A la primera fila, a �Nom del camp�, introduïu �tipus_mat�. A la columna �Tipus decamp�, feu clic al contingut del quadre i, llavors, al botó de la dreta. Es desplegaràuna llista amb els distints tipus de camp. Per a aquest camp, tipus text, de totsels tipus de camp disponibles, podeu seleccionar �Text Text [ varchar ]�:

Si voleu, podeu incorporar alguna informació del tipus de recordatori a�Descripció�. Abans de desar la definició de taula, cal definir la clau primària. Enaquest cas, l'únic camp de la taula serà la clau primària. Per definir-la, feu clicamb el botó de la dreta al requadre que hi ha a l'esquerra de la primera columnai, del menú que s'obre, seleccioneu �Clau primària�:

Autor: Antoni Salvà Salvà 11

Page 16: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Abans de desar la definició de la taula, aquest és l'aspecte que tendrà la finestrade disseny de la taula. Observau que el camp que heu definit com a clau primàriaapareix marcat:

Per establir una clau combinada, formada per diversos camps s'ha de procedirde la següent forma: a la finestra de disseny de la taula, manteniu pritjada la teclaCtrl i amb el cursor feis clic sobre els camps que voleu que en formin part.Llavors, en tenir-los seleccionats, feu clic amb el botó de la dreta i a la finestrad'opcions que es desplega, escolliu �Clau primària�. Veureu, llavors, que tots elscamps apareixen marcats amb la clau.

Per desar la definició de la taula, feu clic a �Fitxer/desa� o �Fixer/Anomena i desa�per poder posar un nom a la taula (o feu clic als botons o ). Tancau lafinestra i feu clic, al navegador de dades, al punt d'intersecció de �Taules�. Veureuque s'ha afegit a la base de dades la taula tipus_mat. Si feu doble clic sobre laicona de �Taules� el sistema vos demanarà la contrasenya d'accés i, un copvalidats, al marc de la dreta trobareu la finestra d'edició a punt per poder inserirregistres:

Autor: Antoni Salvà Salvà 12

Page 17: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Per inserir les dades de tipus_mat feu clic al quadre d'inserció, i teclegeu elvalor d'aquest camp per al primer registre. Veureu que als requadres del'esquerra canvia la icona, amb els significats següents:

Podeu prémer la tecla �Enter� per inserir un nou registre, o bé fer clic a lacasella d'inserció d'un nou registre. Un cop inserits els valors, la taula mostra elsegüent aspecte:

Com veieu, a la part inferior de la pàgina vos assenyala quants registres hi ha ala taula i quin és el número d'ordre del registre seleccionat.

Quan hagueu entrat registres a una taula, teniu en compte que cal que el botó�Edita les dades� de la barra de menú superior estigui activat (pres) per poderintroduir, actualitzar o suprimir registres de la taula.

Autor: Antoni Salvà Salvà 13

Edició del registre

Posició d'inserció d'un nou registre

Posició d'inserció d'un nou registre

Registre seleccionat

Page 18: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Al llarg del procés de creació d'una taula, aquest botó es troba pres per defecte.En cas contrari, la taula es mostra només en mode de lectura i el botó d'addicióde nous registres estarà deshabilitat i apareixerà com a .

Per modificar el disseny d'una taula, s'ha de seleccionar al navegador de dades i, en fer clicamb el botó de la dreta, seleccionar �Edita taula�. Quan heu realitzat les modificacions de dissenyadients, cal desar de nou la taula.

Entre les opcions que es despleguen en fer clic amb el botó de la dreta del ratolí sobre el nomde la taula també trobareu �Copia/Enganxa� de forma que podeu crear un duplicat de la taula, elqual haureu de desar amb un altre nom. El duplicat es pot fer conservant les dades de la taulaoriginal, només el disseny o àmbdues coses.

Un cop creades les taules on es defineixen les opcions que volem que apareiguin en la llista alscamps d�informacions tancades, es pot crear la taula principal, que contindrà els registres delsaparells audiovisuals i que anomenarem audiovisual. El procediment és el mateix que el ques'ha seguit per crear la taula tipus_mat. La finestra de disseny d'aquesta taula tindria el següentaspecte:

Es pot establir que el camp ident sigui un numèric amb que vagi augmentant de formaautomàtica cada cop que s'introdueixi un nou registre (la propietat AUTO_INCREMENT). Si el visorde dades d'OpenOffice.org de la vostra versió d'1.1 no incorpora, malauradament, la possibilitatd'establir en l'entorn gràfic aquesta propietat haurem d'editar les propietats de la taula amb elMySQL Control Center o bé introduir des del navegador de dades la instrucció en el llenguatgeSQL.

SQL (�Structured Query Language� o llenguatge estructurat de consultes) ésuna col·lecció de comandaments estandaritzada per a la gestió de bases dedades relacionals, no només MySQL sinó també Oracle, Sybase, Informix, MSSQL Server, MSAccess i PostGre. Els entorns gràfics de gestió de base dedades el que fan realment és generar instruccions SQL que són les que es

Autor: Antoni Salvà Salvà 14

Page 19: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

trameten al servidor.

El més ràpid serà introduir directament el comandament SQL. A la finestra de navegador dedades, fem clic amb el botó de la dreta a �Taules� de la base de dades �curs_1_antoni� i, almenú que es desplega seleccionam SQL...:

S'obre una finestra per introduir un comandament SQL. Perquè el camp numèric ident de lataula audiovisual el modifiquem a numèric però amb la propietat d'autoincrement automàtic,escriviu a �Comanda a executar� la següent instrucció:

ALTER TABLE audiovisual MODIFY ident INTEGER AUTO_INCREMENT

I premeu el botó executa. Vos trobareu amb:

Autor: Antoni Salvà Salvà 15

Page 20: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

A la finestra �Estat� vos trobareu amb la informació sobre l'execució de la comanda. Feu clic a�Tanca� per tornar a la finestra del navegador de dades.

A qualsevol dels objectes de la base de dades que apareixen al navegador dedades podeu enviar instruccions SQL quan aquestes no es troben disponiblesdes de l'entorn gràfic. Si el comandament SQL és per a una operació sobre unabase de dades sencera, aquest es pot introduir des del MySQL CC o bé des de lalínia de comandaments de MySQL (execució del comandament mysql al directoriC:\mysql\bin a una finestra MS DOS a Windows o execució de mysql a unaconsola de Linux)

En aquest moment teniu ja fet el disseny de les taules i, a la finestra d'edició, podeu anarintroduïnt els valors directament. No obstant això, si alguns dels camps són de contingut tancat,caldrà fer servir un formulari per tal de poder seleccionar els valors que hem definit per a aquestcamp en les taules auxiliars. A més, és molt més adient treballar sobre un formulari quedirectament sobre les taules. Ho veurem més endavant en la creació i edició de formularis. Vegeutambé, a la pàgina 18 el procediment per recuperar el contingut de taules creades amb altresaplicacions (MS Access, MS Excel o un full de càlcul Calc d'OpenOffice.org) a una taula d'unabase de dades MySQL.

3.1 Fer una còpia de seguretat d'una base de dades

Quan s'ha creat el disseny bàsic d'una base de dades, es tracta de proporcionar les dades delsdistints ítems i crear els objectes que permetran accedir a la informació (consultes) i els vinculatsa les aplicacions que proporcionaran la interfície amb l'usuari (formularis i informes). Com a totesles aplicacions informàtiques, interessarà disposar d'una còpia de seguretat en cas d'una falla delsistema, sigui física o de sistema operatiu. Als efectes d'aquest curs, les còpies de seguretat delvostre projecte de bases de dades seran els arxius que haureu d'enviar per a les activitatsd'entrega obligatòria. Veureu el procediment per crear aquestes còpies de seguretat i la forma derecuperar-les.

MySQL disposa d'un programa anomenad mysqldump que crea un arxiu de comandamentsSQL de forma que l'estructura i el contingut d'una base de dades pot ésser recuperada a unservidor MySQL d'una altra màquina o a una nova instal·lació amb l'entrada d'un comandamentSQL.

Per exemple, suposeu que voleu crear un arxiu de còpia de seguretat copia_prova.sql a lavostra carpeta personal d'una base de dades anomenada prova de la qual en sou propietaris(l'extensió .sql no és obligatòria, però així ens recorda que es tracta d'un arxiu de text amb unseguit d'instruccions SQL). A nom_usuari heu de posar el vostre nom d'usuari al servidor MySQL.El modificador --opt vos permetrà fer servir aquesta còpia per actualitzar una base de dadesexistent amb el mateix nom.

� A Windows, obriu una finestra de MSDOS i aneu al directori c:\mysql\bin. Si la vostracarpeta personal és H:\Personal (podeu posar qualsevol directori al qual tingueuaccés) executau:

mysqldump --opt -u nom_usuari -p -r H:\Personal\copia_prova.sql prova

� A Linux, obriu una consola. Executau:

mysqldump –-opt -u nom_usuari -p -r copia_prova.sql prova

Autor: Antoni Salvà Salvà 16

Page 21: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Haureu d'introduir la vostra contrasenya d'usuari a la base de dades i al directori de destinacióes crea l'arxiu copia_prova.sql. Si obriu amb un editor de text l'arxiu de la còpia de seguretatveureu una llista de comandaments SQL que, en ésser executats a un servidor MySQL,recuperarà l'estructura i el contingut de la base de dades.

Si la base de dades és molt voluminosa, aquest arxiu es pot comprimir amb molta eficàcia (alcap i a la fi és només un arxiu de text) amb qualsevol dels programes de compressió d'arxius.

3.2 Restauració d'una base de dades des d'un arxiu de còpia de seguretat

Vegem el procediment de restauració d'una base de dades a partir d'un arxiu de còpia deseguretat com el que es crea al punt anterior.

Perquè l'usuari antoni pugui recuperar a un servidor MySQL la base de dades prova de l'arxiude còpia copia_prova.sql, cal fer el següent:

� Si al servidor MySQL en el qual es vol recuperar la base de dades no n'existeix cap ambel nom prova per a l'usuari antoni, cal, primer, crear-la. Això es pot fer a una finestraMSDOS dins del directori c:\mysql\bin per a Windows o a una consola de Linux, siintroduïu el següent comandament:

mysql -u antoni -p

un cop feta la validació amb la contrasenya, així s'entra al client de comandaments deMySQL com a usuari antoni. Llavors, feu

CREATE DATABASE prova;

De forma que heu creat, per a l'usuari antoni la base de dades en blanc prova. Podeufer quit per sortir del client. També podeu fer aquest procediment de forma gràficaamb el MySQLCC. Teniu en compte que, si ja existeix la base de dades prova alservidor al qual restaurau la còpia de seguretat, s'actualitzaran les dades amb les de lacòpia de seguretat.

� a una finestra MSDOS dins del directori c:\mysql\bin per a Windows o a una consolade Linux, introduïu el següent comandament:

mysql -u antoni -p prova < copia_prova.sql

En l'execució d'aquest comandament se'ns demanarà la contrasenya (el modificador -p).Davant copia_prova.sql es pot posar la ruta si es troba a un directori distint d'aquell des d'onexecutem l'ordre. Si no hi havia cap base de dades amb aquest nom al servidor, heu de configurarel connector ODBC així com es descriu al mòdul 1 perquè OpenOffice.org pugui tenir accés aaquesta font de dades.

Activitat 4

Copiau l'arxiu de copia de seguretat de la base de dades curs_1.sql, que estroba als material accessoris del curs, en un directori del vostre disc dur del'ordinador per fer aquesta activitat i les següents, en les quals haureu derealitzar-hi modificacions.

Seguiu el procediment que es descriu a la pàgina anterior per recuperar la base

Autor: Antoni Salvà Salvà 17

Page 22: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

de dades curs_1 en el vostre servidor MySQL i incorporeu-la com a font dedades d'OpenOffice.org (vegeu el mòdul 1).

Obriu un document d'OpenOffice.org i, des del navegador de dades, obriu enmode d'edició la taula auxiliar �prestacio� i afegiu-hi un registre més, perexemple �Reproductor MP3�.

Activitat d'entrega obligada 2

Amb el disseny de base de dades que heu establert a l'activitat d'entregaobligada 1 tot tenint en compte les indicacions de la tutoria, creau la vostra basede dades i definiu-hi les taules auxiliars, que contenen els valors dels camps ambcontingut tancat, i la taula principal, en la qual s'inclouran les informacions delsítems que es faran servir als formularis.

Entrau a la taula principal de dades un mínim de 5 o 6 registres , anomenau labase de dades amb el vostre llinatge, creau un arxiu de còpia de seguretat ambel procediment que es descriu a la pàgina 16 amb el nom2_el_vostre_llinatge.sql i trameteu-la al tutor.

Esperau els comentaris del tutor abans de realitzar la següent activitat d'entregaobligada.

3.3 Traslladar el contingut d'una taula creada amb una altra aplicació a una taulaMySQL

Si ja tenim taules creades amb altres aplicacions de base de dades o en un full de càlcul ivolem incorporar les dades a una taula MySQL podem fer-ho sense necessitat de teclejar de noutota la informació amb el següent procediment:

1. Exportau el contingut de la taula a format de text. El format recomanat és el d'un registre perfila amb les columnes (camps) separades pel caràcter de tabulador, sense cap delimitador detext (és a dir, sense que cometes ni apòstrof). No obstant això, el procediment que segueixtambé funciona quan els camps estan separats per comes o punt i coma i amb un delimitadorde text. A una aplicació de full de càlcul, és suficient desar la taula amb �Anomena i desa...� o�Guardar como� i seleccionar arxiu de text (.txt). Des de MS Access, cal seleccionar la taulaamb el botó de la dreta del ratolí i seleccionar �Guardar como o exportar...� A la finestra �Guardarcomo...� que s'obre heu de seleccionar �Guardar en un archivo o base de datos externos� i fer clic a�Aceptar�. A la finestra �Guardar tabla nom_taula como� heu de seleccionar el directori de destí i a�Tipo de archivo� seleccionar �Archivos de texto�.

2. A MS Office, si la taula que voleu recuperar es troba a un full de càlcul de MS Excel o a unarxiu de base de dades Access s'obre un assistent d'exportació, en el qual heu de seleccionarque el tabulador sigui el caràcter de separació de camps i que no hi hagi cap caràcter quequalifiqui el text (com les cometes:

Autor: Antoni Salvà Salvà 18

Page 23: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Feu clic a �Siguiente>� i desau l'arxiu de text a un directori. Per exemple amb el nomprofessorat.txt al directori H:\Personal a una màquina Windows o al directori personal deLinux ~ (/home/nom_compte).

3. Si l'exportació ho feu des d'OpenOffice.org (per exemple, d'una taula que forma part d'un fullde càlcul), us trobareu amb la finestra següent un cop executeu �Anomena i desa...� com aformat CSV (.csv/txt):

Com a delimitador de camp heu d'escollir el tabulador {Tab}. Per a delimitador de text, haureude triar entre les cometes � o l'apostrof ', ja que aquesta utilitat no permet no posar capdelimitador de text. Això no comportarà cap dificultat perquè l'arxiu així desat pugui incorporar-se a una taula de MySQL.

4. Amb el servidor MySQL en funcionament, obriu una aplicació d'OpenOffice.org. Obriu elnavegador de dades i, a la base de dades en la que voleu incorporar els registres (al nostreexemple la curs_1_antoni), creau una taula amb el procediment que hem descrit a la pàgina11. Els camps han d'ésser del tipus adient a les dades que hi volem incorporar des de l'arxiuque hem exportat i s'han de definir en el mateix ordre de les columnes d'aquest arxiu,d'esquerra a dreta. Per a l'exemple de la finestra anterior, podriem definir els camps: nombre

Autor: Antoni Salvà Salvà 19

Page 24: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

(numèric), llinatge1 (text), llinatge2 (text), nom (text), curs (text), grup (text), cicle (text) i aula(text). Tendrem una definició com aquesta:

5. Al navegador de dades, feu clic amb el botó de la dreta a �Taules� de la base de dades on heudefinit la taula i seleccionau �SQL...�. S'obre la finestra per introduir comandaments SQL queafecten a una base de dades. Per incorporar les dades de l'arxiu de text professorat.txt a lataula professorat, introduïu el següent comandament.

LOAD DATA LOCAL INFILE “H:/Personal/professorat.txt” INTO TABLE professorat

si estau a una màquina Windows (notau que heu de posar la barra inclinada cap a la dreta enla definició de la ruta i diferenciar majúscules i minúscules en el nom de l'arxiu i dels directoris),o

LOAD DATA LOCAL INFILE “professorat.txt” INTO TABLE professorat

per a una màquina Linux si l'arxiu es troba a l'arrel del vostre directori personal. La finestrad'execució del comandament SQL us mostrarà el següent:

Autor: Antoni Salvà Salvà 20

Page 25: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Anau al navegador de dades a la taula professorat de la base de dades curs_1 (a l'exemplefont de dades curs_1_antoni) i comprovau que la taula s'ha emplenat correctament:

Activitat opcional 1

Exportau una taula d'una base de dades MS Access, de MS Excel o de Calcd'OpenOffice.org a un arxiu de text i incorporau les dades a una taula de MySQLsegons el procediment que es descriu més amunt. Si voleu, podeu fer servirl'arxiu professorat.txt que forma part dels arxius de pràctiques del curs, peròpodeu fer la prova amb qualsevol taula que pugueu exportar a format de text desd'una aplicació de base de dades o de full de càlcul.

Autor: Antoni Salvà Salvà 21

Page 26: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

3.4 Operacions amb les taules

Les taules per si mateixes ja constitueixen un depòsit de dades que pot ser d'utilitat, encaraque, com veurem, serà amb la creació de consultes on trobarem les possibilitats de l'ús de basesde dades relacionals. En la vista del contingut d'una taula o d'una consulta, podrem realitzaralgunes operacions senzilles mitjançant la barra de botons que ens apareix a la part superior delnavegador de dades.

Són les següents:

3.4.1 Cerca de registres

S'hi accedeix en fer clic al botó . Permet cercar dins de la taula activa un registre que

compleixi unes condicions. Si tenim al navegador de dades la taula audiovisual, en fer clic aaquest botó s'obre una finestra com la següent:

Com podem veure, per defecte la pantalla ens mostra uns valors corresponents al camp i alnúmero de registre en el qual es troba actualment el cursor. Per fer la cerca d'un registre s'hand'establir les següents condicions:

� A �Cerca per� heu d'assenyalar el botó de radi �Text� (independentment del tipus de camp queconté la informació respecte a la qual fareu la recerca) i posar el contingut d'un camp delregistre que cercau i que es farà servir com a valor de comparació (cal substituir el valor perdefecte que hi apareix).

� A �Àrea� podeu escollir que es cerquin els registres pel valor de camp que heu proporcionatdins tota la taula �Tots els camps� o dins d'un camp individual de la taula activa, que heu de

Autor: Antoni Salvà Salvà 22

Page 27: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

seleccionar de la llista que es desplega. Per això cal tenir activat el botó de radi a �Campindividual�.

� Les opcions de cerca les establiu a l'apartat �Configuració�. A �Posició� heu d'escollir la condicióde comparació pel valor que heu establert a �Cerca per�. Les opcions disponibles apareixen a lallista desplegable. Amb les caselles de verificació de la part inferior de la finestra podeu afinarencara més les condicions de cerca.

Una cop definides les condicions de cerca, feu clic al botó �Cerca�. La cerca s'aturarà en elprimer registre que compleixi les condicions, el número del qual apareixerà a la part inferior de lafinestra. Al navegador de dades, el cursor estarà situat en el registre que s'ha trobat.

Activitat 5

Obriu al navegador de dades la taula audiovisual de la base de dades depràctiques curs_1 . Feu una cerca del registre de l'aparell amb número de sèrieQZ2000.

3.4.2 Ordenar registres

Els registres de les taules es mostren en el mateix ordre que es varen crear. Podem escollir unavista de la taula en una ordenació distinta. Les taules es poden ordenar d'acord amb un camp enels dos sentits (ascendent i descendent) o es poden establir varis criteris d'ordenació en el casque hi hagi valors de camp coincidents per a diversos registres.

Per ordenar els registres de la taula activa segons un sol camp, cal situar el cursor a sobre delcamp de qualsevol registre respecte al qual volem fer l'ordenació i fer clic al botó �Ordena demanera ascendent� o al botó �Ordena de manera descendent� de la barra d'eines. Veurem que

la vista de la taula es modifica i que els registres apareixen ordenats segons el camp seleccionat.Per tornar a la vista original de la taula, feu clic al botó �Elimina filtre/ordre� .

Si el camp respecte al qual volem fer l'ordenació de la taula activa és un camp que té el mateixvalor per a molts registres, ens interesserà afegir criteris addicionals d'ordenació. Això es pot feren fer clic al botó �Ordre...� que permet incorporar fins a tres camps respecte als quals es fal'ordenació de registres. S'obre una finestra com la següent:

A �Nom del camp� heu de seleccionar, de la llista desplegable de camps de la taula activa, i ambl'ordre que estableix la pantalla, els camps respecte als quals es realitzarà l'ordenació de registresi el sentit (ascendent o descendent).

Autor: Antoni Salvà Salvà 23

Page 28: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Activitat 6

Per exemple, per tenir una vista ordenada de la taula audiovisual d'acord ambel tipus d'aparell (camp tipus), la prestació (camp prestacio) i la sevadisponibilitat (camp disponib), caldria definir a la finestra �Ordenació� el següent:

Feu clic a �D'acord� i observau el resultat de l'ordenació a la vista de la taula�audiovisual�.

Feu llavors, sobre la mateixa taula, una ordenació per marca, tipus d'aparell ilocalització.

3.4.3 Filtrar registres

Filtrar els registres d'una taula activa consisteix en definir unes condicions de selecció deregistres que ens proporcionaran una vista dels registres de la taula que compleixen aquestescondicions. La resta de registres no apareixeran a la vista de la taula. Aquesta eina ésespecialment útil quan volem tenir a la vista un sots-conjunt de registres d'una taula. Hi ha duespossibilitats de filtrat de dades: el filtre automàtic, que ens permet definir el valor d'un sol campcom a condició de filtre, i el filtre per defecte, que ens permet fer servir valors de tres campsdistints com a condició de filtrat. Ho veurem amb els següents exemples:

� Si volem tenir una vista de la taula audiovisual en la qual només es mostrin elsregistres que tenen per valor del camp marca �Panasonic�, ens situam amb el cursor sobreel camp marca d'un registre que té aquest valor (hi podeu situar el cursor de formaautomàtica si feu una cerca), i fem, llavors, clic al botó �Filtre automàtic� . La vista de la

taula audiovisual filtrada serà:

Per cancel·lar l'acció del filtre i tenir, de nou, una vista de tota la taula, podem fer clic albotó �Aplica filtre� . Podeu alternar amb la vista filtrada si tornau fer clic, de nou,

sobre aquest botó. La definició del filtre es manté mentre no premeu el botó �Eliminafiltre/ordre� .

Autor: Antoni Salvà Salvà 24

Page 29: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

� Per tenir una definició més complexa del filtre d'una taula activa, heu de fer clic al botó�Filtre per defecte� . S'obre una finestra com la que apareix més avall en la qual heu

de seleccionar:

� a �Nom del camp� el camp que contendrà el valor de comparació per a la selecciódels registres

� a �Condició� a les condicions i els valors de comparació per a la selecció deregistres, que els obteniu de la llista desplegable. Si useu el comparador �Com�podeu usar el comodí �*�. Així si filtra el camp marca pel valor Pana* la sortidaens proporcionarà els registres que comencen per Pana i acaben en qualsevolvalor.

Si establiu més d'un camp de selecció, les condicions les heu de juntar amb elsoperadors AND (es mostren els registres que compleixen la condició anterior i lasegüent) i OR (es mostren els registres que compleixen les condició anterior o lasegüent). A l'exemple següent teniu la definició de filtre perquè es mostrin els registresque tenen el valor del camp tipus com a �So� i el valor del camp prestació com a CD:

i que ens proporciona la següent vista filtrada de la taula audiovisual, en fer clica �D'acord�:

Sobre la vista filtrada de la taula, podeu fer les operacions de cerca de registres (pàgina22) i d'ordenació (pàgina 23). Per cancel·lar l'acció del filtre i tenir, de nou, una vista detota la taula, podem fer clic al botó �Aplica filtre� . Podeu alternar amb la vista filtrada si

tornau fer clic, de nou, sobre aquest botó. La definició del filtre es manté mentre nopremeu el botó �Elimina filtre/ordre� .

Autor: Antoni Salvà Salvà 25

Page 30: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Activitat 7

Obriu la taula audiovisual de la base de dades de pràctiques curs_1 i obteniuuna vista filtrada de les càmeres fotogràfiques disponibles. Ordenau, llavors, lavista per la seva marca.

4 Creació i definició de consultes4.1 Disseny d'una consulta bàsica

Hem vist que es poden realitzar diverses operacions sobre les taules de la base de dades. Noobstant això, és en la disponibilitat de vistes de les dades que s'obtenen a partir de la informaciócombinada de varies taules on rau la potència i la utilitat de les bases de dades relacionals. Peraixò s'ha de definir una consulta que relacioni taules que tinguin camps de contingut comú. Anema veure-ho amb un exemple. Amb la base de dades de pràctiques curs_1, suposem que ensinteressa disposar d'una vista amb el nom i llinatges del professorat que té al seu càrrec algundels aparells audiovisuals del centre i de quins aparells es tracta. Per això ens caldrà relacionarles taules audiovisual i professorat tot tenint en compte que tenen un camp de contingutcomú: persona per a la taula audiovisual i nombre per a la taula professorat. L'única restriccióque cal tenir en compte per relacionar dues taules és que aquest camp de contingut comú had'ésser del mateix tipus (alfanumèric, de text, de data) a totes dues taules.

Per definir aquesta consulta, farem servir l'eina gràfica de creació de consultes que portaincorporada OpenOffice.org. Aquesta eina genera el codi SQL que el servidor MySQL llegirà perexecutar la consulta. Així, per a una consulta de selecció de dades, que és el tipus que veurem,ens mostrarà al marc del navegador de dades una vista amb els registres seleccionats. Com queuna consulta no és més que una petició al servidor MySQL només queda desada dins de l'apartat�Consultes� de la font de dades d'OpenOffice.org, i no dins de l'arxiu de còpia de seguretat de labase de dades. No obstant això, les definicions de les poden traslladar fàcilment, ja que no sónmés que arxius de text amb el codi SQL.

El procediment és el següent.

� Crear la consulta associada a la font de dades. Al navegador de dades, per a la base de dadesen la que volem fer la consulta, fem clic amb el botó de la dreta sobre �Consultes� de la basede dades que conté les taules a partir de les quals es generarà la consulta, per al nostreexemple curs_1, i seleccionam �Nova consulta (disseny de vista)�. S'obre una nova finestra ambel nom �Query Design Consulta 1� (que aquí veiem minimitzada).

Autor: Antoni Salvà Salvà 26

Page 31: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

� Afegir les taules que s'han d'incorporar a la consulta. En la creació d'una nova consulta apareixuna finestra, �Afageix taules�, amb un llistat de les taules disponibles a la base de dades. Femclic sobre el nom de la taula que volem incorporar a la definició de consulta i, llavors, fem clicsobre el botó �Afegeix�. Per a cada taula que afegim apareix un quadre dimensionable amb elnom de la taula i una llista dels camps disponibles a l'àrea superior de la finestra de definició dela consulta:

Autor: Antoni Salvà Salvà 27

Page 32: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

� Establir la unió entre les dues taules. Com hem assenyalat més amunt, els camps de contingutcomú són persona de la taula audiovisual i nombre de la taula professorat. Per definir launió fem clic amb el botó de l'esquerra al quadre de la taula audiovisual sobre el nom delcamp persona i, sense deixar de prémer el botó, arrossegam el ratolí fins el nom del campnombre de la taula professorat. Apareixerà dibuixada una línia entre ambdós noms de camp,definint així una unió entre àmbdues taules:

La unió definida d'aquesta forma és una unió interior (�inner join�), i farà que en executar-se laconsulta mostri una vista dels registres que tinguin el mateix valor dels camps persona inombre de les taules respectives. Els registres que tinguin valors distints d'aquests camps noapareixeran a la consulta.

� Seleccionar els camps que es mostraran a la consulta. A la part inferior de la finestra,assenyalam els camps i els criteris de selecció, si s'escau, que volem que apareixin a la vistade la consulta. Els camps poden ser de qualsevol de les taules que formen part de la consulta is'incorporen a la selecció en fer doble clic al nom del camp del quadre de la taula. Per alpropòsit que ens hem fet de la consulta hauríem de seleccionar els camps nom, llinatge1,llinatge2 de la taula professorat i, per exemple, els camps tipus, marca i model de la taulaaudiovisual: Per a aquest exemple, a la definició dels camps de la consulta tendríem elsegüent:

Autor: Antoni Salvà Salvà 28

Page 33: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Per veure la vista que resulta de l'execució d'aquesta consulta podem fer clic al botó �Executa laconsulta� que ens proporciona a la part superior de la finestra de definició de la consulta la

vista que es mostrarà al navegador de dades. Per a l'exemple que hem desenvolupat enstrobarem amb una vista com:

Per poder veure el codi SQL de la consulta que heu creat amb l'eina gràfica de creació deconsultes, feu clic al botó �Mostra el disseny de la consulta� . Per a aquest exemple veureu elsegüent text:SELECT `professorat`.`nom`, `professorat`.`llinatge1`,

`professorat`.`llinatge2`, `audiovisual`.`tipus`, `audiovisual`.`marca`,`audiovisual`.`model` FROM `curs_1`.`professorat` `professorat`,`curs_1`.`audiovisual` `audiovisual` WHERE ( `professorat`.`nombre` =`audiovisual`.`persona` )

Si aquest text el copiau i l'enganxeu a un arxiu de text qualsevol, tendreu una còpia deseguretat de la consulta que heu creat. En sentint contrari, a una finestra de disseny de consultaen blanc, podeu recuperar la definició de la consulta que tingueu a un arxiu de text. Trobareu ladefinició d'aquesta consulta (mat_assignat.sql) amb els arxius de pràctiques del curs

Abans de sortir de la finestra de definició de la consulta hem de desar la definició. Per això femclic al botó �Anomena i desa� . A l'exemple hem assignat el nom mat_assignat. En anar al

Autor: Antoni Salvà Salvà 29

Page 34: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

navegador de dades d'un document d'OpenOffice.org, veurem que a la secció �Consultes� de labase de dades curs_1 ens haurà aparegut la consulta mat_assignat. Si fem doble clic sobreaquesta consulta ens apareixerà al navegador de dades la vista corresponent a aquesta consulta:

Els registres de la vista de la consulta estaran a disposició de les aplicacions d'OpenOffice.orgper a la generació de taules de text, creació de cartes en sèrie o per a l'elaboració de formularisde consulta de dades i d'informes impresos.

En haver desat una consulta a una base de dades, OpenOffice.org ensdemanarà la contrasenya d'accés a la base de dades en el moment que vulguemdisposar d'accés a aquesta base de dades, no només en fer clic sobre la vistad'una taula.

Sobre la vista es poden realitzar les mateixes operacions de cerca de registres (apartat 4.4.1,pàg. 22) i ordenació (apartat 4.4.2, pàg. 23) que hem vist per a les taules. No obstant això, comveurem en la secció 5.2, en la definició de les opcions per als camps de la consulta es podenestablir criteris d'ordenació i selecció de registres.

Activitat d'entrega obligada 3

Al vostre projecte de base de dades, escolliu dues taules que continguin uncamp de contingut comú i creau una consulta que incorpori camps d'àmbduestaules d'acord amb el procediment que es descriu més amunt. Desau-la a lavostra base de dades amb el nom activitat_3.

Un cop creada la consulta, obriu la finestra que us mostra el codi SQL de laconsulta, copiau-lo a un arxiu de text amb el nom 3_el_vostre_llinatge.sql itrameteu-lo al tutor tot fent servir l'eina d'entrega d'activitats.

Esperau els comentaris del tutor abans de realitzar la següent activitat d'entregaobligada.

4.2 Opcions dels camps en la definició de les consultes

És bastant habitual fer modificacions en el disseny de les consultes per tal d'incorporar opcionsals camps i així obtenir vistes amb informació específica. Per modificar una consulta que s'hadesat a la base de dades, feu clic amb el botó dret del ratolí sobre el nom de la consulta iseleccionau �Edita consulta�. S'obrirà la finestra de disseny de la consulta per tal que pugueu fer-nemodificacions.

En el mode gràfic de la definició d'una consulta podem establir condicions addicionals en baseals camps que apareixen a la vista. Aquestes opcions afectaran a l'ordenació dels registres, al'establiment de condicions de selecció de registres i, a més, a la possibilitat d'afegir camps

Autor: Antoni Salvà Salvà 30

Page 35: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

calculats. Les opcions que es poden establir per als camps es troben a l'esquerra de l'àrea delscamps.

Les obligatòries són el nom del camp i el de la taula que, com hem vist, apareixen per defecteen seleccionar els camps per a la vista de la consulta de les taules que en formen part. La restad'opcions disponibles són les següents:

� �Àlies�: permet de donar un nom alternatiu a un camp que té el mateix nom a duestaules ditintes. Aquest àlies es pot fer servir en la definició de camps calculats.

� �Ordenació�: es pot escollir a la llista desplegable que apareix en fer clic a la casella dela fila �Ordenació� per a un camp com a �Ascendent� o �Descendent� perquè la vista de laconsulta apareixi ordenada d'acord amb aquest camp. Si s'assenyala la ordenació per amés d'un camp, l'ordenació es fa de tal forma que el primer criteri d'ordenació ques'aplica és per al primer camp que s'especifica (d'esquerra a dreta), el segon és per alsegon camp, etc.

� �Visible� és una casella de verificació que ens permet mostrar/ocultar el valor d'aquestcamp per als registres de la vista de la consulta. Per defecte els camps seleccionatsapareixen com a visibles.

� �Funció� i �Criteri�, les veurem al sots-apartat següent:

4.2.1 Funcions sobre camps.

L'opció �Funció� realitza operacions sobre conjunts de valors del camp. Les funcionsdisponibles depenen del tipus de camp (per exemple no es poden fer sumes sobre campsalfanumèrics o de data) i es despleguen a una llista en fer clic a la casella de la fila �Funció�per al camp. Les funcions que es poden seleccionar (sumar, fer un recompte de valors), esrealitzen sobre un agrupament de registres que comparteixen el mateix valor d'un camp.Això significa que, prèviament, caldrà definir la funció �Grup� per al camp que conté elsvalors respecte els quals fem l'agrupament.

Ho veurem sobre un exemple. Anem a definir les opcions de la consulta mat_assignatper disposar d'una vista que ens mostri quants aparells estan assignats a cada un delsprofessors que se'n fan càrrec. Per això, ens caldrà agrupar els registres per llinatge delprofessor (camp llinatge1 de la taula professorat) i establir la funció recompte per aqualsevol dels camps de la taula audiovisual per exemple escollim marca. Per a la vista,hem ocultat els camps tipus, model i cost:

Autor: Antoni Salvà Salvà 31

Page 36: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

L'execució d'aquesta consulta ens proporcionarà la següent vista, que proporciona la respostaa la pregunta que ens havíem plantejat:

Activitat 8

A la base de dades de pràctiques curs_1, modificau la consulta mat_assignatper tal d'obtenir una vista del total (suma) del cost dels aparells assignats acada professor. A la vista hauria d'aparèixer el nom i llinatges de cadaprofessor i el cost total dels aparells assignats. Desau la nova consulta com aact_8 a la base de dades de pràctiques curs_1.

4.2.2 Criteris de selecció de camps

A la fila �Criteri� i següents es poden definir criteris de selecció de registres segons el valor delcamp d'acord amb un criteri de comparació. El valor del camp que serveix com a criteri s'escriuentre el caràcter d'apostrof ' per a valors alfanumèrics, entre el caràcter # per a dates i sense capcaràcter per a camps numèrics.

Per altra banda, el criteri de comparació s'estableix amb la notació següent:

= el valor del camp ha d'ésser igual al valor de comparació. Aquest criteri es pren per defecte, és a dir, és el que s'aplica si no n'especifiquem cap.

<> el valor del camp ha d'ésser distint al valor de comparació

> (per a camps numèrics i de data/hora) el valor del camp ha d'ésser major que el valor decomparació.

Autor: Antoni Salvà Salvà 32

Page 37: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

>= (per a camps numèrics) el valor del camp ha d'ésser major o igual que el valor de comparació.

<= (per a camps numèrics) el valor del camp ha d'ésser menor o igual que el valor de comparació.

< (per a camps numèrics i de data/hora) el valor del camp ha d'ésser menor que el valor decomparació.

LIKE es fa servir per seleccionar valors de camps amb valors de comparació que inclouen comodins, * o ?.

Si el contingut d'un camp, sigui quin sigui el tipus de camp, està buit se liassigna el valor NULL. Aquest valor té la pecularietat que no permet l'úsd'operadors aritmètics com <, >, <> o =. Si es vol fer servir com a criteri elsoperadors vàlids són IS NULL per fer seleccions de registres que tinguin el campamb contingut buit o IS NOT NULL per poder incorporar a la vista de la consultaregistres que tenen algun contingut en el camp. Aquests operadors s'hand'escriure d'aquesta forma a la casella �criteri� per al camp.

Podeu establir que el valor de comparació l'hagi d'introduir l'usuari a una finestra de diàleg. Peraixò, el valor de comparació ha d'escriure's amb el següent format:

:variable

L'única restricció que s'ha de tenir és que el nom de la variable no admet caràcters especials nicomodins.

Per a cada camp es poden definir condicions de selecció addicionals en les files que quedenper davall de la primera fila �Criteri�. Per a un mateix camp les condicions de selecció s'enllacenamb l'operador OR �O�. Establir condicions per a altres camp equival a usar condicions AND �I�.

Així, si a la vista de la consulta de material assignat al professorat volem veure només elsregistres que tenen el valor del camp tipus igual a �So� o �Imatge� caldria a la definició de laconsulta, afegir els criteris següents:

Si, a més, volem veure només els registres de la marca �Pioneer�, al camp marca hauríemd'afegir per a cada nivell el criteri:

Autor: Antoni Salvà Salvà 33

Page 38: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Si posau criteris de selecció complexos, podeu veure de forma clara elsencadenats d'operadors OR i AND a la instrucció SQL corresponent a la consultala clàusula WHERE. Per això, recordau que, a la finestra de definició de laconsulta, heu de fer clic al botó �Mostra el disseny de la consulta� . Per al darrerexemple, la clàusula WHERE té aquesta forma:

WHERE ( professorat . nombre = audiovisual . persona ) AND ( (audiovisual . tipus = 'So' AND audiovisual . marca = 'Pioneer' )OR ( audiovisual . tipus = 'Imatge' AND audiovisual . marca ='Pioneer' ) )

Activitat 9

Modificau la consulta mat_assignat de la base de dades curs_1 i afegiu a lavista el camp data_disp. Introduïu, llavors, una condició per seleccionar elsaparells assignats al professorat que siguin posteriors al 01/07/2001 (vos hand'aparèixer 6 registres).

5 Traslladar dades a un document d'OpenOffice.orgDisposar del navegador de dades en l'entorn de treball d'OpenOffice.org permet fer servir de la

informació d'una taula o d'una vista d'una consulta per integrar-la a un document de text. Així,veurem la forma de crear una taula d'un text amb els registres que es troben a una taula o a unavista d'una consulta i com es poden crear documents en sèrie que incorporen els valors delscamps dels distints registres. Addicionalment, hi ha la possibilitat d'afegir el contingut d'una taulad'un document de text a la base de dades.

Farem servir la base de dades de pràctiques per mostrar l'ús de les dues primeres utilitats.

5.1 Creació d'una taula de text a partir de la vista d'una taula o d'una consulta

Suposem que volem redactar un recordatori per escrit al professor Javier Mulet Fernandez perdir-li quin material audiovisual es troba sota la seva supervisió. Tenim la vista de la consultamat_assignat, que hem creat a 5.1 a la pàgina 26, que proporciona un llistat del materialaudiovisual assignat al professorat. Fem servir l'eina de filtrat de registres (filtre automàtic) aixícom ho hem descrit a 4.4.3 (pàg. 24) per a aquest professor (per exemple, pel camp llinatge1)de forma que obtenim una vista com:

Autor: Antoni Salvà Salvà 34

Page 39: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Per incorporar al document una taula amb aquesta informació, fem clic amb el botó del'esquerre del ratolí al quadre de l'esquerra del primer camp del primer registre i, llavors,mantenint pres el botó de majúscules, fem clic en el darrer registre. Així ens quedaran marcats elsregistres que volem que apareixin com a taula al text. En haver aquesta selecció, ens trobaremamb:

Fem ara clic al document d'OpenOffice.org en la posició en la que volem que ensapareixi la taula i, llavors, amb els registres seleccionats com a la captura de pantallaanterior, fem clic al botó �Dades a text� .

Al document de text ens apareixerà la següent finestra, en la que establirem com ensquedarà la taula (en el cas que inserim les dades en formate de taula, el botó de radi de�Insereix la data com:� està assenyalat a �Taula�).

El botó >> incorpora tots els camps de la vista de la consulta a la taula. Per seleccionar elscamps un per un, feu clic sobre el nom del camp de la llista �Columnes de la base de dade� i, llavors,

Autor: Antoni Salvà Salvà 35

Page 40: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

premeu el botó > (els mateixos botons, en sentit invers << i < serveixen per deseleccionar elscamps que apareixeran a la taula). Els camps seleccionats apareixen a la llista �Taula�. Al nostreexemple hauríem seleccionat, per exemple els camps tipus, marca i model:

La taula s'inserirà d'acord amb l'estil �Taula� d'OpenOffice.org. Al botó �Propietats� es podenmodificar les opcions de format per a aquesta taula o seleccionar una combinació d'opcions deformat en fer clic a �Autoformat�. Si deixam activat el botó de radi �Nom de la columna�, apareixeràcom a títol de la columna de la taula el nom del camp. En fer clic a �D'acord� tot acceptant lesopcions per defecte obtenim el següent resultat al document d'OpenOffice.org:

marca model tipusAudioSource LS100 SoHarman Kardon AVR 210 Imatge i soPhilips AX501117 SoEl format d'aquesta taula es pot modificar a posteriori amb les opcions de format o de definició

d'estil d'OpenOffice.org.

Activitat 10

Feu servir el procediment que hem descrit amb l'exemple anterior perincorporar a un document d'OpenOffice.org una taula amb l'equipament que estroba a l'Armari d'Audiovisuals. Per això, feu servir una vista filtrada de la taulaaudiovisual.

Activitat d'entrega obligada 4

A la vostra base de dades de pràctiques, creau una consulta que relacioni unmínim de dues taules, obteniu-ne una vista filtrada i incorporeu-la com a taula aun document d'OpenOffice.org. Feu les modificacions de format de la taula quemés us vinguin de gust i desau el document amb el nom4_el_vostre_llinatge i l'extensió que, per defecte, incorpori OpenOffice.org.Enviau aquest document a la tutoria.

5.2 Correu en sèrieAquesta eina vos permet crear sèries de documents que tenen el mateix cos de text i que es

diferencien en informacions corresponents a valors de camps. En la generació d'aquestes sèriesde documents el contingut dels camps de cada un dels registres s'hi incorporen de formaautomàtica. Podeu donar sortida a aquests documents, anomenats de �correu en sèrie� o �defusió� directament cap a una impressora o cap a una sèrie de documents. Malauradament, enaquesta versió d'OpenOffice.org no és possible dirigir la sortida cap al vostre client de correuelectrònic per fer �mailings� massius encara que, probablement, sí que es trobarà disponible en

Autor: Antoni Salvà Salvà 36

Page 41: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

versions següents, ja que aquesta característica forma part del pla de desenvolupament. Noobstant això, aquesta eina és molt útil en la generació de circulars personalitzades. Elprocediment és el mateix per als tres tipus de sortida i només cal especificar, pel cas de lageneració d'una sèrie de documents, quin serà el camp que donarà el nom del document.

Primer de tot, hem de disposar al navegador de dades de la vista que conté els camps i elsregistres que volem incorporar al correu en sèrie. Suposem que volem fer una circularpersonalitzada adreçada al professorat que té assignat material audiovisual i els volem comunicara cada un d'ells el nombre d'aparells. Per això obrim un document en blanc d'OpenOffice.orgWrite i escrivim un cos de text com el següent (el document final de definició de correu en sèriecorreu_serie.sxw el trobareu amb els arxius de pràctiques del curs):

�A l'atenció de , Cicle , Grup En una setmana començaran les vacances de Pasqua. Atès que teniu un total de aparells al

vostre càrrec per a activitats didàctiques, vos demanam que, abans de que finalitzi el períodelectiu els retorneu al magatzem de material audivisual.

Ben cordialment,

El secretari�.

Ara es tractarà d'incorporar al cos del text els valors que hem deixat en blanc. Al navegador dedades, podem recuperar la vista de consulta que hem creat com a exemple a l'apartat 5.2.1�Funcions sobre camps� a la pàgina 31 a la qual hem afegit els camps grup, curs i cicle(consulta mat_assignat_correu_serie de la base de dades curs_1). Al navegador de dadestendrem una vista com:

Per crear el document en sèrie, feu clic sobre el quadre amb el nom del camp amb el botó del'esquerra del ratolí i, amb el botó pres, l'arrossegau en la posició del document en el qual volemincorporar el valor del camp en el document. Us trobareu amb:

En tenir el text preparat, feu clic al botó �Correu en sèrie� us apareixerà la següent finestra:

Autor: Antoni Salvà Salvà 37

Page 42: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Les opcions que teniu són les següents:� A �Registres� feu clic al botó de radi per seleccionar tots els registres de la vista que teniu al

navegador de dades �Tot�, els registres que tingueu seleccionats a la vista (�Registresseleccionats� només vos apareixerà si teniu algun registre seleccionat en haver fet clic al botóde l'esquerra del primer camp del registre a la vista del navegador de dades) o un margenumèric de registres (botó �De�). La numeració en aquest cas es refereix a la de la vista (l'1 ésel registre superior). Per això, si modificau l'ordenació de la vista de la taula o de la consulta,l'element de numeració pot ser distint.

� A �Destí� podeu seleccionar �Impressora� o �Fitxer�. La resta d'opcions d'aquest apartat depèn dequina opció heu seleccionat. Si s'escull �Fitxer� podeu seleccionar el directori on es desaran elsdocuments de fusió que es generaran (�Camí�) i si el nom d'aquests documents es crea deforma automàtica a partir d'un camp (�Camp de la base de dades�). El més recomanable ésescollir un camp clau per a la generació d'aquests noms. De la sortida de l'eina �Correu ensèrie� amb aquest exemple ens trobaríem amb:Els valors que s'han incorporat de l'execució de la fusió apareixen en fons de color gris en eldocument en pantalla (aquest fons desapareix en la sortida impresa).

Podeu afinar més la creació de correus en sèrie si feu servir la inserció de �Textcondicionat� (a un document de text a �Insereix/Camps/Altres/Funcions/Textcondicionat) per a valors dels camps del tipus alfanumèric. Per això, vegeul'ajuda de l'OpenOffice.org Writer.

Activitat opcional 2

Creau un document de correu en sèrie en base a una taula o consulta de labase de dades que heu creat segons el procediment que es descriu mésamunt. Dirigiu la sortida a �Fitxer� i comprovau el resultat. Provau d'inserir untext condicionat al valor d'un camp alfanumèric.

Autor: Antoni Salvà Salvà 38

Page 43: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

6 Creació i disseny de formularisIntroduir dades a una taula o consultar registres individuals d'una taula o d'una vista d'una

consulta no és visualment molt agraït, especialment si hi ha molts camps. Per això a qualsevoldocument d'OpenOffice.org es poden crear formularis que proporcionaran un accés mésagradable a les bases de dades registrades (les que s'han pogut afegir com a fonts de dades). Elformulari és l'equivalent electrònic a una fitxa d'un arxivador manual.

A diferència de MS Access, els formularis no formen part de la base de dades, sinó que sóndocuments (de text, html o de presentació) que tenen objectes (elements de formulari) quemostren els valors dels camps de la base de dades a la qual està connectada OpenOffice.org. Noobstant això, aquests documents es poden associar a una font de dades, dins OpenOffice.org,com a objecte de l'apartat �Enllaços�.

A l'exemple que hem anat desenvolupant, ens interessarà disposar d'un formulari per poderafegir i modificar els registres corresponents a cada un dels aparells audiovisuals.

6.1 Creació bàsica d'un formulari

El més pràctic és, d'entrada, fer servir l'assistent o autopilot d'OpenOffice.org per tal de crear elformulari. Llavors, podrem fer les modificacions que ens semblin més adients. Per això fem clic a�Fitxer/Autopilot/Formulari�. S'obre un nou document i ens apareixeran unes pantalles de diàleg. A laprimera s'assenyala quina és la font de dades i els camps que s'hi han d'incorporar. Al nostreexemple, assenyalam la base de dades de pràctiques a �Font de les dades� (en el nostre cas lafont curs_1_antoni, a �Selecció de taula� escollim la taula audiovisual (podem també afegir unaconsulta) i a la secció inferior seleccionam tots els camps =>>, de forma que s'incorporen a lallista �Selecció de taula�. En acabar, fem clic a �Següent�:

Autor: Antoni Salvà Salvà 39

Page 44: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

La següent pantalla de l'autopilot ens permet escollir la forma en què es distribuiran elscontinguts dels camps al formulari:

Seleccionam el 4t tipus d'ajustament de camp (Bloc, etiquetes amunt) estil �Standard� i deixamper defecte la resta d'opcions. En acabar, fem �Crea�. Caldrà, llavors, desar el document dins d'undirectori (trobareu el document de formulari en els arxius de pràctiques amb el nomform_curs_1_audivisual.sxw). Amb les opcions que s'han escollit, el document de textd'OpenOffice.org té el següent aspecte:

Autor: Antoni Salvà Salvà 40

Page 45: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Amb els botons de la barra inferior podeu:

� Anar d'un registre a l'altra de forma seqüèncial (�passar pàgina o fitxa) .

� Anar al darrer registre .

� Afegir un nou registre (només està habilitat per defecte per a formularis vinculats a unataula).

� Esborrar el registre actual .

� Actualitzar el valor de les dades del registre .

� Cercar registres (de la mateixa forma que hem vist a l'apartat 4.4.1 a la pàgina 22) .

� Ordenar registres (vegeu l'apartat 4.4.2 a la pàgina 23) .

� Aplicar filtres (vegeu l'apartat 4.4.3 a la pàgina 24) .

� Veure les dades de la vista en mode de taula (equivalent a obrir el navegador de dades) .

Autor: Antoni Salvà Salvà 41

Page 46: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Activitat 11

Amb el servidor MySQL engegat i amb la base de dades de pràctiques curs_1connectada, obriu el formulari form_curs_1_audivisual.sxw dels arxius depràctiques i feu els mateixos exercicis de les activitats 5 (pàg. 23) i 7 (pàg. 26).

6.2 Personalització d'un formulari L'ús de l'autopilot ens ha permès crear un document que podem fer servir com a formulari per a

la visualització i operacions bàsiques de les dades de la taula audiovisual. El que ens cal ara ésadaptar aquest document a les nostres necessitats i, també, fer les correccions necessàries. Perexemple, podeu veure que el formulari que ha creat l'autopilot deixa la visualització delscontinguts dels camps en objectes del tipus quadre de text. Així el camp formacio no es mostracom a casella de verificació, sinó que apareix el contingut 1 per a la casella activada i 0 per a lacasella desactivada. Veurem la forma de fer aquestes correccions sobre el formulari de sortida del'autopilot, mitjançant la realització de modificacions sobre els elements que apareixen al formulari(anomenats controls) que mostren el contingut dels distints camps.

Així, en el disseny de la base de dades de pràctiques que varem establir a l'activitat 2 (pàg. 7)alguns dels camps havien d'ésser de contingut tancat en base a uns valors que apareixen a unade les taules. De la forma com tenim el formulari, un usuari que accedeixi a la base de dades potintroduir qualsevol valor en els camps de la taula audiovisual. Per això, sobre el formularianterior canviarem els objectes que corresponen als camps de contingut tancat de forma que, perexemple, un usuari pugui seleccionar els valor d'una llista que es desplegarà en el quadrecorresponent al camp.

Per modificar els controls d'un formulari cal fer clic al botó �Controls del formulari� (el cinquè de labarra d'eines lateral esquerra del document:

En fer clic en aquest botó, entrareu en el mode d'edició dels controls del formulari. Veureu quedesapareixen les dades i la barra de botons inferiors que us permeten realitzar operacions sobreels registres de la taula o vista de la consulta vinculada al formulari. Si feu clic a un control,apareixeran punts-guia que us permetran moure'l (en fer clic al mig de l'objecte) o modificar-ne lamida (en arrossegar els punts-guia), i a la part superior del formulari veureu una barra de botonsque us permetrà establir la posició i les propietats d'aquests controls:

Autor: Antoni Salvà Salvà 42

Page 47: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

D'aquesta barra de botons, els que ens interessaran especialment són el de definició de lespropietats del control seleccionat �Propietats del control� i el de definició de les propietats de totel formulari �Propietats del formulari� .

6.2.1 Quadres de combinació

Als quadres de combinació o quadres combinats els usuaris poden seleccionar el valor per a uncamp d'una llista de valors possibles que es desplegarà al control.

Anem, per exemple, a substituir l'objecte corresponent al camp prestacio del formulari depràctiques que ha creat l'autopilot per un quadre combinat que ens mostri els possibles valors pertal de poder-los seleccionar de la llista que es troba a la taula prestacio.

Obrim el document del formulari i, amb el botó �Controls del formulari� pres, fem clic sobre elcontrol corresponent al camp prestacio. L'esborram amb la tecla Supr del teclat. Fem, llavors, unclic al botó �Controls del formulari�. Si feu un segon clic i mantenim espitjat el botó, apareix lafinestra �Funcions del formulari�.

A partir d'aquest moment us trobau en mode de treball de disseny del formulari. Per inserir unobjecte al formulari podeu fer clic sobre el botó corresponent. Si teniu el botó �Autopilot� activats'obrirà una seqüència de quadres de diàleg per definir el control. En cas contrari tendreu elquadre de propietats en blanc, en el qual haureu d'introduir els valors adients. Per tornar al modede vista de les dades de la taula o vista de consulta vinculada al formulari, caldrà fer clic al botó�Mode de disseny activat/desactivat�

Anem a crear un control sense l'ajut de l'autopilot. Feu clic al botó �Quadre combinat�:

Apareixerà un cursor en forma de creu. Espitjant el botó de l'esquerra del ratolí, arrossegau elcursor de forma que us quedi un quadre de la mida que trobeu adient (podreu modificar la midamés endavant si cal). En amollar el cursor, us quedarà quelcom semblant a:

Autor: Antoni Salvà Salvà 43

Page 48: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

La casella de la dreta del quadre serà on l'usuari del formulari podrà fer clic perquè es despleguiels valors possibles del camp. Ara cal, precisament, definir d'on s'han de prendre aquests valors.Amb el control seleccionat, feu clic al botó �Propietats del control� . Es desplegarà el quadre�Propietats: Quadre combinat�. L'operativitat del quadre combinat es basarà en el que apareix a lafitxa �Dades�.

A �Camp de dades� hem de seleccionar quin és camp de la taula a la qual es troba associada elformulari que es veurà afectat pel valor del control. Els camps disponibles apareixen en una llistadesplegable (de fet, és un quadre combinat) en fer clic al botó de la dreta. Per aquest cas,seleccionam el camp localitz.

A �Tipus de contingut de la llista�, seleccionam �Taula�, ja que els valors de la llista desplegableque apareixerà són els d'una taula de la base de dades.

A �Contingut de la llista�, assenyalam que la taula des d'on s'han de prendre els valors són els dela taula auxiliar localitz. En fer clic al botó de la dreta del quadre es desplegaran les taulesdisponibles de la base de dades.

Afegim, llavors, una etiqueta al quadre combinat. A la finestra �Funcions del formulari�, fem clical botó �Camp d'etiqueta� . De la mateix manera que pel quadre combinat, marcam en l'àreadel formulari un quadre de les dimensions inicials de l'etiqueta. A la finestra de propietats del'etiqueta, a �Etiqueta� posam el text que volem que es mostri, en aquest cas �Localització�.

Podem, llavors, tancar la finestra de propietats i fer clic al botó �Mode de disseny activat/desactivat� per veure el quadre combinat en funcionament. Veurem que en fer clic al botó de la dreta es

desplega una llista amb els valors de la taula localitz, des d'on l'usuari podrà triar el valor delcamp localitz de la taula audiovisual:

Aquest procediment es pot establir per a tots els camps de contingut tancat que hem definit aldisseny de la base de dades de pràctiques curs_1 a la pàgina 7.

6.2.2 Quadres de llista Haureu vist que al formulari que estam creant a mena d'exemple no podem assenyalar quin és

el professor que es troba assignat a un aparell determinat. Si volem afegir al formulari aquesta

Autor: Antoni Salvà Salvà 44

Page 49: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

capacitat, caldria afegir un control associat al camp persona. Si cream un camp combinatassociat a aquest camp de la taula audiovisual, el que ens apareixerà serà el número assignat alprofessor. Per tal que el formulari fos més clar, el que aniria bé és que ens apareixés el llinatgedel professor, per exemple, però de forma que el valor que es desés al registre fos elcorresponent al camp persona. A la base de dades de prova hi ha una taula, professorat, queté el camp nombre comú al camp persona de la taula audiovisual. Ja hem vist que es potconstruir una vista de consulta que fa servir dades de dues taules amb contingut comú. Es podriadissenyar una vista de consulta i, llavors, crear un formulari vinculat a aquesta consulta perquèsortís el nom i llinatges del professor al qual s'assigna un equipament audivisual. No obstant això,per a un formulari basat en una taula com el que hem creat d'exemple, és possible fer servir uncontrol específic, el quadre de llista, que és capaç de mostrar al formulari el valor d'un camp d'unaaltra taula que té algun camp amb contingut comú amb la taula en la que es basa el formulari.Així, amb el següent procediment inserirem un quadre de llista que mostrarà el primer llinatge delprofessor (que es prendrà del valor del camp llinatge1 de la taula professorat) per actualitzarel camp persona de la taula audiovisual.

En el mode de disseny del formulari i amb el botó �Autopilot� pres feu clic al botó �Quadre de

llista� . A l'àrea del formulari creau el quadre que ocuparà la posició del quadre. S'obriràl'assistent (autopilot). La primera finestra serà per seleccionar la taula amb algun camp ambcontingut comú amb la taula en la qual es basa el formulari, en el nostre cas, seleccionarem fentclic al nom del camp professorat. Un cop seleccionat, fem clic al botó Següent>>.

A la pantalla següent, assenyalam el camp del qual es mostrarà el valor de la taulaprofessorat (camp de visualització) en aquest cas, seleccionam el camp llinatge1 (només espot mostrar el valor d'un camp):

Autor: Antoni Salvà Salvà 45

Page 50: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Tornam fer clic al botó �Següent>>� . Ara el que cal és establir quin és el camp de contingutcomú entre la taula audiovisual i professorat. A la finestra següent seleccionam els campspersona de la taula audiovisual i nombre per a la taula professorat:

Feu clic al botó �Crea� i al quadre de l'àrea del formulari vos apareixerà el quadre de llista. Ara elpodeu redimensionar i/o resituar. Un cop desat l'arxiu del formulari, podeu passar al mode d'edicióde dades, us trobareu, per exemple:

Autor: Antoni Salvà Salvà 46

Page 51: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Si obriu el navegador de dades, de forma que vos apareixi al marc superior el contingut de lataula audiovisual, veureu que el valor del camp persona és, en realitat un nombre. Si al formularifeu una modificació del llinatge del professor assignat a l'aparell i desau el registre en fer clic albotó , s'actualitzarà el valor del camp persona a la taula audiovisual (pensau en fer clic al botó

del navegador de dades per actualitzar la vista de la taula).

Podeu fer servir els quadres de llista per mostrar informacions addicionals de la taula que té uncamp compartit amb la taula en base a la qual heu creat el formulari i establir a la fitxa �General�del quadre de propietats del control que aquest sigui de només lectura i deshabilitat als efectes deselecció de valors possibles:

Així, per exemple el segon i primer llinatge del professor assignat a un aparell els podeu afegiral formulari si creau sengles quadres de llista amb el valors dels camps llinatge2 i nom de lataula professorat. En aquest cas, apareixerà el nom i llinatges del professor assignat a l'aparellaudiovisual quan s'actualitzi la vista del formulari o en haver fet una actualització i haver desat elregistre:

Autor: Antoni Salvà Salvà 47

Page 52: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

6.2.3 Sots-formularis

Els sots-formularis o subformularis són formularis inserits dins d'un formulari principal, i tenenper objectiu mostrar, dins d'aquest formulari principal, informacions addicionals dels registres queestan preses de taules auxiliars. Es tracta d'una alternativa més elegant a l'ús de quadres de llistaque hem vist a l'apartat anterior. Per exemple, ens pot interessar veure, no només el nom illinatges del professor, sinó també quin és el curs d'aquest professor. Per això inserirem un sots-formulari al formulari principal que hem desenvolupat en l'exemple anterior que estigui format perun quadre de text que mostri aquest curs.

Obrim el formulari principal en mode d'edició i, al quadre d'objectes del formulari, fem clic albotó �Navegador de formularis� . S'obre una finestra en la que, en forma d'arbre, es mostren totsels controls i objectes del formulari principal, que pren el nom de �Standard�. Si feu clic sobre�Standard� veureu que es seleccionen en bloc totes els objectes del formulari principal i queapareixen els punts de control. Si feu clic sobre un control o objecte, aquest queda seleccionat.Per afegir un sots-formulari, feu clic amb el botó de la dreta sobre la icona de �Standard� iseleccionau, �Nou/formulari�:

Veureu que a la llista d'objectes i controls del formulari principal apareixerà un nou objecte, elformulari secundari �Standard�. Evidentment, serà recomanable canviar el nom d'aquest sots-formulari per tal d'evitar confusió. Feu clic al botó �Propietats del formulari� i a la fitxa �General�,

canvieu-hi el nom, per exemple amb �Sots_estandard�. Anau llavors a la fitxa �Dades�. Del que estractarà és de escollir d'on es prendran les dades auxiliars que volem incorporar al formulariprincipal i definir la vinculació que hi haurà entre el sots-formulari i el formulari principal. Per al'exemple que estam tractant (vegeu la base de dades de pràctiques), els camps comuns entre lestaules que es volen vincular són persona per a la taula audiovisual i nombre per a la taulaprofessorat. Cal fer servir les següents entrades d'aquesta fitxa per al sots-formulari:

Autor: Antoni Salvà Salvà 48

Page 53: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Com podeu veure, el contingut l'heu d'assenyalar amb una entrada de codi SQL i la definiciód'una variable x (el nom de la variable pot ésser qualsevol). Un cop definides les propietats delformulari, podem inserir els objectes que calguin:

Ara, amb el sots-formulari seleccionat (l'heu de tenir amb fons fosc), feu clic al botó perdesplegar el quadre de funcions del formulari. Els controls que seleccioneu s'aniran incorporant alsots-formulari. Inserirem a aquest sots-formulari un quadre de text que mostri el curs de lapersona a la qual es troba assignat l'aparell audiovisual. Fem clic al botó �Quadre de text� de lafinestra �Funcions del formulari� i, a les propietats del control, a la fitxa �Dades�, seleccionam el campque volem que ens mostri el control (evidentment, el camp correspondrà, per al nostre exemple aun de la taula professorat) :

Ara, en el mode d'edició, el formulari mostrarà per a cada registre el curs del professor, en casque l'aparell estigui assignat a un professor:

Autor: Antoni Salvà Salvà 49

Page 54: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Activitat opcional 3

A un formulari de la vostra base de dades, inseriu un sots-formulari quemostri un camp d'una taula auxiliar, d'acord amb el procediment que hemvist en aquest apartat.

6.2.4 Incorporar el formulari a l'apartat �Enllaços� del navegador de dades.

Un cop creat el document del formulari, el podeu incorporar a la vista del navegador de dades ala secció �Enllaços� de la font de dades a OpenOffice.org (recordau que aquest enllaç no és unafuncionalitat del servidor MySQL).

Per això, feu clic sobre la icona �Enllaços� amb el botó de la dreta del ratolí, i al menú que esdesplega escolliu �Nou enllaç�. S'obre una finestra com:

Al quadre �Nom:� posau un nom identificatiu del formulari, que serà el que apareixerà en el

navegador de dades. A �URL:� feu clic al botó i, a la finestra de navegació d'arxius,seleccionau el nom del formulari. Així, a l'apartat �Enllaços� haureu creat una entrada que vosproporcionarà accés al formulari:

Autor: Antoni Salvà Salvà 50

Page 55: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

En obrir un formulari des de l'apartat �Enllaços�, aquest s'obrirà en mode de lectura, però, enfunció dels permisos que tingueu com a usuaris de la base de dades i del disseny del formulari,podreu actualitzar dades, afegir i eliminar registres, a més de fer cerques i filtrats.

Si voleu crear directament un formulari de forma que vos apareixi directament al'apartat �Enllaços� de la base de dades, feu clic amb el botó de la dreta sobre�Enllaços� i, al menú desplegable, escolliu �Document nou� i �Formulari de l'autopilot�.

En aquest apartat �Enllaços� també podeu incorporar d'altres documentsd'OpenOffice.org, (per exemple un document preparat com a carta en sèrie comla que hem creat a l'apartat 6.2 a la pàgina 36).

Com qualsevol document d'OpenOffice.org, podeu fer les modificacions de disseny del fons dela pàgina, dels paràgrafs i dels tipus de lletra. També el podeu desar en format html.

Activitat d'entrega obligada 5

Creau un formulari basat en una de les taules de la vostra base de dades.Introduïu al manco un control de quadre combinat per fer una selecció de valorsbasat en el contingut d'una taula auxiliar i un control de quadre de llista en basea una taula que tingui un camp compartit.

Desau el document del formulari amb el nom 5_el_vostre_llinatge ambl'extensió per defecte d'OpenOffice.org i enviau-lo a la tutoria.

7 Creació d'informesUn informe és un document d'OpenOffice.org que conté un llistat amb una selecció de camps

corresponents a una sèrie de registres d'una taula o d'una vista d'una consulta. Ja hem vist al'apartat 6.1 (pàg. 34) la forma de traslladar el contingut d'una taula o vista d'una consulta a unataula d'un document. L'elaboració d'un informe és un procediment alternatiu més elaborat,destinat a poder disposar de forma ràpida de llistats actualitzats.

Per exemple, podem plantejar-nos, per a la base de dades d'exemple, la creació d'un informeque ens mostri les dades bàsiques de tot l'equipament audiovisual del centre per a l'inventarianual, de forma que els registres estiguin agrupats per prestació i ordenats per marques.L'informe es pot desar com un document �estàtic� o bé com a plantilla, de forma que cada vegadaque s'obre s'actualitza el contingut en funció de l'actualització de les dades.

El procediment de creació d'un informe es fa amb un autopilot. Fem clic a�Fitxer/Autopilot/Informe�. S'obre un document de text amb un encapçalament amb les dades del'autor i la data de creació (tot això es pot modificar un cop s'ha creat el document) i apareix unafinestra en la qual hem de seleccionar la font de dades i la taula o vista de consulta de la qual esprendran les dades:

Autor: Antoni Salvà Salvà 51

Page 56: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Per a l'exemple que fem, tendríem la següent selecció de dades:

Un cop seleccionats, fem clic al botó �Següent >>�. Ens apareix la següent finestra:

Autor: Antoni Salvà Salvà 52

Page 57: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Les etiquetes són els encapçalaments de les columnes que correspondran a cada un delscamps. En aquesta finestra podem substituir les etiquetes per defecte, que són els noms delscamps així com estan definits a la taula, per d'altres de forma que l'informe sigui més legible. Uncop fets els canvis, fem clic al botó �Següent >>� i passam a la finestra per definir l'agrupació delsregistres a l'informe. Els registres que tenen algun camp en comú es poden agrupar de forma queapareixen davall un encapçalament amb el nom del camp. Aquesta funcionalitat és útil per ainformes molt llargs. Es poden definir fins a quatre nivells d'agrupament distints (agrupamentsanidats). Cal, només tenir en compte que si es selecciona l'informe en com a �plantilla�, el primercamp o àlies de la consulta ha d'ésser el principal respecte al qual es faran els agrupaments. Encas contrari només apareix el text de l'etiqueta.

Vegem un exemple per crear sots-grups dins d'un mateix grup. Agruparem els registres pelsvalors del camp prestacio que correspon a l'etiqueta �Prestació�:

Autor: Antoni Salvà Salvà 53

Page 58: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Feu clic a �Següent� per passar a la següent pantallla de definició de l'informe. En aquestafinestra establireu respecte quin camp voleu que estiguin ordenats els registres que es llistaran al'informe i si l'ordenació ha d'ésser ascendent o descendent. Podeu definir varis nivellsd'ordenació per tal de poder ordenar els registres que tenen el mateix valor del camp respecte alqual es fa l'ordenació. Si l'informe conté agrupacions, aquesta ordenació s'aplica a cada un delsregistres agrupats. A l'exemple, els registres dels grups de la taula audiovisual s'ordenen ensentit ascendent d'acord amb el camp marca :

Autor: Antoni Salvà Salvà 54

Page 59: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

Fem clic, de nou, a �Següent�. A la finestra següent �Selecció d'estil� de l'autopilot podeu escollirun format per a l'informe en base a les plantilles que incorpora el programa. Es pot seleccionar unestil per a la llista de les dades �Selecció de dades� i per a les capçaleres i els peus de pàgina �Estilde capçaleres i peus de pàgina�. A la part inferior podeu, amb la selecció del botó de radi, escollirl'orientació de la pàgina. Un cop creat el document de l'informe, podreu fer modificacions d'estil, sis'escau.

Autor: Antoni Salvà Salvà 55

Page 60: Curs de base de dades MySQL/OpenOffice.org 1.1weib.caib.es/Formacio/distancia/Material/oomysql/OO_MySQL_modul2.pdf · Curs de base de dades MySQL/OpenOffice.org 1.1.0 Mòdul 2: Treball

Curs de Base de Dades MySQL/OpenOffice.org 1.1. Mòdul 2

En acabar, fem de nou clic a �Següent� i passam a la darrera pantalla �Desa l'informe�, en la qualhem d'escollir entre desar el document de l'informe com a plantilla o com a document �estàtic�.

Si ens interessa obtenir un informe periòdic que recolli les darreres actualitzacions de la basede dades, caldrà seleccionar la creació d'una plantilla d'informe. Cada cop que es s'obri un noudocument amb aquesta plantilla les dades s'actualitzaran d'acord amb el contingut de la base dedades. Les plantilles d'informes, a més, s'incorporen de forma automàtica en el navegador dedades a la secció �Enllaços�. En canvi, el contingut d'un informe estàtic només reflecteix elcontingut de la base de dades en el moment de la creació de l'informe.

Tot seguit fem clic a �Crea�, que ens mostrarà la sortida de l'informe.

De la mateixa forma que per als formularis (vegeu l'apartat 7.2.5 a la pàgina 50), podeuincorporar un informe a l'apartat �Enllaços� de la base de dades activa al navegador de dades.

Activitat d'entrega obligada 6

Creau un informe amb, al manco, un nivell d'agrupament basat en una taula oen una vista de consulta de la vostra base de dades. Desau-lo com a informe�estàtic� amb el nom 6_el_vostre_llinatge i trameteu-lo a la tutoria ambl'eina d'entrega d'activitats.

Autor: Antoni Salvà Salvà 56