06.05.2013 Views

Claves foraneas. Creación de relaciones con phpMyAdmin

Claves foraneas. Creación de relaciones con phpMyAdmin

Claves foraneas. Creación de relaciones con phpMyAdmin

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Creación</strong> <strong>de</strong> una base <strong>de</strong> datos <strong>con</strong> <strong>phpMyAdmin</strong><br />

En primer lugar veremos como crear nuevas bases <strong>de</strong> datos en <strong>phpMyAdmin</strong>.<br />

En la parte izquierda <strong>de</strong><br />

<strong>phpMyAdmin</strong> observamos las bases <strong>de</strong> datos que po<strong>de</strong>mos seleccionar.<br />

En la parte central tenemos la posibilidad <strong>de</strong> crear nuevas bases <strong>de</strong> datos.<br />

Vamos a crear, a modo <strong>de</strong> ejemplo,<br />

una base <strong>de</strong> datos llamada prueba. Escribimos el nombre <strong>de</strong> la base <strong>de</strong> datos que vamos<br />

a crear y pulsamos sobre “Crear”.<br />

Al crear la base <strong>de</strong> datos aparecerá el nombre en el listado <strong>de</strong> bases <strong>de</strong> datos<br />

disponibles.<br />

<strong>Creación</strong> <strong>de</strong> tablas <strong>con</strong> <strong>phpMyAdmin</strong><br />

Hemos creado la base <strong>de</strong> datos prueba pero esta base <strong>de</strong> datos todavía no <strong>con</strong>tiene<br />

ninguna tabla. Para crear una nueva tabla en la base <strong>de</strong> datos <strong>de</strong>bemos seleccionar la


ase <strong>de</strong> datos y seleccionar “Estructura” en la parte central <strong>de</strong> la página <strong>de</strong><br />

<strong>phpMyAdmin</strong>.<br />

A <strong>con</strong>tinuación escribiremos el<br />

nombre <strong>de</strong> la nueva tabla. En nuestro caso vamos a crear una nueva tabla llamada<br />

clientes <strong>con</strong> tres campos.<br />

A <strong>con</strong>tinuación tendremos que <strong>de</strong>finir<br />

la estructura <strong>de</strong> la tabla clientes, campos <strong>de</strong> la tabla, tipo <strong>de</strong> datos <strong>de</strong> cada campo, claves<br />

primarias, índices, etc.<br />

En la columna campo escribiremos el<br />

nombre <strong>de</strong> los campos que formarán la tabla. Nuestra tabla <strong>de</strong> clientes estará formada<br />

por tres campos: idcliente, nombre y fnacimiento. Así pues, escribiremos el nombre <strong>de</strong><br />

estos campos en los cuadros <strong>de</strong> texto <strong>de</strong>l apartado “Campo”.<br />

En tipo elegiremos el tipo <strong>de</strong> campo<br />

entre los que aparecen al <strong>de</strong>splegar la lista. En nuestro caso elegiremos los siguientes:<br />

• idcliente: INT<br />

• nombre: VARCHAR<br />

• fnacimiento: DATE<br />

En longitud/valores tendremos que indicar la longitud <strong>de</strong> cada uno <strong>de</strong> los campos. Es<br />

posible indicar también una serie <strong>de</strong> valores en caso <strong>de</strong> que los tipos sean enumerados.<br />

Los valores que indicaremos en nuestro caso serán los siguientes:<br />

• idcliente: longitud 4<br />

• nombre: longitud 50<br />

En cotejamiento tendremos que seleccionar el <strong>con</strong>junto <strong>de</strong> caracteres que utilizaremos<br />

en la base <strong>de</strong> datos. En nuestro caso seleccionaremos ucs2_spanish2_cs en los tres<br />

campos.<br />

En atributos po<strong>de</strong>mos coger algunos<br />

modificadores <strong>de</strong>l tipo, como por ejemplo, unsigned, que es el que seleccionaremos para<br />

el campo idcliente.


En la columna “Nulo” po<strong>de</strong>mos<br />

especificar si el campo <strong>de</strong> la tabla permite o no valores nulos. En nuestro caso<br />

<strong>de</strong>jaremos los tres campos en not null.<br />

En “Pre<strong>de</strong>terminado” po<strong>de</strong>mos introducir un valor por <strong>de</strong>fecto para el campo. Si por<br />

ejemplo ponemos en el campo nombre como valor pre<strong>de</strong>terminado ‘alejandro’, e<br />

insertamos un nuevo registro en la tabla sin indicar el nombre, el campo nombre<br />

aparecerá <strong>con</strong> el valor por <strong>de</strong>fecto ‘alejandro’, en lugar <strong>de</strong> <strong>con</strong>tener un valor nulo.<br />

En “Extra” po<strong>de</strong>mos escoger auto_increment. Un campo <strong>con</strong> esta propiedad tomará<br />

valores sucesivos por <strong>de</strong>fecto, empezando <strong>de</strong>s<strong>de</strong> el 1. Escogeremos esta propiedad para<br />

el campo idcliente.<br />

A <strong>con</strong>tinuación tenemos la posibilidad <strong>de</strong> especificar las claves primarias, índices y<br />

unicidad <strong>de</strong> los campos <strong>de</strong> las tablas.<br />

El primer i<strong>con</strong>o hace referencia a la<br />

clave primaria <strong>de</strong> la tabla. En nuestro caso marcaremos como clave primaria el campo<br />

idcliente. Debéis recordar que una clave primaria pue<strong>de</strong> estar formada por varios<br />

campos, así que tenéis que seleccionar este i<strong>con</strong>o en todos los campos que formen parte<br />

<strong>de</strong> la clave primaria.<br />

El segundo i<strong>con</strong>o indica si el campo es o no in<strong>de</strong>xado. Si lo seleccionamos habrá un<br />

índice asociado al campo. También <strong>de</strong>béis recordar que el hecho <strong>de</strong> que un campo sea<br />

clave primaria ya implica un índice asociado al campo.<br />

El tercer campo hace referencia a si el campo permite o no valores duplicados. Si la<br />

casilla está seleccionada, ese campo permite valores duplicados. Si no está seleccionada<br />

quiere <strong>de</strong>cir que ese campo no permite valores duplicados. En nuestro caso la <strong>de</strong>jaremos<br />

sin seleccionar en cada uno <strong>de</strong> los campos.<br />

La cuarta columna sirve para indicar que el campo no posee ninguna característica <strong>de</strong><br />

las citadas anteriormente.<br />

La última columna permite introducir un comentario para cada uno <strong>de</strong> los campos.<br />

En la tabla que hemos creado cada una <strong>de</strong> las columnas quedarán como se muestra en la<br />

siguiente imagen.


Una vez que hemos <strong>de</strong>finido la estructura <strong>de</strong> la tabla ya po<strong>de</strong>mos pulsar sobre el botón<br />

“Crear” para que los cambios introducidos tengan efecto. Aparecerá la siguiente página<br />

en <strong>phpMyAdmin</strong>.<br />

Ahora que hemos creado la tabla<br />

clientes vamos a crear a <strong>con</strong>tinuación una nueva tabla llamada artículos <strong>con</strong> los<br />

siguientes campos:<br />

• idartículo int(4)<br />

• nombre varchar(50)<br />

• <strong>de</strong>scripción text<br />

Para crear esta tabla simplemente seguiremos los mismos pasos que hemos dado para<br />

crear la tabla clientes.Seleccionamos la base <strong>de</strong> datos prueba (a la izquierda) e<br />

indicamos el nombre <strong>de</strong> la nueva tabla <strong>con</strong> el número <strong>de</strong> campos que va a tener.<br />

