La clave foránea crea un índice?
Publicado por
JavierTF (1 intervención) el 03/08/2012 21:16:08
en la respuesta que se menciona en el siguiente link especifican que la fk si crea un indice pero es interno y diferente a los que se crean para agilizar las consultas, como si fuera un indice interno para especificar la cardinalidad de la relacion solamente. eso entendi, pegare textual la respuesta por si acaso deja de funcionar el link:
http://www.forosdelweb.com/f86/clave-foranea-vrs-indice-804725/
PREGUNTA: "Buenas a todos, leyendo en internet veo que explican lo que es una llave foranea y un indice pero no me queda bien en claro cual es su diferencia
me surge una duda: son lo mismo?"
RESPUESTA:
"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."