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 si 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.
Estructura de Lenguaje SQL
domingo, 29 de enero de 2012
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.
- Crear un Trigger, para que cuando se actualice la llave primaria, se actualicen automáticamente las llaves foráneas relacionadas.
- 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 que 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. Esto 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. Como 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
como pueden ver en este caso nos a saltado un error, el cual 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.
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
- Llaves primarias
- Llaves Foráneas
- Valores únicos
- No permitir valores nulos (Vacíos)
jueves, 19 de enero de 2012
Tablas - 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.