2. Integritat d'entitat i integritat de domini

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

2.1. Introducció

En el disseny dels registres i els camps d'una taula és altament recomanable la satisfacció de determinats requisits, anomenats condicions d'integritat i condicions de normalitat, que en bona part es dedueixen del que ja hem dit. Aquesta recomanació esdevé obligació si volem establir relacions entre taules.

 

2.2. Clau primària i integritat d'entitat

Els camps que descriuen les propietats de cada element representat en una taula són de dues menes: n'hi ha uns que són definitoris i d'altres que són descriptius.

Cada persona, per exemple, és única i irrepetible: hi ha doncs alguns trets que són definitoris de la identitat personal: des d'un punt de vista legal, per exemple, el número del DNI. Hi ha altres trets, en canvi, que són àmpliament compartits: per exemple, tenir els ulls blaus, o haver nascut el 1953.

Allò que defineix d'una manera inequívoca un element en una taula s'anomena clau primària d'aquesta taula i, en el cas més senzill, hi correspon una columna o camp.

En una taula que recollís dades sobre plantes, el camp Nom científic seria la clau primària; les altres dades serien camps descriptius.

D'aquesta distinció es desprenen immediatament dues conseqüències:

Aquestes condicions són de naturalesa lògica, però a la vida real no són sempre fàcils de satisfer, perquè la recollida de dades no és un acte instantani, sinó un procés, i en un determinat moment d'aquest procés podem ignorar la dada corresponent a la clau primària.

De tornada a casa el primer dia de Facultat, en Joan fa mentalment una base de dades dels companys de curs: l'Òscar i la Irene, que ja coneix molt bé perquè eren companys d'Institut; un noi que s'ha fet un embolic quan el professor li ha preguntat una banalitat, en Peris - s'ha fixat en el nom perquè diuen que és fill d'un peix gros - la noia de vermell que se li ha assegut al costat. Al cap d'uns dies, ja sap el nom de la noia, Alícia Ramis (als seus efectes, això és la clau primària) i sap també que en Peris i el noi que es va embarbussar són el mateix: el nombre dels seus registres ha disminuït en un.

Per aquest motiu els sistemes informàtics permeten formalitzar la condició de clau primària o no formalitzar-la; cal tenir sempre molt present la distinció. Si provisionalment ens cal deixar en blanc el camp de la clau primària, momentàniament haurem de crear una taula sense formalitzar-hi la condició de clau primària del camp corresponent. És molt important no perllongar gaire aquesta situació, perquè mentrestant el sistema informàtic no ens previndrà del risc de deixar el camp buit ni ens facilitarà cap filtre que eviti la indesitjada entrada de duplicats.

Tot amb tot, cal tenir present que cap sistema informàtic no ens impedirà d'entrar duplicats si no som prou rigorosos en les denominacions del termes.

Al capdavall pot succeir que en Toni i l'Antoni siguin la mateixa persona.

 

2.3. Clau primària lògica i clau primària operativa: ús de codis

Molt sovint es fan servir codis com a claus primàries. Aquests codis només són en realitat una clau primària operativa; la veritable clau primària, la de tipus lògic, és una altra.

Podem numerar els models d'una marca de cotxes i fer servir el codi numèric en comptes del nom del model. La clau primària des del punt de vista lògic és el nom del model, l'operativa, el codi.

Quan un codi té una oficialitat i una alta difusió social - per exemple el número del DNI - el seu ús és alhora un avantatge de tipus operatiu i de tipus lògic. Però altra mena de codis - número de client, número de peça, número d'alumne - poden tenir avantatges operatius però inconvenients de tipus lògic. Al capdavall allò que ens interessa no és la integritat d'entitat del codi com a tal codi, sinó la dels clients, de les peces o els alumnes.

En el cas extrem recorrem a números interns exclusius de la taula (per exemple, un codi autonumèric). És evident que la seva utilitat operativa és òptima, però les garanties d'integritat d'entitat real, nul·les.

No hi ha doncs receptes infalibles, i farem molt bé de reflexionar a fons sobre què ens assegura tal o tal decisió i quines mesures prenem per minimitzar les possibilitats d'error en allò que no queda assegurat.

 

2.4. Claus primàries compostes

També és possible d'establir com a clau primària no pas un camp, sinó un conjunt de camps (per exemple, nom, primer cognom i segon cognom). Si la clau primària és un conjunt de camps, la definició de l'element i per tant la condició de no repetició s'entén estesa al conjunt dels camps que componen la clau primària; és a dir, a la taula es poden repetir els valors individuals dels camps, però no les combinacions d'aquests. Si la clau primària és formada de dos o més camps, no se'n pot deixar en blanc cap.

Abans de decidir l'establiment d'una clau primària composta, és imprescindible assegurar-se que els valors dels camps que l'han de compondre són mútuament independents.

L'exemple típic de clau primària composta és la formada, en una taula de dades personals, pel nom, el primer cognom i el segon cognom (Encara que en conjunts molt amplis és probable que hi hagi alguna repetició i per tant calgui complementar-la d'alguna manera).

En aquests casos és gairebé obligat l'ús d'una clau primària formal constituïda per un codi.

 

2.5. Mesures precautòries

Sempre que es plantegi la dualitat entre una clau primària lògica i una d'operativa, és imprescindible d'assegurar la integritat d'entitat de la primera d'una manera indirecta. Per exemple, en Acces poden fer-se servir els recursos següents:

  1. Si la clau primària de tipus lògic és constituïda per un sol camp, n'hi ha prou de fer-hi servir l'opció camp indexat sense duplicats. Això ens impedirà l'entrada de duplicats.
  2. Més complicat és el cas en què un codi representa una clau primària composta de diversos camps. Cal construir una consulta de recerca de duplicats sobre el conjunt dels camps que constitueixen la clau primària lògica. Això, però, és només una comprovació a posteriori, que no ens evita l'entrada de duplicats; cal, doncs, adoptar una rutina d'aplicació a intervals regulars de temps.

 

2.6. Integritat de domini

Els valors que entren a formar part d'una columna queden inclosos dins un conjunt prèviament acceptat. Per exemple, una columna que reculli l'any de naixement d'una persona ha de contenir un nombre. La condició d'integritat de domini adquireix una importància rellevant a l'hora d'establir relacions.

Els sistemes informàtics proveeixen un conjunt de recursos limitats per a imposar que un camp sigui numèric, autonumèric, de data i hora, de text, de contingut lògic (sí / no)... I permeten a més determinades condicions de rang (per exemple, evitar que en un determinat camp hi entrin nombres negatius).