propieda<strong>de</strong>s <strong>de</strong> cada uno <strong>de</strong> los campos.<br />

A <strong>con</strong>tinuación <strong>de</strong>finimos las


idartículo.<br />

La clave primaria <strong>de</strong> esta tabla será<br />

Por último crearemos en <strong>phpMyAdmin</strong> una nueva tabla llamada compras. Esta tabla<br />

estará formada por los campos siguientes:<br />

• idartículo int(4)<br />

• idcliente int(4)<br />

• fcompra date<br />

Debéis observar que en este caso la<br />

clave primaria la forman los campos idcliente e idartículo.<br />

<strong>Claves</strong> <strong>foraneas</strong>. <strong>Creación</strong> <strong>de</strong> <strong>relaciones</strong> <strong>con</strong> <strong>phpMyAdmin</strong><br />

A la hora <strong>de</strong> crear <strong>relaciones</strong> <strong>de</strong>bemos tener en cuenta que los campos que van a<br />

relacionarse tienen que ser exactamente <strong>de</strong>l mismo tipo. A<strong>de</strong>más, los campos<br />

relacionados han <strong>de</strong> estar in<strong>de</strong>xados por sí mismos, es <strong>de</strong>cir, no basta <strong>con</strong> que formen<br />

parte <strong>de</strong> un índice junto a otros campos.<br />

Vamos a crear una relación entre la tabla compras y la tabla clientes y otra relación<br />

entre la tabla compras y la tabla artículos.<br />

Para crear las <strong>relaciones</strong> seleccionamos en <strong>phpMyAdmin</strong> la tabla compras y a<br />

<strong>con</strong>tinuación pulsamos sobre “Vista <strong>de</strong> <strong>relaciones</strong>”.<br />

A<strong>de</strong>más, para cada relación tendremos<br />

que indicar que operación se llevará a cabo cuando se intente borrar o modificar el valor<br />

<strong>de</strong> la clave primaria asociada. Hay cuatro posibilida<strong>de</strong>s:


CASCADE. Al cambiar el valor <strong>de</strong> la clave primaria automáticamente se actualiza el<br />

valor <strong>de</strong> la clave ajena asociada. Si borramos una clave primaria, entonces se eliminan<br />

todos aquellos registros <strong>con</strong> claves ajenas que hagan referencia a la clave primaria que<br />

se ha borrado.<br />

SET NULL. Si se cambia o borra el valor <strong>de</strong> una clave primaria, entonces las claves<br />

ajenas cambiarán su valor a NULL.<br />

RESTRICT. No se permite la eliminación o actualización <strong>de</strong> claves primarias que<br />

tengan claves ajenas que le hagan referencia.<br />

NO ACTION. Si se modifica o elimina una clave primaria las claves ajenas no sufren<br />

ninguna modificación.<br />

Antes <strong>de</strong> realizar las <strong>relaciones</strong> entre los campos, <strong>de</strong>bemos <strong>de</strong>finir un índice para cada<br />

una <strong>de</strong> las claves ajenas. Así pues vamos a la tabla compras y en la parte central<br />

pulsamos sobre el i<strong>con</strong>o que representa el índice en los campos idcliente e idartículo.<br />

De nuevo nos dirigimos a la vista <strong>de</strong><br />

<strong>relaciones</strong> <strong>de</strong> la tabla compras para crear las <strong>relaciones</strong>. En este tabla, idcliente<br />

referencia al campo idcliente <strong>de</strong> la tabla clientes, e idartículo referencia al campo<br />

idartículo <strong>de</strong> la tabla artículos.<br />

Escogemos el valor CASCADE en cada una <strong>de</strong> las <strong>relaciones</strong> para la propiedad ON<br />

DELETE y ON UPDATE. De esta forma al modificar o eliminar una clave primaria<br />

automáticamente se modifican o eliminan los registros que <strong>con</strong>tienen las claves ajenas<br />

que referencian a la clave primaria.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!