07/05/2010, 19:34
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: clave foranea vrs indice Son cosas diferentes.
Una FOREIGN KEY (FK) es un campo o grupo de campos que cuyo valor hace referencia a la PRIMARY KEY (PK) de otra tabla. Se usa para establecer una relación de dependencia entre ambas tablas, y eso se controla generando un índice (es interno al DBMS y no se invoca separadamente), que es el que establece la cardinalidad de la relación: Si es 1:1, el índice será de tipo UNIQUE, sino será BTREE.
Un índice es un objeto de base de datos que sirve para generar ordenamientos lógicos alternativos de una tabla (el orden físico es uno sólo y está determinado por la PK), administrar ciertas restricciones a los datos (los UNIQUE, por ejemplo), o bien optimizar las consultas, ya que permiten encontrar ciertos valores buscados con mayor rapidez, al acceder a las hojas de datos del arbol de índice.
El uso y creación de los índices que no son parte de las restricciones FK o UNIQUE sobre la tabla, dependen de los requerimientos del sistema, fundamentalmente en lo que se refiere a optimización de las consultas. No hay una regla general, se pueden crear o destruir según las necesidades de los usuarios, e incluso existen índices que se crean sobre tablas temporales y que sólo tienen efecto mientras la tabla existe en memoria.
El tema de índices es largo, extenso y requiere para comprenderlo cabalmente algo de conocimiento en programación avanzada, ya que es precisamente el resultado de estructuras que ya existían previamente en ciertos lenguajes. Con esto me refiero a que para entender la estructura profunda de los índices no sirve saber Visual Basic; antes bien es mejor conocer el funcionamiento de las estructuras de C o C++, ya que de ellos lo heredan.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |