Integridad referencial en mysql
[pic]
2 Introducción
MySQL 4.0 soporta cinco tipos de tablas: MyISAM, ISAM, HEAP, BDB (Base de datos Berkeley), e InnoDB. BDB e InnoDB son ambas tipos de tablas transaccionales. Además de poder trabajar con transacciones en MySQL, las tablas del tipo InnoDB también tienen soporte para la definición de claves foráneas, por lo que se nos permite definirreglas o restricciones que garanticen la integridad referencial de los registros.
A partir de la versión 4.0, MySQL ha agregado InnoDB a la lista de tipos de tablas soportados en una instalación típica. En este artículo se asume que se cuenta ya con un servidor MySQL con soporte para el tipo de tablas InnoDB. En nuestro caso haremos uso de un servidor MySQL 4.013 ejecutándose en un sistemaMSWindows.
Nota: para asegurarnos que tenemos soporte para el tipo de tablas InnoDB podemos ejecutar la siguiente sentencia:
mysql> SHOW VARIABLES LIKE '%innodb%';
+---------------------------------+------------------------+
| Variable_name | Value |
+---------------------------------+------------------------+
| have_innodb |YES |
| innodb_additional_mem_pool_size | 1048576 |
| innodb_buffer_pool_size | 8388608 |
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | |
| innodb_file_io_threads | 4 |
| innodb_force_recovery | 0 |
|innodb_thread_concurrency | 8 |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_fast_shutdown | ON |
| innodb_flush_method | |
| innodb_lock_wait_timeout | 50 |
| innodb_log_arch_dir | . |
| innodb_log_archive |OFF |
| innodb_log_buffer_size | 1048576 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | . |
| innodb_mirrored_log_groups | 1 |
| innodb_max_dirty_pages_pct | 90 |+---------------------------------+------------------------+
20 rows in set (0.00 sec)
La variable más importante es por supuesto have_innodb que tiene el valor YES.
3 Claves primarias
Para entender lo que son las claves foráneas, tal vez sea necesario entender primero lo que son las claves primarias.
Es un hecho que las claves juegan un papel muy importante no sólo en MySQL, sino en cualquier base de datosrelacional. De manera simple, las claves proporcionan una manera rápida y eficiente de buscar datos en una tabla, además de que permiten preservar la integridad de los datos.
Una clave candidata es un campo, o una combinación de campos, que identifican de manera única un registro de una tabla. Éstas no pueden contener valores nulos, y su valor debe ser único.
Una clave primaria es una clavecandidata que ha sido diseñada para identificar de manera única a los registros de una tabla a través de toda la estructura de la base de datos.
La selección de una clave primaria es muy importante en el diseño de una base de datos, ya que es un elemento clave de los datos que facilita la unión de tablas y el concepto total de una base de datos relacional.
Las claves primarias deben serúnicas y no nulas, de manera que garanticen que una fila de una tabla pueda ser siempre referenciada a través de su clave primaria.
MySQL requiere que se especifique NOT NULL para las columnas que se van a utilizar como claves primarias al momento de crear una tabla.
4 Claves foráneas e integridad referencial
Podemos decir de manera simple que integridad referencial...
Regístrate para leer el documento completo.