Sie sind auf Seite 1von 9

Claves candidatas

Claves candidatas

Sea K un subconjunto de cabeceras de una variable de


relacion R. Entonces K es una clave candidata para R si y
solo siesta tiene ambos de los siguientes principios.

Unicidad.- Ningún valor de R tiene 2 tuplas distintas con


el mismo valor de K.

Irreducible.- Ningún subconjunto de K tiene la propiedad


de unicidad.

Si K contiene n atributos, entonces n es el grado de K


Claves candidatas

El concepto de unicidad se explica por si solo.

Ejemplo para la propiedad de irreductible:


Considere la variable de relación S y el conjunto de
atributos {SNO, CITY} llamada SK, quien es un
subconjunto de la cabecera de S que tiene la propiedad
de unicidad (ningún valor de la variable de relacion S
tiene 2 tuplas distintas con el mismo valor de SK.
Pero SK no tiene la propiedad de irreductible, ya que
podemos descartar el atributo CITY, y el conjunto {SNO}
aún tendria la propiedad de unicidad.
No podemos considerar a SK como una clave ya que le
"sobran atributos". Por el contrario {SNO} es irreductible
y es una clave.
Claves candidatas

Por que es necesario que las claves sean irreductibles?


Si no es irreductible el DBMS no puede garantizar la
propiedad de unicidad.
Suponga que definimos {SNO,CITY} como una clave. El
DBMS no puede obligarque el numero de proveedor sea
globalmente unico (SNO), y solo podria obligar a que el
SNO sea localmente unico y en este sentido que sea
unico en la ciudad. Por lo que nuestras claves no deben
incluir atributos que no sean necesarios para propositos
de identificacion única.
En SQL no definas alguna conbinación de columnas que
sepas que no es irreductible.
Claves candidatas

El concepto de clave aplica a variables de relación, no a


relaciones. Una clave tiene reglas de integridad, reglas de
unicidad y estas reglas aplican a variables, y no a valores.
En las variables de relación se indica una clave primiaria
(cualquier otra clave para la variable de relacion son claves
alternativas). Como una buena práctica la mayoria de las
variables de relacion deberían tener una clave primaria.
Si R es una variable de relación, entonces R debe tener al
menos una clave. La razón de esto es que cada valor de R
es una relación y que por definición no contiene tuplas
duplicadas.
Claves externas

Definición.- Sean R1 y R2 variables de relación no


necesariamente distintas, y sea K una clave para R1. Sea
FK un subconjunto de la cabecera de R2 tal que es posible
se renombre los atributos en R1 que mapean K en K',
donde K' y FK contienen exactamente los mismos atributos.
Ademas dada la restrincción que en R1 y R2 cada tupla t2
en R2 tiene un valor FK que es el valor K' para alguna
(necesariamente unico) tupla t1 en R2. Entonces FK es una
clave externa (con el mismo grado de K) que tiene una
restricción referencial; y R2 y R1 es la variable de relación
de referencia y la correspondiente variable de relación
referenciada respectivamente.
Claves externas

El modelo relacional original plantea que la clave externa no


solo coincida con alguna clave, especificamente la clave
primariade la variable de relación referenciada. Por lo que
no podemos insistir en que las claves externas coincidad
especificamente con las claves primarias. SQL coincide con
esto.

De la definición anterior, en SQL la clave K y la clave


externa FK son secuencias no conjuntos de columnas. (En
otras palabras el orden de las columnas de izquierda a
derecha es nuevamente significativo.)
Claves externas

Sea B1, B2,... Bn (para FK) y A1, A2, ...,An (para K)


entonces las columnas Bi y Ai (1<=i<=n) deben ser de el
mismo tipo, pero no necesariemente el mismo nombre.
Recomendación:
Asegurate que las claves externas tengan el mismo
nombre que sus claves correspondientes. Sin embargo
en ciertas situaciones, (dos para ser exactos) estas
recomendación no puede ser al 100%.
Cuando una tabla T tenga una clave externa que
coincida con alguna clave de la mista tabla.
Cuando una tabla T2 tenga dos claves externas distintas
y amabas coindidan con la misma clave K en T1
Acciónes referenciales

SQL no solo implementa las claves externas como tal,


tambien implementa acciones referenciales en cascada.
Estas acciones seespecifican como parte de cualquier
acción ON DELETE y ON UPDATE.
Las acciones referenciales pueden ser practicas, pero no
forman parte del modelo relacional.

Das könnte Ihnen auch gefallen