1. Access
La Integritat Referencial
(Prèviament s’ha d’haver estudiat les presentacions “Relacions entre taules” i
“La clau principal i forana”)
Faustí Giner – Integritat referencial
1
2. Integritat referencial
Taula secundària
Què passa si s’esborra un alumne
de la taula primària?
Taula primària
Qualificacions
despenjades
(No tenen referència en
la taula principal)
Faustí Giner – Integritat referencial
Si alguna dada de la
taula secundària no te
una referència en la
primària, es pot
considerar que és un
error: En el cas de la
figura, tenim unes
notes que pertanyen a
l’alumne 1234, però no
tenim més dades de
l’alumne; no sabem qui
és ni com es diu.
Aquest és l’error.
En aquest cas es diu
que les dades estan
despenjades o que no
tenen “pare”. És un
error d’integritat
referencial.
2
3. Integritat referencial
Què passa si es modifica la clau de
la taula primària?
Taula secundària
Taula primària
3456
Les qualificacions
del Num Alu 1234,
no tenen referència
en la taula primària
Igual que en el cas
anterior es produeix
un error d’Integritat
referencial.
Qualificacions
despenjades
Faustí Giner – Integritat referencial
3
4. Integritat referencial
Taula secundària
3456
Què passa si es modifica la clau
forana de la taula secundària?
Taula primària
Les qualificació
del Num Alu
3456, no te
referència en la
taula primària
Qualificació
despenjada
Faustí Giner – Integritat referencial
Igual que en el
cas anterior es
produeix un error
d’Integritat
referencial.
4
5. Quan en la taula secundària tenim files
que no estan relacionades amb cap fila
de la taula primària, es a dir, estan
despenjades o “sense pare”
Tenim un problema de:
INTEGRITAT REFERENCIAL
Faustí Giner – Integritat referencial
5
6. Com evitar els errors d’integritat referencial?
Podem evitar que es produeixin aquest problemes tenint molta
cura al afegir, modificar o eliminar les dades de la base de
dades.
Però es molt difícil portar aquest control. Per això Access
disposa d’un mecanisme que ens permet controlar aquesta
integritat referencial de forma automàtica. Si l’activem, no
podrem (Access no ens deixarà) realitzar cap operació que
produeixi un error d’integritat referencial.
Es pot indicar a Access que controli la integritat referencial des
de la finestra de les relacions
Faustí Giner – Integritat referencial
6
7. Al crear o modificar les
relacions ....
... obtenim la
finestra de les
propietats de les
relacions.
Faustí Giner – Integritat referencial
7
8. Indicar la Integritat referencial
Si activem la casella “Exigir integridad
referencial”, demanem a Access que
cada cop que es fa alguna operació
(afegir, esborrar o modificar), comprovi
que no hi ha cap problema de Integritat
Referencial.
Faustí Giner – Integritat referencial
8
9. Integritat Referencial
La integritat referencial assegura
que totes les files de la taula
secundària es poden relacionar
amb una fila de la taula primaria
Faustí Giner – Integritat referencial
9
10. Integritat referencial
Si activem la integritat referencial no ens deixarà:
Esborrar fila de la taula primaria si té files relacionades en la
secundària.
Modificar una clau de la taula primaria si amb això deixem
despenjades dades en la taula secundària.
Posar una clau forana en la taula secundària que no existeixi en
la primària
Podem establir excepcions:
Si activem “Actualizar en cascada”o “Eliminar en cascada”
Faustí Giner – Integritat referencial
10
12. Si hem indicat: Actualitzar en
cascada....”
Taula secundària
Taula primària
2315
2315
2315
2315
Faustí Giner – Integritat referencial
1234
2315
Si es modifica el
número de l’alumne,
es modificaran totes
les files que facin
referència al alumne
de forma automàtica
Així és manté la integritat referencial
12
13. Si hem indicat: Eliminar en cascada....”
Faustí Giner – Integritat referencial
13
14. Eliminar en cascada.......
Taula secundària
Taula primària
•Si s’elimina la fila
d’un alumne en la
taula primària
•es suprimiran totes
les files de la taula
secundària que facin
referència al alumne
de forma automàtica.
Així és manté la integritat referencial
Faustí Giner – Integritat referencial
14
15. Eliminar en cascada.......
•Si s’elimina una fila de la taula principal,
•també s’eliminaran les files relacionades de la
taula secundària.
Faustí Giner – Integritat referencial
15
16. Resum:
La integritat referencial assegura que totes les
files de la taula secundària es poden
relacionar amb una fila de la taula primaria
Si activem “Actualizar en
cascada ...”
Si es modifica una clau de la
taula principal, es
modificaran totes les foranes
de la taula secundària, que
siguin iguals a la clau.
Si activem “Eliminar en
cascada ...”
Si s’elimina una fila de la
taula principal, també
s’eliminaran les files
relacionades de la taula
secundària.
Faustí Giner – Integritat referencial
16
17. Quan activar .....
Integritat referencial: Pràcticament sempre. Només
no es podrà activar en casos de bases de dades antigues
en les que interessa mantenir dades amb inconsistència
referencial.
Actualizar en cascada: Quan estem segurs que la
modificació automàtica de la clau forana no te cap
repercussió. Per tant és una decisió a prendre.
Eliminar en cascada: Quan estem segurs que la eliminació
automàtica de les files de la taula secundària no te cap
repercussió ( que no faran falta en el futur). Per tant és una
decisió a prendre.
Faustí Giner – Integritat referencial
17