domingo, 29 de enero de 2012

Tablas – Restricciones de Validación

En mas de alguna ocasión vamos a necesitar utilizar validaciones en algunos campos de nuestras tablas, cuando me refiero a restricciones de validación me refiero por ejemplo a lo siguiente, si tengo un campo edad sería buena idea colocarle una validación para que solo acepte números entre 0 y 100, u otro ejemplo si tengo un campo para el género puedo colocar una validación para que solo acepte “M” o “F”, y por ejemplo imagesi tengo un campo donde se almacenarán los meses del año en formato numérico, puedo colocarle una validación para que solo me acepte números entre el 1 y el 12. Para esto utilizamos el comando CHECK, como pueden ver en el ejemplo estoy utilizando el comando check para que en el campo Precio solo ingresen precios entre Q 0.00 y Q999.99, fuera de ese rango no ingresara el valor.

Tablas–Integridad Referencial

Retomando el tema de las Tablas y las restricciones es bueno recordar de que la Integridad Referencial es algo importante en las Bases de Datos pero a veces provoca algunos problemas como por ejemplo, cuando intentamos eliminar un registro de una tabla principal que esta relacionado con uno varios registros de una tabla secundaria, esto es correcto que suceda para no perder la integridad en la información, pero cuando necesitemos hacer esto podemos utilizar los siguientes métodos para solucionar nuestros inconvenientes, para esto Oracle nos da dos soluciones que podemos agregar después de la cláusula REFERENCES

 

ON DELETE SET NULL Coloca nulos en todas las claves secundarias de los registros que tengan relación con la clave primaria que va a ser eliminada.

ON DELETE CASCADE Borra todos los registros con claves secundarias que estén relacionadas con la clave principal que va a ser eliminada.

 

Ahora bien cuando tengamos la necesidad de actualizar una llave primaria, que tenga una o varias llaves foráneas relacionadas, podemos hacerlo de dos formas.

  1. Crear un Trigger, para que cuando se actualice la llave primaria, se actualicen automáticamente las llaves foráneas relacionadas.
  2. Ingresar un nuevo registro con la nueva llave primaria, luego por medio de un UPDATE, actualizar todos los registros con llave foránea cuyo valor coincida con la llave primaria antigua, luego eliminar el registro con la llave primaria antigua.

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.

martes, 24 de enero de 2012

Tablas – Restricciones


RESTRICCIONES
Debemos de tener en cuenta de que una restricciones el algo que tenemos que cumplir obligatoriamente para poder insertar registros en una tabla, a estas restricciones le podemos colocar un nombre. los distintos tipos de restricciones que podemos utilizar son las siguientes:
  1. Llaves primarias
  2. Llaves Foráneas
  3. Valores únicos
  4. No permitir valores nulos (Vacíos)
Al momento de crear, modificar o eliminar una restricción, vamos a utilizar la siguiente sintaxis:
constraint NombreRestriccion TipoRestriccion (Columna(s))
Bueno voy a empezar a explicarles cada una de las restricciones:
PROHIBIR NULOS
Esta restricción lo que hace es no permitir que en un campo(s), queden valoimageres nulos o vacíos, en otras palabras esto obliga a que el registro que queramos insertar en la tabla, no quede ningún campo vacío. Este tipo de restricción lo podemos colocar cuando creamos o modificamos una tabla, el comando es NOT NULL y la sintaxis la tenemos en la imagen de la izquierda. En este caso creamos una tabla llamada fruta con dos campos, Codigo y Nombre, ambos en ningún momento van a permitir que ingresen valores nulos dentro de sus registros.

VALORES UNICOS
Este tipo de restricción lo que verifica es que en ningún momento se repitaimage un valor que ya haya sido ingresado con anterioridad dentro de una columna, de ahí su nombre que solo permite valores únicos y en este caso se utiliza la instrucción UNIQUE, la sintaxis de esto es como la que vemos en la imagen de la derecha, en este caso creamos una tabla llamada persona en el cual tenemos dos campos uno llamado DPI al cual le he asignado una restricción de tipo UNIQUE esto significa que en esta columna ningún valorimagees se tiene que repetir. Esta restricción se puede realizar de otra manera, pueden ver la sintaxis en el siguiente ejemplo y como podrán darse cuenta la restricción no se coloca en después de declarar el tipo de dato sino que se hace usando un constraint seguido del nombre de la restricción, luego el tipo de restricción y por ultimo las columnas a las cuales se les va aplicar la restricción declarada.

jueves, 19 de enero de 2012

Tablas - Valores por defecto

VALORES POR DEFECTO
A cada columna de la tabla se le pueden asignar valores predeterminados o por defecto como quieran llamarlos, esto al momento de la creación del objeto y para esto utilizamos el comando DEFAULT luego de esto el tipo de datos del campo y adicional a ello el valor que se desea por defecto. Por ejemplo:

En este caso se creo una tabla llamada producto en la cual el campo precio se estará llenando con el valor por defecto 3.5.