5. Relacions d'un a diversos

Índex
Capítol anterior
Capítol següent

5.1. Definició

Una relació d'un a diversos (1:N) és aquella que s'estableix prenent com a base la igualtat entre els valors de dos camps de dues taules, si un és clau primària en la seva taula i l'altre no ho és en la seva.

Aquesta és la relació per excel·lència de les bases de dades relacionals.

Una empresa té tres plantes de fabricació a tres poblacions diferents, en cada una de les quals hi ha una línia diferent de productes. Per a representar les dades rellevants establim dues taules, anomenades Plantes i Productes.

En la primera recollim les dades referides a les plantes de fabricació:

En la segona recollim les dades específiques de cada producte. I com una dada més d'aquesta segona taula, hi indiquem el codi de la planta en què es fabrica el producte:

Podem observar que hi ha un camp comú, Codi de Planta, que és clau primària en una taula i no ho és en una altra. Això és així perquè cada planta fabrica diversos productes, però cada producte es fabrica en una sola planta: la relació és 1:N.

 

5.2. Claus secundàries i taules secundàries

Un camp vinculat a una clau primària d'una altra taula s'anomena clau secundària, exterior o forastera de la seva taula.

La taula que posseeix la clau primària és la taula principal, i l'altra la secundària.

Així, en l'exemple anterior, Codi de Planta és una clau exterior en la taula Productes. La taula Plantes és la taula primària, i la taula Productes la taula secundària.

La condició de taula primària o secundària no és doncs una qualitat de la taula com a tal, sinó de la relació: una taula pot ésser primarà en una relació i secundària en una altra.

Suposem una base de dades urbanístiques en què la unitat és la Finca, i construïm una taula de Finques amb les dades pròpies d'aquestes, com ara la Qualificació urbanística. Cada Finca pertany a un sol Municipi; establim una taula de Municipis, on recollim dades específiques d'aquests, com ara si tenen la qualificació legal de Municipi de Muntanya. I, finalment, cada Municipi pertany a una Comarca; establim una taula de Comarques, on recollim dades corresponents a aquestes. Per fer possibles les relacions, a Municipis hi ha Comarca com a clau secundària i a Finques hi ha Municipis com a clau secundària.

La taula Municipis és secundària en relació a Comarques, ja que conté un camp - Comarca - que és clau en aquesta darrera. I alhora la taula Municipis és principal en relació a Finques, ja que aquesta conté una clau secundària que és Municipi, clau principal de Municipis.

 

5.3. Integritat referencial

La integritat referencial és una condició de tipus lògic, que fa impossible que en una clau secundària aparegui un valor que no tingui el seu equivalent en la clau primària de la taula principal.

Què passaria si, en l'exemple anterior, entressim el municipi d'Igualada i a la taula de Comarques no hi hagués el registre corresponent a l'Anoia?

Per motius de tipus pràctic, els sistemes informàtics solen permetre de triar entre exigir o no la integritat referencial. A Access això constitueix la segona fase de l'establiment de les relacions. Cal tenir present que només si exigim la integritat referencial podem parlar de veritables relacions; altrament ens trobem davant simples criteris de coincidència.

De la mateixa manera que la manca d'exigència de la integritat d'entitat ha de ser una situació provisional, també ha de ser provisional la manca d'exigència d'integritat referencial.

 

5.4. Claus primàries múltiples i la relació 1:N

L'Acces no posseeix cap mecanisme que permeti al conjunt d'una clau primària composta constituir-se en bloc com el costat 1 d'una relació 1:N. Cal recórrer doncs obligatòriament a un codi, i prendre les precaucions indicades.