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
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.