jueves, 26 de enero de 2012

Tablas–Llaves Primaria y Foráneas

CLAVES PRIMARIAS

Una clave primaria se utiliza como identificador único, esto quiere decir imageque automáticamente una llave primaria queda como NOT NULL o sea que no va a recibir valores nulo y también UNIQUE porque no va a permitir valores repetidos, para definir una llave primaria hacemos uso del comando PRIMARY KEY. como podemos ver en el ejemplo creamos una tabla llamada libro con dos campos el primer campo que es codigo será nuestra llave primaria y utilizamos el comando mencionado anteriormente. imageEsto también lo podemos realizas haciendo uso de constraint para que nosotros seamos quien le coloquemos el nombre a nuestra llave primaria, en este caso el nombre que le colocamos fue  codigo_pk utilizamos el nombre del campo y al final agregamos la abreviatura pk para hacer referencia a que se trata del nombre de una clave primaria. En algún momento tendremos que hacer esto pero usando como llave primaria varios campos lo haremos de la siguiente manera. imageComo podemos ver en este caso utilizamos los dos campos como llaves primaria, primero que nada utilizamos el comando constraint, luego escribimos el nombre de la llave primaria en este caso se llama libro_pk, luego el tipo de restricción en este caso  primary key y por ultimo dentro de paréntesis escribimos los nombres de las columnas que formaran parte de la llave primaria en este caso están los nombres de las dos columnas.

LLAVE SECUNDARIA O FORÁNEA

Se compone de uno o más campos que estén relacionado con la clave principal de otra tabla , coloco como ejemplo la siguiente imágen.

Recordemos que una FK (Clave Foránea) es una referencia a una clave en otra tabla, determina la relación existente en dos tablas. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas. Por ejemplo, el #Cliente puede ser una clave foránea en la tabla de VENTAS. Se permite que haya varios ventas para un mismo cliente, pero habrá uno y sólo un #Cliente por cliente que ingrese a la tabla CLIENTES.

Al momento de crear la tabla tienda lo hacemos de la siguiente manera

image

como pueden ver en este caso nos a saltado un error, el cimageual aprovecho para mencionar porque se ha dado y esto fue porque si se dan cuenta en el constraint que esta haciendo referencia a una tabla llamada dueños, esta tabla no existe y por esto nos ha dado el error, procedemos entonces a crear la tabla dueños esto para fines de ejemplo, una vez creada esta tabla procedemos nuevamente a ejecutar nuestros script anterior. ahora vemos como al momento de ejecutarlo todo funciona perfectamente y tenemos ya asignada una llave foránea llamada tienda_fk le colocamos fk al final para distinguir que se trata del nombre de una llave foránea y como se puede observar está haciendo referencia a la tabla dueño en su campo codigo.

 image

INTEGRIDAD REFERENCIAL

Cuando se toca el tema de las llaves primarias y secundarias no podemos dejar a un lado el recordatorio del tema de la integridad referencial, esta es una propiedad que tienen las BD, gracias a ella se garantiza que una fila o registro de una tabla tienes relación con una uno o mas registros de otras tablas, esto asegura que no existan datos repetidos o datos perdidos. Por ejemplo esto sirve cuando tengo una tabla padre llamada Hospital en la cual tengo registrado un código y un nombre del hospital y que esta haga referencia a una tabla empleado que tenga código y nombre del empleado, esto quiere decir que no puedo eliminar la tabla hospital si aun tengo empleados que tengan relación con el código del hospital que quiero borrar, a menos que primero borre todos los empleados con un código en común y luego borrar de la tabla hospital, el hospital con el código de los empleados que ya han sido borrados. Hasta el momento todas la BD relacionales tienen esta propiedad esto porque el SGBD se encarga de supervisar que esto se cumpla.