Claves foraneas. Creación de relaciones con phpMyAdmin
Claves foraneas. Creación de relaciones con phpMyAdmin
Claves foraneas. Creación de relaciones con phpMyAdmin
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<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.