iyiioyiy

Páginas: 10 (2327 palabras) Publicado: 18 de noviembre de 2014























INTRODUCCIÓN:
ANALIZAREMOS CUALES SON LOS USO DE LAS RESTRICCIONES EN LA CONSOLA MYSQL AL IGUAL QUE SE INVESTIGARA COMO CAMBIAR DE NOMBRE A LA BASE DE DATOS EN CONSOLA COMO ELIMINAR O AGREGAR NUEVOS DATOS A LA TABLA A SI MISMO VEREMOS CÓMO UTILIZAR LA LLAVE FORY KEY, DONDE DEBE IR COMO UTILIZAR EL NOT NULL, EL CASCADE ENTRE OTRAS COSAS QUE SEINVESTIGARAN.















RESTRICCIONES QUE NOMBRES QUE PUEDE TENER UNA BASE DE DATOS


Las relaciones existentes entre distintas tablas de una base de datos MySQL que utilizan el motor de almacenamiento InnoDB pueden estar especificadas en forma de restricciones de clave externa (“Foreign Key Constraints”), de manera que la propia base de datos impida que se realicen operacionesque provocarían inconsistencias.
En este artículo comentamos las posibilidades que ofrece el uso de las restricciones de clave externa, y la manera de implementarlas.
Tablas de ejemplo
Para ilustrar este artículo, vamos a crear una base de datos de ejemplo para una tienda de comercio electrónico. La base de datos va a tener una tabla ‘clientes’ y una tabla ‘pedidos’.
En primer lugar, creamosla tabla ‘clientes’ con los campos ‘id’ y ‘nombre’. Además, el campo ‘id’ es la clave primaria de esta tabla:

CREATE TABLE `clientes` (
`id` int(11) PRIMARY KEY,
`nombre` varchar(64) DEFAULT NULL
) ENGINE=InnoDB;
Después, creamos la tabla ‘pedidos’. Esta tabla también tiene un campo ‘id’ que es la clave primaria de esta tabla. Además, tiene un campo ‘idcliente’ que identifica el clienteque ha realizado el pedido:
CREATE TABLE `pedidos` (
`id` int(11) PRIMARY KEY,
`idcliente` int(11) NOT NULL,
`idproducto` int(11) NOT NULL
) ENGINE=InnoDB;

Establecimiento de la restricción
En esta base de datos, queremos asegurar que no se introduce ningún registro en la tabla de productos con un valor de ‘idcliente’ que no exista en la tabla de clientes.
Para ello, establecemosuna restricción entre el campo ‘idcliente’ de la tabla ‘pedidos’ y el campo ‘id’ de la tabla ‘clientes’, de la forma:
alter table pedidos add foreign key (idcliente) references clientes (id);
Por último, comprobamos que la restricción funciona, insertando algunos registros de ejemplo en ambas tablas:
mysql> insert into clientes (id,nombre) values (1, 'Pedro');
Query OK, 1 row affected (0.02sec)
mysql> insert into pedidos (id, idcliente, idproducto) values (1, 1, 1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into pedidos (id, idcliente, idproducto) values (2, 2, 1);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
(`prueba`.`pedidos`, CONSTRAINT `pedidos_ibfk_1`
FOREIGN KEY (`idcliente`) REFERENCES`clientes` (`id`))
Como vemos, al intentar insertar un registro en la tabla de pedidos con un id de cliente ‘2’ que no existe en la tabla de clientes, se produce un error.
De la misma forma, también se produce un error si intentamos ahora eliminar el cliente con id=1, porque hay un registro en la tabla ‘pedidos’ que lo está referenciando:
mysql> delete from clientes where id=1;
ERROR 1451(23000): Cannot delete or update a parent row: a foreign key constraint fails
(`prueba`.`pedidos`, CONSTRAINT `pedidos_ibfk_1`
FOREIGN KEY (`idcliente`) REFERENCES `clientes` (`id`))
El mismo error se produciría si intentamos ejecutar una sentencia ‘UPDATE’ para cambiar el valor del campo ‘id’ en la tabla ‘clientes’.
Índices asociados a las restricciones
Cuando seestablece una restriccion de clave externa, debe existir un índice en la tabla principal para el campo (o campos) referenciado. En el ejemplo, la tabla principal es la tabla ‘clientes’, y el campo referenciado es el campo ‘id’. Como este campo es la clave primaria de la tabla, en este caso no es necesario crear explícitamente un índice.

Por otra parte, también debe existir un índice en la...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS