| |
Si parlem de "bases de dades planes" estem fent referència a una base de dades amb una sola taula. Totes les dades estan en una sola taula. Si té molts camps i moltes dades serà una taula molt gran.
Si parlem de "bases de dades relacionals" estem parlant de bases de dades amb diverses taules on cada taula conté una part de la informació i on totes las taules estan relacionades, de tal manera que funcionen com si fossin una sola taula.
L'OpenOffice Base és un gestor de base de dades relacional. Pot treballar amb bases de dades d'una sola taula però la seva verdadera potència està en la gestió de taules relacionades.
|
| |
Un exemple per veure la utilitat de fer taules relacionades: |
| |
Volem fer una base de dades dels CDs de música que tenim i al dissenyar els camps decidim que a més de les dades concretes del CD com el títol, el nom artístic de l'autor, l'any d'edició, la productora, el tipus de música, etc. vull afegir alguns camps més sobre l'autor com el seu nom i cognoms reals, l'any i lloc de naixement o simplement un camp més, tipus "memo", amb una petita ressenya sobre l'autor.
En aquest cas, si fem només una taula, cada vegada que introduïm un CD nou del mateix autor, a l'omplir els camps, haurem d'escriure, de repetir, tota la informació referida a aquest autor. Si fem una taula "CDs de música" per a les dades concretes de cada CD i una altra, "autors", amb només les dades que volem de cada autor, nom artístic, nom i cognoms reals, ressenya biogràfica, etc. i les relacionem, al introduir les dades d'un nou CD d'un autor del que ja tenim altres CDs no haurem de repetir, de tornar a escriure, les dades de l'autor. Estalviarem temps, treball, espai a la base de dades i errades d'escriptura.
Si a més fem una altra taula "Productora" amb els noms de les productores i la relacionem també amb la de "CDs de música", a l'introduir les dades, tampoc haurem de escriure, de repetir amb cada CD els noms d'aquestes. Possiblement no estalviarem molt de temps, en aquest cas, però serà molt útil per altra cosa molt important en las bases de dades: reduir les possibilitats d'errades d'escriptura.
Una altra avantatge de les 3 taules relacionades d'aquest exemple: Si un dia ens adonem que en les dades d'un autor hi ha algunes errades o simplement volem afegir o treure dades, només hem de fer els camvis en un registre, el registre d'aquest autor concret en la taula d'autors. Si tinguéssim una sola taula per a totes les dades, hauríem de fer els canvis en cada registre dels CDs d'aquest autor. |
| |
Condicions per fer la relació entre dos taules |
| |
- Les relacions es fan entre dos camps, un de cada taula.
- Aquests dos camps han de fer referència a la mateixa informació. El nom del camp pot ser diferent a cada taula, però la informació ha de ser la mateixa. De totes maneres, el fet que els camps que s'han de relacionar tinguin el mateix
nom a les dues taules, ens pot facilitar la feina.
- Han de ser camps del mateix tipus. Podem relacionar:
- Un camp text d'una taula amb un altre, text, de la segona taula.
- Un camp numèric d'una taula amb un altre, numèric, de la segona taula.
- Un camp autonumèric d'una taula amb un altre, numèric, de la segona taula.
Normalment els camps dels altres tipus no són correctes per establir les relacions.
- Un dels dos camps ha de ser un camp clau
de la seva taula; ha de ser un camp sense possibilitat de duplicació en la taula d'on parteix la relació. Si no és així, la relació serà inconsistent i provocarà errades.
Si tenim dos taules sense relacionar i ara volem establir relacions entre elles el més probable és que necessitem fer modificacions en la definició dels camps; necessitarem canviar el tipus d'algun camp. Aquests canvis poden provocar pèrdua d'informació, de dades, en la taula. Per això és molt important que les relacions s'estableixin des del començament, al disseny inicial de la base de dades.
|
| |
Podem establir tres tipus diferents de relacions entre dos taules, encara que en la pràctica, possiblement, només una serà d'utilitat per a nosaltres:
- Relació 1 a n (un a varis). En la imatge anterior veureu aquesta línia d'unió entre els camps relacionats:

- Relació 1 a 1 (un a un). La línia d'unió entre els dos camps és igual que la anterior però te el número 1 a cada extrem.
- Relació n a n (varis a varis). En la línia d'unió es veu una n a cada extrem.
La relació 1 a n, és la que s'anomena "d'un a varis". Es el tipus de relació més habitual i útil en la majoria dels casos. Un exemple de relació 1 a n seria entre una taula Llibres i una taula Temes, perquè un llibre pot tenir un tema, i un tema pot tenir diversos llibres a la biblioteca de cadascú. Això vol dir que és una relació 1 a n. Si es donés el cas que un llibre pot tenir diversos temes alhora, seria en aquest cas, una relació n a n.
La relació 1 a 1, (un a un), es dóna quan volem partir una taula per separar algunes dades que tenen entre elles certes característiques comunes i, d'aquesta manera, deixaríem les taules més petites i manejables. Un exemple podria ser una taula amb dades acadèmiques dels alumnes i una segona amb dades bancàries: un alumne té unes dades bancàries i, alhora, unes dades acadèmiques. La utilitat d'aquest tipus de relació és realment escassa.
La relació n a n, es l'anomenada "varis a varis". aquesta relació es produeix quan els registres de les dos taules tenen més d'una correspondència entre ells. Aquest tipus de relació serà convenient evitar-la o deixar-la per a casos excepcionals. Sempre que tingueu una relació d'aquest tipus serà més útil convertir-la en dues relacions 1 a n. Això es podria fer mitjançant la creació d'una taula intermèdia entre les dues inicials i establint dues relacions 1 a n entre les dues taules inicials dels extrems i la central de nova creació. Un exemple d'això podria ser una relació entre una taula de Pel·lícules i una taula d'Actors: un mateix actor ha pogut participar en diverses pel·lícules i una pel·lícula pot tenir diversos actors. Aquest raonament us dóna una relació n a n. La solució apuntada és crear una tercera taula Actors/Pel·lícules en la qual anotareu els actors de cada pel·lícula i les pel·lícules de cada actor. Així queda desfeta la relació n a n i se'n fan dues 1 a n. Veurem un cas pràctic més endavant. |
| |
Com es fa una relació entre taules |
| |
- Des de la finestra principal de l'OpenOffice Base obrim Eines i cliquem en Relacions.
|
| |
- S'obre la finestra de disseny, ara buida, i un quadre de diàleg, "afegeix taules", on seleccionarem cada taula que volem relacionar i clicarem el botó "Afegeix". Un petit quadre amb el nom de la taula i els camps apareix a la finestra de fons, abans buida.
|
| |
- Afegim tres taules per relacionar: la taula "llibres", la taula "autors" i la taula "editorials". Finalment cliquem el botó "Tanca".
|
| |
- Col·loquem i refem les mides de les finestretes amb els camps de cada taula per tal de treballar amb comoditat i establim les relacions:
- Arrosseguem el camp clau codi_autor de la taula "autors" i ho deixem sobre el camp codi_autor de la taula "libres"
- Arrosseguem tambè el camp codi_editorial de la taula "editorials" per deixar-lo sobre el camp codi_editorial de la taula "llibres".
Les dos relacions són del tipus 1 a n: Un autor pot tenir molt llibres; molts llibres seran de la mateixa editorial i només de ella.
|
| |
Configurar les relacions. El quadre de diàleg "Relacions" |
| |
Una altra forma d'establir les relacions és clicant sobre la icona "Nova relació" de la barra d'eines. Aquest clic obre el quadre de diàleg "Relacions" tal com es mostra en la imatge següent. |
| |
Si observeu aquest quadre, veureu que presenta en primer lloc dos finestres desplegables per triar les taules implicades en la relació. Més abaix ens permet seleccionar els camps implicats de cada taula i finalment ens ofereix la possibilitat de decidir i triar opcions d'actualització i d'eliminació.
Aquestes opcions determinen com ha de comportar-se la base de dades si més tard modifiquem o eliminem dades d'una taula que afecten a l'altra taula relacionada amb ella.
- Sense acció: Els canvis sobre els registres de la taula principal no afectaran a les dades relacionades en la segona taula.
- Actualitza en cascada - Suprimeix en cascada: Sempre que realitzem algun canvi en les dades d'una taula s'actualitzaran o eliminaran las dades vinculades de les altres taules.
- Posa-ho a nul: Els canvis o eliminació de clau es substitueixen per valors null en els registres afectats de la taula secundària.
- Per defecte: Quan marquem aquesta opció, els camps de la taula secundària afectats pels canvis s'omplen amb el valor definit en les propietats de la clau principal.
|