Conceptes bàsics del model relacional i correspòndències amb el model entitat relació extès (EER).
Aplicació de les 3 formes normals i la forma normal Boyce-Codd. Normalització de taules amb exemples de les diferents situacions.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Objectius
1.
Coneixements previs
• Model enitat-relació (ER).
• Entitat i conjunt d'entitats.
◦ Entitats fortes i dèbils
• Atributs
◦ Domini
◦ Null
◦ Identificador
◦ Multivalor
◦ Compost o jeràrquic
◦ Calculat o derivat
• Relacions
◦ Tipus de relació i cardinalitat màxima i mínima
◦ Participació total / parcial
◦ Ternàries (n-àries)
◦ Reflexives
• Especialització i generalització
◦ Total o parcial
◦ Disjunta o solapada
Autor: Miquel Boada Pàgina 1 de 32
2.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
MODEL RELACIONAL
Normalització
Miquel Boada Artigas
Autor: Miquel Boada Pàgina 2 de 32
3.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Index
Objectius 1
Coneixements previs..................................................................................................................................1
MODEL RELACIONAL...........................................................................................................................2
Introducció.................................................................................................................................................7
Model relacional.........................................................................................................................................7
Objectius....................................................................................................................................................7
Terminologia..............................................................................................................................................7
Registre................................................................................................................................7
Taula....................................................................................................................................7
Camp....................................................................................................................................8
Clau primària.......................................................................................................................8
Clau candidata o secundària................................................................................................8
Dependència funcional...............................................................................................................................9
Sistema càlcul dependència funcional.................................................................................9
Càlcul dependència funcional..............................................................................................9
Exemple.............................................................................................................................10
Normalització...........................................................................................................................................16
Anomalies de no normalització.........................................................................................16
Redundància de dades........................................................................................................16
Coherència de dades..........................................................................................................16
Procés de normalització.....................................................................................................17
Formes normals........................................................................................................................................20
Primera forma normal (1FN).............................................................................................20
No hi ha registres duplicats................................................................................................20
No hi ha atributs derivats...................................................................................................22
No hi ha atributs compostos..............................................................................................22
No hi ha noms de camps duplicats....................................................................................22
Tots els valors de cada camp són atòmics..........................................................................23
Segona forma normal (2FN)..............................................................................................25
Identificar clau primària....................................................................................................25
Clau primària per taula telèfon..................................................................................25
Clau primària per la taula «Estudiant UF»................................................................26
Conversió de la taula a 2a FN............................................................................................27
Tercera forma normal (3FN)..............................................................................................29
Aplicació 3FN a taula «Telèfon».......................................................................................29
Aplicació 3FN a taula «UF»..............................................................................................29
Aplicació 3FN a taula «Qualificació»...............................................................................30
Aplicació 3FN a taula «Estudiant»....................................................................................30
Tercera forma normal – Boyce-Codd (3FNBC)................................................................32
Aplicació 3FNBC a taula «Telèfon»..................................................................................32
Aplicació 3FNBC a taula «UF».........................................................................................33
Aplicació 3FNBC a taula «Qualificació»..........................................................................33
Aplicació 3FNBC a taula «Estudiant»...............................................................................34
Aplicació 3FNBC a taula «Població»................................................................................34
Webgrafia.................................................................................................................................................35
Autor: Miquel Boada Pàgina 3 de 32
4.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Autor: Miquel Boada Pàgina 4 de 32
5.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Introducció
Un model és un conjunt de normes que ens permeten descriure el món real. Els models
són importants perquè unifiquen la forma de representar la informació fent possible
l’entesa entre les diferents persones.
El procés general en la creació d'un sistema de base de dades consisteix en:
Especificacions->Model E-R->Model relacional->Model físic.
Model relacional
El model relacional es desenvolupa a partir del model enitat-relació (ER) i és el penúltim
pas per a desenvolupar el model físic, que conformen les instruccions a executar. A
diferència del model ER, es disposen d'una sèrie de tècniques o passos per a crear el
model relacional.
Igual que el model ER, el model relacional és un model semàntic: es centra amb el
significat de les dades a través de la seva representació.
Objectius
El model relacional consisteix en realitzar un disseny de la informació, normalment a
partir d'un model ER previ, tenint com a objetius bàsics:
1. Minimitzar la redundància de dades.
2. Assegurar l'accés eficient a la informació.
Per aconseguir aquests objectius s'estableixen 5 formes normals o 5 regles que cal
complir. Tot bon disseny cal que compleixi amb aquestes regles, tot i que a nivell
«pràctic» és suficient amb les 3 primeres.
Terminologia
La terminologia que s'utilitza en el model ER és diferent a l'utilitzada en el model
relacional. És per aquest motiu que cal definir alguns termes i fer la correspondència
amb el model ER.
Registre
Un registre es correspon a una entitat del model ER. En aquest sentit, un registre estarà
forma per un conjunt de dades normalment de diferents tipus.
Taula
Una taula és una estructura que permet emmagatzemar un conjunt de registres. Una
taula és l'equivalent a un conjunt d'entitats en el model ER, tot i que, com veurem
posteriorment, algunes taules són el resultat d'una relació entre diferents conjunts
d'entitats.
Autor: Miquel Boada Pàgina 5 de 32
6.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Camp
Un camp es correspon a una dada d'un registre. Un camp és l'equivalent a un atribut del
model ER, tot i que no tots els atributs es transformen en camps. Cada camp tindrà
associat un tipus, que normalment ve determinat pel domini de l'atribut o la naturalesa.
Clau primària
Una clau primària és un atribut identificador associat a un conjunt d'entitats. Per tant,
una clau primària serà sempre un o varis camps que em permeten identificar un
registre dins una taula. Si la clau primària està formada per varis camps s'obté una clau
composta.
Clau candidata o secundària
En el model ER a vegades hi ha varis atributs que podem escollir com a atribut
identificador. Per exemple, si tinc un conjunt d'entitats «treballador» tinc 2 possibles
candidats (com a mínim) a ser identificador: «número seguretat social» i «dni». Tots els
camps associats a atributs identificadors que no formin part de la clau primària són
claus candidates.
Autor: Miquel Boada Pàgina 6 de 32
7.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Dependència funcional
Una dependència funcional es dóna quan a partir d'un o varis atributs d'un conjunt de
relacions es pot determinar el valor de qualsevol altre atribut. Existirà una dependència
funcional entre l'atribut «a1» i «a2» que pertanyen al mateix conjunt de relacions «A» si
sabent el valor de l'atribut «a1» sempre sé el valor de l'atribut «a2». Expressarem que
«a2» té una dependència funcional d'«a1» o bé que «a1» determina a «a2» utilitzant
una fletxa (→) i incloent entre {} tots els atributs que queden determinats.
a1 → {a2} : a1 determina a a2 o a2 té una dependència funcional d'a1
a2 → {a1} : a2 determina a a1 o a1 té una dependència funcional d'a2
Sistema càlcul dependència funcional
Una dependència funcional moltes vegades es pot deduir pel que representa l'atribut.
Així, per exemple, si tinc un atribut «codi postal» i un atribut «nom» (de la població),
està clar que donat un codi postal jo sempre podré dir quina població és: el nom de la
població té una dependència funcional respecte al codi postal o que el codi postal em
determina el nom de la població. En canvi, el nom de la població no determina el codi
postal, ja que Barcelona té molts codis postals: si dic Barcelona no puc donar només un
únic codi postal! El codi postal no té una dependència funcional en relació al nom de la
població.
Càlcul dependència funcional
Les dependències funcionals no sempre són tan clares com el codi postal i el nom d'una
població. Quan es dónen aquesta situació , cal disposar d'un sistema per a poder
determinar quines són les dependències funcionals. Per explicar el sistema suposarem
que tenim un conjunt d'entitats «A» amb els atributs «a1», «a2» i «a3».
1. Crearem una sèrie d'entitats que siguin representatives.
2. Mirarem quin atribut o atributs no tenen repeticions
3. Si hi ha un atribut que no té cap repetició, la resta d'atributs tindran una
dependència funcional respecte a aquest atribut.
Autor: Miquel Boada Pàgina 7 de 32
8.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Suposem que les entitats que agafem com a mostra són les que es mostren en la taula:
Conjunt entitats: A Dependències funcionals
atrib1 atrib2 atrib3 Observem com l'atribut 1 i 2 («atrib1» i «atrib2») no tenen
cap valor repetit per les entitats de mostra. Si em diuen un
valor de «l'atrib1» o de l'atrib2 sempre se sap a quin valor
correspon per la resta d'atributs. Per tant, puc afirmar que:
atrib1 → {atrib2, atrib3} i atrib2 → {atrib1, atrib3}
L'atrib3 no determina cap atribut, ja que per exemple, pel
valor va31 no puc dir un valor de l'atrib1 únic ni tampoc de
l'atrib2.
atrib3 → {}
va11 va21 va31
va12 va22 va31
va13 va23 va31
va14 va24 va32
va15 va25 va33
va16 va26 va33
Si el nostre conjunt d'entitats tingués com a mostra de valors (s'ha sombrejat l'única
entitat en la qual s'han fet canvis:
Conjunt entitats: A Dependències funcionals
atrib1 atrib2 atrib3 Els valors d'«atrib1» no han canviat i són tots diferents. Per
tant, la dependència es manté:
atrib1 → {atrib2, atrib3}
Per contra, «atrib2» representa un valor duplicat «va22». Per
aquest valor, no puc determinar ún únic valor de l'atrib1, pot
ser «va12» o «va13». Per tant, «atrib2» no em determina
«atrib1». «atrib2» sí que continua determinant «atrib3», ja
que pel valor repetit «va22», el valor d'«atrib3» és el mateix
«va31»
atrib2 → {atrib3} i atrib3 → {}
va11 va21 va31
va12 va22 va31
va13 va22 va31
va14 va24 va32
va15 va25 va33
va16 va26 va33
Exemple
Utilitzem un exemple per a veure com calculem les dependències funcionals. Suposem
que tenim una taula amb els camps: «Cavall», «Hípica», «Data», «Temps», «Club»,
«Llicència», «Campió» i «Núm.» amb els següents registres:
Autor: Miquel Boada Pàgina 8 de 32
9.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Cavall
Cavall Hípica Data Temps Club Llicència Campió Núm.
Amor Camil 11/10/12 01:34:00 8474 2976 Fruit 2978
Diversió Camil 11/10/12 01:49:00 8474 2977 Fruit 2978
Fruit Camil 11/10/12 01:32:00 8474 2978 Fruit 2978
Gaudir Camil 11/10/12 01:54:00 8474 2979 Fruit 2978
Amor Camil 13/10/12 01:34:00 8474 2976 Diversio 2977
Diversió Camil 13/10/12 01:39:00 8474 2977 Diversio 2977
Fruit Camil 13/10/12 01:12:00 8474 2978 Diversio 2977
Gaudir Camil 13/10/12 01:25:00 8474 2979 Diversio 2977
Amor Rial 15/10/12 01:34:00 7000 2976 Diversio 2977
Diversió Rial 15/10/12 01:39:00 7000 2977 Diversio 2977
Fruit Rial 15/10/12 01:12:00 7000 2978 Diversio 2977
Gaudir Rial 15/10/12 01:25:00 7000 2979 Diversio 2977
Per a calcular les dependències funcionals fem una taula on creuarem tots els camps
entre ells. Per a cada un dels camps indicarem si hi ha una dependència funcional o no
entre els dos atributs relacionats.
Identificarem al cavall i l'hípica per la seva inicial. Identificarem la data segons el dia.
Identificarem el temps pel minut. Identificarem la llicència i el núm. per l'últim dígit. Si
el fons de la cel·la de la taula és de color verd , hi ha una dependència funcional, en cas
contrari no hi ha dependència funcional.
Autor: Miquel Boada Pàgina 9 de 32
10.
Desenvolupament aplicacions multiplataforma(DAM) Mòdul 2 – Bases de dades
UF1 - Introducció a les bases de dades
Tema 2 – Model relacional
Cavall Hípica Data Temps Club Llicència Campió Num.
DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu
Cavall NO A → C,R NO A → 11,13 NO D → 49,39 NO F → 4,0 Sí Cavall → {Llic.} NO A → F,D NO A → 7, 8
Hípica NO R → A,D,F,G NO C → 11,13 NO R → 34,39,12,25 Sí Hípica → {Club} NO R → 6,7,8,9 NO C → F,D NO C → 7, 8
Data NO 11 → A,D,F,G Sí Data → {Hípica} NO 15 → 34,39,12,25 Sí Data → {Club} NO 15 → 6,7,8,9 Sí Data → {Camp.} Sí Data→{Núm.}
Temps Sí Temps → {Cavall} NO 12 → C,R NO 12 → 13,15 NO 12 → 4,0 Sí Temps → {Llic.} Sí Temps → {Camp.} NO 34 → 7, 8
Club NO 0 → A,D,F,G Sí Club → {Hípica} NO 4 → 13,11 NO 0 → 34,39,12,25 NO 0 → 6,7,8,9 NO 4 → F,D NO 4 → 7, 8
Llicència Sí Cavall → {Llic.} NO 6 → C,R NO 6 → 13,15,11 NO 7 → 49,39 NO 7 → 4,0 NO 7 → F,D NO 6 → 7, 8
Campió NO F → A,D,F,G NO D → C,R NO D → 13,15 NO D → 34,39,12,25 NO D → 4,0 NO 0 → 6,7,8,9 Sí Camp.→{Núm}
Núm NO 8 → A,D,F,G NO 7 → C,R NO 7 → 13,15 NO 7 → 34,39,12,25 NO 7 → 4,0 NO 8 → 6,7,8,9 Sí Núm.→{Camp.}
Autor: Miquel Boada Pàgina 10 de 32
11.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Cavall → {Llicència}
Hípica → {Club}
Data → {Hípica, Club, Campió, Num}
Temps → {Cavall, Llicència, Campió}
Club → {Hípica}
Llicència → {Cavall}
Campió → {Núm.}
Núm. → {Campió}
Donat que no hem trobat cap atribut que em determini a tots els altres el procés
continua agafant parelles de camps, fins a trobar una parella, trio... que impliqui a
tots els camps de la taula. En aquest cas, proseguim el procés combinant el camp
data amb tota la resta. El motiu de l'elecció de data és perquè aquest atribut ja
determina a 4 atributs de la taula.
12.
Desenvolupament aplicacions multiplataforma(DAM) Mòdul 2 – Bases de dades
UF1 - Introducció a les bases de dades
Tema 2 – Model relacional
Atribut Cavall Hípica Temps Club Llicència Campió Núm.
Data DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu DF Motiu
Cavall Sí {data,cavall}->{Hípica} Sí {data,cavall}->{Temps} Sí {data,cavall}->{Club} Sí {data,cavall}->{Llicència} Sí
{data,cavall}-
>{Campió} Sí
{data,cavall}-
>{Núm}
Hípica
Temps
Club
Llicència
Campió
Núm
Autor: Miquel Boada Pàgina 12 de 32
13.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Amb els camps «Data» i «Cavall» tota la resta de camps de la taula queden
determinats. La clau primària de la nostra taula és {data,cavall}.
A partir de les dependències funcionals es pot obtenir el model relacional, tot i que
les dependències funcionals és un sistema molt lent per a obtenir el model
relacional i s'utilitzen només per a validar que el model relacional compleix amb
totes les formes normals.
Autor: Miquel Boada Pàgina 13 de 32
14.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Normalització
El procés de normalització consisteix en convertir una superttaula on s'emmagatzema
tota la informació amb vàries taules menors per tal d'eliminar les anomalies de la no
normalització.
Anomalies de no normalització
Suposem que una base de dades consti d'una única taula per a emmagatzemar la
informació dels estudiants i de les unitats formatives que estan cursant. A continuació
és dóna una versió reduïda de la taula amb diferents registres
Estudiant UFs
DNI NOM TELF. POB CP ADREÇA UF Nom UF
40958733 Anna 934232775 Granollers 08402 C/Girona,23,7è 1a UF1 BD Intro
40958733 Anna 665765431 Granollers 08402 C/Girona,23,7è 1a UF2 SQL
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL
76543124 Maria 623903213 St. Celoni 08470 C/Major,15 UF2 SQL
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL
40958736 Maria 934232776 Granollers 08402 C/Major,15 UF2 SQL
Redundància de dades
Cada vegada que un estudiant cursa una unitat formativa diferent, és necessari
informar de totes les dades de l'estudiant. La probabilitat d'error s'incrementa ja que hi
ha un major volum d'informació: les dades de l'estudiant només s'haurien d'introduir
una vegada.
Coherència de dades
No es garanteix que les dades siguin coherents, ja que si per un mateix estudiant s'han
introduït dues adreces diferents, el sistema no pot controlar-ho. El fet que les dades no
siguin coherents és una conseqüència directe de la redundància de les dades.
Autor: Miquel Boada Pàgina 14 de 32
15.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Procés de normalització
Per a normalitzar el primer que cal fer és localitzar les dependències funcionals. En el
nostre exemple, és fàcil observar que hi ha 4 dependències funcionals diferents:
DNI → {NOM, TELF., POB., CP., ADREÇA}
UF → {Nom UF} i Nom UF → {UF}
CP → {POB.}
Cap de les dependències funcionals conté una clau primària. Per a obtenir una clau
primària, és necessari que entre els camps determinants i els camps amb dependència
funcional conformin tots els camps de la taula.
En el nostre cas, per a obtenir una clau primària, és necessari disposar de 2 camps.
Combinant «DNI» amb «UF» o «DNI» amb «nom UF» s'obté la clau primària
{DNI,UF } → {NOM, TELF., POB., CP., ADREÇA, Nom UF}
Les dependències funcionals ens indiquen com hem de dividir la nostra taula en taules
més petites. En aquest cas tindrem tres taules diferents, una per a cada dependència
funcional1.
CP → {POB.} UF → {Nom UF} o Nom UF → {UF}
Població UF
Codi Postal (CP) Nom (Població) Codi Nom
08402 Granollers UF1 BD Intro
08403 Granollers UF2 SQL
08470 St. Celoni
Creem una taula a partir dels camps que em determina el camp DNI. Anomenem
estudiant a aquesta taula. De la taula estudiant cal eliminar tots els camps que tinguin
una dependència funcional amb un altre camp; en el nostre cas, el camp població
depèn de codi postal i per tant, eliminem el camp població de la taula. Els camps «UF» i
«nom UF» no estan determinats pel DNI.
1 La dependència funcional UF → {Nom UF} i Nom UF → {UF} cal contabilitzar-la com una única dependència funcional ja que hi
ha els mateixos camps implicats.
Autor: Miquel Boada Pàgina 15 de 32
16.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
DNI → {NOM, TELF., POB., CP., ADREÇA}
Estudiant
DNI NOM TELF. POB CP ADREÇA
40958733 Anna 934232775 Granollers 08402 C/Girona,23,7è 1a
40958733 Anna 665765431 Granollers 08402 C/Girona,23,7è 1a
76543123 Maria 623903212 Granollers 08403 C/Balmes,15
76543124 Maria 623903213 St. Celoni 08470 C/Major,15
40958735 Pere 934232776 Granollers 08402 C/Major,15
40958736 Maria 934232776 Granollers 08402 C/Major,15
La taula final queda com:
DNI → {NOM, TELF., POB., CP., ADREÇA}
Estudiant
DNI NOM TELF. CP ADREÇA
40958733 Anna 934232775 08402 C/Girona,23,7è 1a
40958733 Anna 665765431 08402 C/Girona,23,7è 1a
76543123 Maria 623903212 08403 C/Balmes,15
76543124 Maria 623903213 08470 C/Major,15
40958735 Pere 934232776 08402 C/Major,15
40958736 Maria 934232776 08402 C/Major,15
{DNI,UF } → {NOM, TELF., POB., CP., ADREÇA, Nom UF}
Estudiant UFs
DNI NOM TELF. POB CP ADREÇA UF Nom UF
40958733 Anna 934232775 Granollers 08402 C/Girona,23,7è 1a UF1 BD Intro
40958733 Anna 665765431 Granollers 08402 C/Girona,23,7è 1a UF2 SQL
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL
76543124 Maria 623903213 St. Celoni 08470 C/Major,15 UF2 SQL
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL
40958736 Maria 934232776 Granollers 08402 C/Major,15 UF2 SQL
DNI → {NOM, TELF., POB., CP., ADREÇA} UF → {Nom UF}
Autor: Miquel Boada Pàgina 16 de 32
17.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
{DNI,UF } → {}
Estudiant UFs
DNI UF
40958733 UF1
40958733 UF2
76543123 UF2
76543124 UF2
40958735 UF2
40958736 UF2
{UF } → { NomUF }
Estudiant UFs
NomUF UF
BD Intro UF1
SQL UF2
Autor: Miquel Boada Pàgina 17 de 32
18.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Formes normals
El procés de normalització es pot aplicar de forma més metòdica (i segura) aplicant
cada una de les 5 formes normals. Tot i que hi hagin 5 fòrmules normals, a efectes
pràctics només cal aplicar fins a la 3era forma normal.
Estudiant UFs
DNI Nom Telf.
POBLACIO
Adreça
UF
Nota
Total
UFsNOM CP Codi Nom
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF1 BD 8 2
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF2 SQL 7 2
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL 8 2
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL 8 2
75343788 Joan 934232775 Granollers 08402 C/Girona,23 UF2 SQL 7 1
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL 7 1
40958736 Maria 934232776 St. Celoni 08470 C/Major,15 UF2 SQL 7 1
Primera forma normal (1FN)
Per tal que una taula estigui en 1FN cal que es compleixin els següents punts:
✔ No hi ha registres duplicats
✔ No hi hagi atributs derivats/calculats.
✔ No hi ha atributs compostos.
✔ El nom del camp és únic en tota la taula.
✔ Tots els valors de cada camp són atòmics: no hi ha multivalors.
No hi ha registres duplicats
En la taula, els últims dos registres tenen les mateixes dades. Per tal que estigui en 1a
forma normal, cal eliminar el registre duplicat.
Autor: Miquel Boada Pàgina 18 de 32
19.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Estudiant UFs
DNI Nom Telf.
POBLACIO
Adreça
UF
Nota
Total
UFsNom CP Codi Nom
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF1 BD 8 2
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF2 SQL 7 2
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL 8 1
75343788 Joan 934232775 Granollers 08402 C/Girona,23 UF2 SQL 7 1
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL 7 1
40958736 Maria 934232776 St. Celoni 08470 C/Major,15 UF2 SQL 7 1
No hi ha atributs derivats
Per tal que el model relacional compleixi en la 1FN no pot haver-hi cap atribut que sigui
derivat. Com que aquests atributs s'obtenen a partir de la informació emmagatzemada
en altres atributs, no cal guardar aquest valor: quan es necessiti saber el valor d'aquest
atribut s'executarà el càlcul.
En la taula es porta un registre de quantes unitats formatives fa cada alumne. Aquesta
informació es pot obtenir de la resta de camps, a partir de l'alumne i les UFs
assignades. Per tal que estigui en 1FN cal eliminar aquest camp.
Estudiant UFs
DNI Nom Telf.
POBLACIO
Adreça
UF
Nota
Nom CP Codi Nom
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF1 BD 8
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF2 SQL 7
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL 8
75343788 Joan 934232775 Granollers 08402 C/Girona,23 UF2 SQL 7
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL 7
40958736 Maria 934232776 St. Celoni 08470 C/Major,15 UF2 SQL 7
Autor: Miquel Boada Pàgina 19 de 32
20.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
No hi ha atributs compostos
En el nostre exemple hi ha 2 camps compostos, un relacionat amb la població i un altre
relacionat amb l'unitat formativa. Cal descomposar aquests atributs compostos amb els
valors simples.
Estudiant UFs
DNI Nom Telf. Nom CP Adreça Codi Nom Nota
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF1 BD 8
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF2 SQL 7
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL 8
75343788 Joan 934232775 Granollers 08402 C/Girona,23 UF2 SQL 7
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL 7
40958736 Maria 934232776 St. Celoni 08470 C/Major,15 UF2 SQL 7
No hi ha noms de camps duplicats
En el nostre exemple hi ha tres camps que estan batejats com a «nom». Per tant,
s'hauran de canviar el nom d'aquests camps per tal que la taula estigui en primera
forma normal.
Estudiant UFs
DNI Nom Telf. Població CP Adreça Codi UF Nota
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF1 BD 8
40958733 Anna 934232775,61543121 Granollers 08402 C/Girona,23 UF2 SQL 7
76543123 Maria 623903212 Granollers 08403 C/Balmes,15 UF2 SQL 8
75343788 Joan 934232775 Granollers 08402 C/Girona,23 UF2 SQL 7
40958735 Pere 934232776 Granollers 08402 C/Major,15 UF2 SQL 7
40958736 Maria 934232776 St. Celoni 08470 C/Major,15 UF2 SQL 7
Tots els valors de cada camp són atòmics
Per tal que la taula estigui en primera forma normal no hi poden haver-hi camps
multivalor. En aquest sentit, cal separar el telèfon («Telf.») que les dades mostren que és
un camp multivalor en una nova taula. La clau primària d'aquesta taula serà el camp o
camps determinants del camp «Telf.».
El primer que s'haurà de fer és buscar les dependències funcionals relacionades amb el
camp a separar: DNI → {Nom, Telf., Nom, CP, Adreça}
L'atribut «Telf.» té una dependència funcional respecte al camp DNI. Per tant, cal
generar una nova taula on es relacionin aquestes dues informacions. En la taula
original, cal eliminar l'atribut multivalor, ja que es podrà deduïr a partir del camp
Autor: Miquel Boada Pàgina 20 de 32
21.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
determinant i de la nova taula generada.
Telèfon
DNI Telf.
40958733 934232775
40958733 61543121
76543123 623903212
75343788 934232775
40958735 934232776
40958736 934232776
Estudiant UFs
DNI Nom Població CP Adreça Codi UF Nota
40958733 Anna Granollers 08402 C/Girona,23 UF1 BD 8
40958733 Anna Granollers 08402 C/Girona,23 UF2 SQL 7
76543123 Maria Granollers 08403 C/Balmes,15 UF2 SQL 8
75343788 Joan Granollers 08402 C/Girona,23 UF2 SQL 7
40958735 Pere Granollers 08402 C/Major,15 UF2 SQL 7
40958736 Maria St. Celoni 08470 C/Major,15 UF2 SQL 7
Tant la taula «Telèfon» com la taula «Estudiant UFs» estan en primera forma normal: les
dues compleixen les 5 regles.
Autor: Miquel Boada Pàgina 21 de 32
22.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Segona forma normal (2FN)
La segona forma normal fa referència a les dependències funcionals entre atributs
identificadors (camps claus) i atributs no identificadors (camps que no formen part de la
clau de la taula).
Per tal que es compleixi la segona forma normal cal que:
1. Estigui en 1FN.
2. No existeix cap atribut NO identificador que tingui dependència d'un dels atributs
identificadors. Si l'atribut identificador està format per 3 o més atributs , caldrà
comprovar que no hi hagi cap dependència funcional de cap atribut no
identificador respecte a cap subconjunt dels atributs identificadors.
3. Si la clau primària de la taula està formada per un únic camp i la taula compleix la
primera forma normal, la taula està també en segona forma normal.
Identificar clau primària
El primer que haurem de fer és localitzar la clau primària de la nostra taula. La clau
primària serà aquell atribut o conjunt d'atributs que em determini a tota la resta. Per
localitzar-lo hem de partir de les dependències funcionals.
Clau primària per taula telèfon
La taula telèfon està en 1a FN. Per tant, caldrà comprovar si està també en 2a FN. Per
fer-ho identificarem la seva clau principal, que està formada pels camps «DNI» i «Telf.».
{DNI,Telf.} → {}
Aquests dos camps no em determinen a cap altra camp, ja que no hi ha cap altre camp
a la taula. Per tant, és impossible que hi hagi un camp no clau (no n'hi han) que
depengui només d'una part de la clau principal.
Telèfon
DNI Telf.
40958733 934232775
40958733 61543121
76543123 623903212
75343788 934232775
40958735 934232776
40958736 934232776
Autor: Miquel Boada Pàgina 22 de 32
23.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Clau primària per la taula «Estudiant UF»
Per la nostra taula «Estudiant UF» s'han identificat les següents dependències
funcionals:
DNI → {Nom, Població., CP., Adreça}
Codi → {UF} i UF → {Codi}
CP → {Població}
Observem que no hi ha cap atribut, de forma individual, que ens determini a tots els
altres atributs: el camp DNI no em determina els camps «Codi», «UF» i «Nota».
Per a determinar la clau primària de la taula serà necessari agrupar els camps en grups
de 2. En aquest cas, la clau primària estarà formada per més d'un camp i, per tant, pot
ser que no estigui en 2a FN.
La combinació dels camps «DNI» i «Codi» ens determinen a tota la resta de camps de la
taula; si sé el «DNI» i el «Codi» puc determinar el valor de qualsevol altre camp de la
taula! Per tant, {DNI,Codi} és la clau principal o primària de la nostra taula. En aquest
cas hi ha una segona clau primària alternativa formada pels camps {DNI, UF}. Podem
utilitzar qualsevol de les dues per a comprovar si la taula està en 2FN. En el nostre cas
s'ha escollit {DNI,Codi} per a fer el desenvolupament.
{DNI,Codi} → {Nom, Població., CP., Adreça,UF,nota}
A partir de la clau primària de la taula cal comprovar si algun dels camps determinants,
de forma individual, determina a algun altre camp que no formi part de la clau.
{DNI,Codi} → {Nom, Població., CP., Adreça,UF,nota}
Camps de la clau o identificadors: DNI i Codi
Camps que no són de la clau: Nom, Telf., Població., CP., Adreça,UF
La pregunta que ens hem de fer és:
Utilitzant només el camp DNI es pot determinar algun dels camps: «nom»,
«població», «codi postal», «adreça», «UF» o «nota»?
Utilitzant només el camp «Codi» es pot determinar algun dels camps: «nom»,
«telèfon», «població», «codi postal», «adreça», «UF» o «nota»?
A l'inici del desenvolupament s'han obtingut les següents dependències funcionals:
{DNI} → {Nom, Població., CP., Adreça}
{Codi} → {UF}
i , per tant, és obvi que la resposta a les dues preguntes és «Sí» i «Sí»
Hi ha camps de la clau primària que em determinen a camps que no formen part de la
clau primària. La taula «Estudiant UFs» no està en 2a FN.
Autor: Miquel Boada Pàgina 23 de 32
24.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Conversió de la taula a 2a FN
Per a convertir la taula a segona forma normal caldrà generar taules per a cada una de
les dependències funcionals.
A partir de la dependència funcional {DNI} → {Nom, Telf., Població., CP., Adreça}
genero la taula:
Estudiant
DNI Nom Població CP Adreça
40958733 Anna Granollers 08402 C/Girona,23
76543123 Maria Granollers 08403 C/Balmes,15
75343788 Joan Granollers 08402 C/Girona,23
40958735 Pere Granollers 08402 C/Major,15
40958736 Maria St. Celoni 08470 C/Major,15
A partir de la dependència funcional {Codi} → {UF} es genera la taula:
UF
La taula no està en primera forma
normal, ja que hi ha registres
duplicats. Després de traspassar-la a
1FN obtenim
UF
Codi Nom Codi Nom
UF1 BD UF1 BD
UF2 SQL UF2 SQL
UF2 SQL
UF2 SQL
Taula normalitzada
Taula no normalitzada
Finalment cal crear la taula per la dependència funcional:
{DNI,Codi} → {Nom, Telf., Població., CP., Adreça, UF,nota}
Aquesta taula contindrà els dos camps claus {DNI,Codi} i tots els camps que no
depenguin només de «DNI» ni de «Codi», en el nostre cas «nota».
Autor: Miquel Boada Pàgina 24 de 32
25.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Qualificació
DNI UF Nota
40958733 UF1 8
40958733 UF2 7
76543123 UF2 8
75343788 UF2 7
40958735 UF2 7
40958736 UF2 7
S'han subratllat els camps claus de cada una de les taules. Una vegada s'ha particionat
la taula seguint les regles de la segona forma normal, cal verificar que totes les taules
resultants estiguin en 2a FN.
Taula Compleix segona forma normal?
Estudiant Està en 1a FN.
La seva clau primària està formada només per un atribut.
Sí
Telèfon Està en 1a FN.
No hi ha atributs no identificadors. Està en 2FN
Sí
UF Està en 1a FN (Després d'eliminar un registre)
La seva clau primària està formada només per un atribut.
Sí.
Qualificació Està en 1a FN.
El camp no clau «Nota» no depèn de «DNI» i d'«UF»
Sí
Com es pot comprovar a la taula, totes les taules estan en 2a forma normal.
Autor: Miquel Boada Pàgina 25 de 32
26.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Tercera forma normal (3FN)
La tercera forma normal fa referència a les dependències funcionals entre els atributs
no identificadors .
Per tal que es compleixi la tercera forma normal cal que:
1. Estigui en 2FN.
2. No hi hagi cap dependència funcional entre atributs no identificadors.
Aplicació 3FN a taula «Telèfon»
Telèfon
DNI Telf.
40958733 934232775
40958733 61543121
76543123 623903212
75343788 934232775
40958735 934232776
40958736 934232776
La taula «telèfon» està en 3FN:
1. Està en 2FN
2. La clau primària està composada per l'atribut {DNI,Telf}, que són tots els atributs
de la taula. Com que no hi ha cap atribut no identificador està en 3a FN.
Aplicació 3FN a taula «UF»
UF
Codi Nom
UF1 BD
UF2 SQL
La taula «UF» està en 3FN:
1. Està en 2FN
2. La clau primària està composada per l'atribut {Codi}. Només hi ha un atribut que
no sigui identificador {Nom}. Per tant, no hi pot haver cap atribut no identificador
que depengui d'un altre atribut no identificador.
Autor: Miquel Boada Pàgina 26 de 32
27.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Aplicació 3FN a taula «Qualificació»
Qualificació
DNI UF Nota
40958733 UF1 8
40958733 UF2 7
76543123 UF2 8
75343788 UF2 7
40958735 UF2 7
40958736 UF2 7
La taula «Qualificació» està en 3FN:
1. Està en 2FN
2. Només hi ha un atribut que no sigui identificador : Nota.
Aplicació 3FN a taula «Estudiant»
Estudiant
DNI Nom Població CP Adreça
40958733 Anna Granollers 08402 C/Girona,23
76543123 Maria Granollers 08403 C/Balmes,15
75343788 Joan Granollers 08402 C/Girona,23
40958735 Pere Granollers 08402 C/Major,15
40958736 Maria St. Celoni 08470 C/Major,15
Atributs identificadors: «DNI»
Atributs no identificadors: «Nom», «Població», «CP», «Adreça»
Anteriorment s'ha detectat que hi havia una dependència funcional de l'atribut
«Població» en relació a l'atribut «CP» (Codi Postal). Per tant, aquesta taula no està en
3FN, ja que hi ha una DF entre 2 atributs no identificadors.
CP → {Població}
Autor: Miquel Boada Pàgina 27 de 32
28.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Població
Nom CP
Granollers 08402
Granollers 08403
St. Celoni 08470
I eliminem l'atribut que té la dependència funcional «Població» (nom) de la taula
estudiant.
Estudiant
DNI Nom CP Adreça
40958733 Anna 08402 C/Girona,23
76543123 Maria 08403 C/Balmes,15
75343788 Joan 08402 C/Girona,23
40958735 Pere 08402 C/Major,15
40958736 Maria 08470 C/Major,15
Autor: Miquel Boada Pàgina 28 de 32
29.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Tercera forma normal – Boyce-Codd (3FNBC)
Per tal que una taula estigui en tercera forma normal Boyce-Codd cal que:
1. Estigui en 3FN
2. No hi ha cap dependència funcional entre els atributs identificadors d'una mateixa
taula
Del 2 punt es pot deduir que si l'atribut clau d'una taula està format per només un
camp, la taula estarà en tercera forma normal Boyce-Codd. Només cal preocupar-se per
aquelles taules que el seu identificador estigui format per més d'un atribut.
Aplicació 3FNBC a taula «Telèfon»
Telèfon
DNI Telf.
40958733 934232775
40958733 61543121
76543123 623903212
75343788 934232775
40958735 934232776
40958736 934232776
La taula «Telèfon» està en 3FN. El seu atribut identificador està format pels dos atributs
de la taula: {DNI,TELF}. Si hi ha una dependència funcional entre els dos atributs, no
estarà en 3FNBC.
DNI → Telf ? En cas afirmatiu no està en 3FNBC
Telf → DNI ? En cas afirmatiu no està en 3FNBC
Si observem els valors de la taula hi ha 2 telèfons repetits que tenen associat un DNI
diferent. A més , hi ha 2 DNI repetits que també tenen associat un telèfon diferent. Per
tant, ni el «DNI» té una DF de «Telf.» ni viceversa. La taula «Telèfon» està en 3FNBC.
Autor: Miquel Boada Pàgina 29 de 32
30.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Aplicació 3FNBC a taula «UF»
UF
Codi Nom
UF1 BD
UF2 SQL
La taula «UF» està en 3FN. Donat que la clau de la taula està formada només per un
camp: «Codi», la taula «UF» està en 3FNBC.
Aplicació 3FNBC a taula «Qualificació»
Qualificació
DNI UF Nota
40958733 UF1 8
40958733 UF2 7
76543123 UF2 8
75343788 UF2 7
40958735 UF2 7
40958736 UF2 7
La taula «Qualificació» està en 3FN. La clau primària associada a aquesta taula està
formada per 2 atributs: {DNI, UF}. Si hi ha una DF entre aquests dos atributs la taula no
estarà en 3FNBC.
DNI → UF ? En cas afirmatiu no està en 3FNBC
UF → DNI ? En cas afirmatiu no està en 3FNBC
Observem com pel DNI «40958733» hi ha 2 valors possibles del camp «UF» (UF1 i UF2).
Pel camp «UF», el valor «UF2» té associats múltiples DNI. Per tant, no hi ha cap DF entre
els camps identificadors i la taula està en 3FNBC.
Autor: Miquel Boada Pàgina 30 de 32
31.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Aplicació 3FNBC a taula «Estudiant»
La taula «Estudiant» està en 3FN. Donat que la clau de la taula està formada només per
un camp: «DNI», la taula «Estudiant» està en 3FNBC.
Estudiant
DNI Nom CP Adreça
40958733 Anna 08402 C/Girona,23
76543123 Maria 08403 C/Balmes,15
75343788 Joan 08402 C/Girona,23
40958735 Pere 08402 C/Major,15
40958736 Maria 08470 C/Major,15
Aplicació 3FNBC a taula «Població»
Població
Nom CP
Granollers 08402
Granollers 08403
St. Celoni 08470
Autor: Miquel Boada Pàgina 31 de 32
32.
Desenvolupament aplicacions multiplataforma(DAM)
Mòdul 2 – Bases de dades
Durada mòdul: 231 hores
UF1 - Introducció a les bases de dades
Tema 1 – Model entitat-relació
Durada UF: 48 Hores
Durada: hores
Total hores:
Webgrafia
https://es.wikipedia.org/wiki/Segunda_forma_normal
Autor: Miquel Boada Pàgina 32 de 32