CRÈDIT: Bases de Dades.
UNITAT 2: Administració d'Oracle
Tema: Disseny de taules amb l'OEM.
Implementació de diagrames E-R.
Introducció
- Des de OEM, situats en el grup Schema/Tables,podem dissenyar, crear i modificar
l'estructura de les taules en Oracle de forma assistida.
- Quan obrim una taula des del Schema Manager podem veure l'estructura
interna de la taula distribuïda en 5 targetes:
- General: nom de la taula, esquema i espai de taules
al que pertany i descripció de les columnes de la taula
- Constraints: restriccions que imposem sobre la
taula
- Storage: paràmetres referents a l'espai físic en disc
que ocupa la taula
- Options: controla les operacions de "desfer canvis",
procés paral·lel i monitorització
- Statistics: dades estadístiques d'accés
a la taula i de paràmetres físics
Targeta General
- En la figura teniu un exemple on es mostra l'estructura d'una taula d'alumnes
(formada per columnes). Comentem els paràmetres que mostra la targeta General
(la imatge correspon a la versió 8.0 d'Oracle).

figura 1: Fitxa General d'una taula, que mostra les columnes que conté
- Name: nom de la columna de la taula. En l'exemple de la figura la taula
conté 6 columnes. Si executem la sentència SQL Select * from alumnes obtindrem:
CURS_CURS_ID DNI
NOM DATA_NAIX DATA_RESID PROFE_ID_P
============ ==== =======
========= ========== ==========
1
1
jordi 01/01/80 01/01/90
1
1
2
pere 01/01/01 01/01/01
1
- Datatype: tipus de dades que contè la columna (caràcters, numeros,
datas, ...). En la taula següent teniu els tipus de dades més habituals en Oracle:
| Tipus de dades |
Descripció |
|
Char(tamany) |
- Dades de tipus caràcter amb tamany màxim de 255 caràcters. |
|
Varchar(tamany) |
- Idèntic a Char. Es manté per raons de compatibilitat amb
programes antics. |
|
Varchar2([tamany]) i NVarchar2 |
- Cadenes de longitud variable fins a 2000 caràcters. El
tamany és opcional. |
|
Number(L, D) |
- Dades de tipus numèric. El paràmetre L indica la longitud
i el D el nombre de
xifres decimals. |
|
Date |
- Dates des d'1-gener del 4712 abans de Jesucrist (!!) fins
al 31-desembre del 4712. |
|
Long |
- Cadenes de text de longitud variable amb un tamany de
fins a 2 Gb. |
| Blob, Cblob, NClob |
Dades binaries |
- Length: longitud de la columna, és a dir, nombre màxim de caràcters
o dígits que pot contenir.
- Precission: en les columnes de tipus numèric, nombre de
decimals que pot contindre. Si el deixem a zero, la columna només contindrà
nombres enters.
- Nulls? : indica si la columna ha de contindre dades obligatòriament
o si per el contrari pot quedar en blanc. El primer cas (dades obligades)
és el cas predeterminat i el segon (pot estar en blanc) tindrem una
marca blava en aquesta casella.
Targeta Constraints

figura 2: restriccions sobre una taula, vista parcial
- Les restriccions (Constraints) són condicions
obligatòries que imposem sobre les columnes d'una taula, com ara forçar
que una columna contingui dades no duplicades. Podem imposar les següents
restriccions:
| Tipus de restricció |
Descripció |
| CHECK |
En la columna "Check condition" posarem una condició
lògica que han de complir les dades, com ara PVP > 0 |
| PRIMARY KEY |
Indica que la columna és una clau primària de la taula |
| FOREIGN KEY |
Indica que la columna està relacionada amb un altre taula
de rang superior |
| UNIQUE |
Les dades de la columna no admeten duplicats |
- Per afegir una restricció: anem a l'última fila de la targeta
restriccions i triem el tipus de restricció. Cada restricció te un nom que podem posar
nosaltres mateixos o bé omitir-lo de forma que el propi sistema s'encarregui de donar-li
un nom automàticament. A continuació i segons el tipus de restricció haurem d'informar
d'alguns paràmetres.
- Per afegir una restricció del tipus CHECK anirem al camp anomenat
Check Condition i escriurem la restricció. Per exemple, per obligar
a que una columna anomenada PVP tingui sempre valors positius escriurem PVP
> 0
- De fet l'OEM el que fa es traduïr les nostres ordres a llenguatje SQL, i
realment les accions de modificar l'estructura de la taula s'executen des
de SQL. Per exemple quan imposem la condició de dades positives en el camp
PVP de la taula Productes la sentència SQL que s'executa és:
ALTER TABLE "PRODUCTES" ADD( CHECK (PVP >
0));
Restriccions de tipus Primary key, Foreign key i rel.lacions entre taules
- Una restricció PRIMARY KEY defineix una clau primària
per la taula: és una columna o combinació de columnes que identifiquen de
forma única a cada fila de la taula. Per exemple si la taula és d'alumnes,
una posible clau primària serà la columna DNI que identifica de forma única
cada fila, doncs cada fila conté les dades d'un alumne. Si es tracta d'alumnes
menors d'edat que no disposen de DNI aleshores haurem de pensar quina columna
ens pot servir, com per exemple el número de matrícula.
- Per afegir una restricció del tipus PRIMARY KEY haurem d'indicar quina és la columna
que farà de clau primària en el requadre inferior anomenat CONSTRAINT DEFINITION (veure
figura 2). També podem definir claus primàries que tinguin vàries columnes simplement
indicant els seus noms en el requadre.
- Les restriccions FOREIGN KEY (clau forània) serveixen
per rel.lacionar la taula actual amb un altre taula amb una rel.lació del
tipus 1 => N on la taula actual ocupa el lloc N de la rel.lació (moltes
files de la taula actual estàn rel.lacionades amb una única fila de l'altre
taula). La taula que ocupa el lloc 1 de la rel.lació s'anomena taula
forània. La clau forània està en la taula actual i sempre
s'ha de rel.lacionar amb la clau primària de la taula forània, que
de vegades s'anomena PARENT KEY (clau pare). Les rel.lacions
entre taules sempre es basen en dos camps, un en cada taula que anem a rel.lacionar.
- EXEMPLE: En la figura 3 es mostres dues taules rel.lacionades entre sí:
PROFESSOR i ALUMNE:

figura 3: dues taules rel.lacionades segons un camp comú, ID_PROFE
- En la rel.lació PROFESSOR =>
ALUMNE tenim:
- La taula PROFESSOR ocupa la part superior (costat 1) de la rel.lació,
doncs un professor tutoritza molts alumnes i cada alumne és tutoritzat
per un únic professor.
- La taula PROFESSOR té com a camp clau (PRIMARY KEY) la columna ID_PROFE
- La taula ALUMNE també té una columna ID_PROFE que estrà definida com
a FOREIGN KEY i la rel.lacionarem am la seva homònima de la taula PROFESSOR.
- La taula ALUMNE té la seva pròpia PRIMARY KEY que és
ID_ALUMNE. En l'exemple, aquest camp no s'utilitza per relacionar cap
taula.
La mecànica per relacionar dues taules sempre serà la mateixa: un camp clau
PRIMARY KEY en la taula superior de la rel.lació queda lligat a un camp FOREIGN
KEY de la taula jeràrquicament inferior.
- Per afegir una restricció del tipus FOREIGN KEY haurem d'indicar els següents
paràmetres:
- 1) En el camp Referenced Schema escriurem el nom del propietari
de la taula que anem a rel.lacionar amb l'actual
- 2) En el camp Referenced Table escriurem el nom de la taula
que anem a rel.lacionar amb l'actual
- 3) En el requadre CONSTRAINT DEFINITION, camp Table Columns,
escriurem el o els camps de la taula actual que hi participen en la rel.lació
- 4) En el requadre CONSTRAINT DEFINITION, camp Referenced Columns
escriurem el camp de la taula forània que es rel.laciona amb la taula
actual
De vegades a la restricció que rel.laciona una PARENT KEY amb una FOREIGN KEY
l'anomenem RESTRICCIÓ D'INTEGRITAT DE LES DADES degut a que
no podrem afegir dades en el camp FOREIGN KEY que no existeixin previament en
el camp PARENT KEY. En l'exemple de les taules ALUMNE i PROFESSOR no podrem
introduïr cap alumne sense professor tutor.
Targeta Storage
Permet especificar els paràmetres físics de la taula (la seva
ocupació de disc i ús de recursos). Hi han dues possibilitats:
Explicit (donem les dades en format numèric) o Auto
Calculation (donem una idea de l'ús que farem de la taula i
Oracle calcula els números).
Mode Storage => Explicit
- L'ocupació de disc d'una taula es distribueix en segments de memòria
anomenats extensions. La grandària de cada extensió
es fixa en el moment de la instal·lació (per exemple, 64 Kb).
Podem especificar com creixerà la taula quan s'acabi l'espai inicial
reservat.
- També es reserva una part de l'espai físic especificament
per modificacions, com espai de treball. Podem modificar els paràmetres
predefinits.
- Per últim podem limitar el nombre màxim de transaccions que
poden accedir simultàniament a la taula (com ara 255).
NOTA: Si l'espai de taules on està la taula té definits els paràmetres
d'autoextensió (veure el tema d'administració de l'espai físic)
aleshores no podrem especificar les extensions de la taula, doncs crearien conflicte
amb el de l'espai de taules.
Mode Storage => Auto Calculation
En aquest cas informem de l'activitat que tindrà la
taula:
- tasa de creixement
- nombre de modificacions
- insercions i eliminacions que pensem que tindrà.
Oracle calcularà els paràmetres físics òptims tenint
en compte l'activitat.
Targeta Options
Les opcions són:
- Procés de transaccions en paral.lel per aquesta taula
- Activar/desactivar la possibilitat de desfer l'ùltima transacció
(si la desactivem les modificacions seran més ràpides)
- Refrescar frequentment la caché: interessant per taules amb molt
d'accés concurrent
- Monitoring: crear estadístiques d'ús de la taula
Tornar