Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Index Unique o Unique Contraint???? (https://www.clubdelphi.com/foros/showthread.php?t=30937)

maxid 24-04-2006 14:42:08

Index Unique o Unique Contraint????
 
Alguien me puede explicar cual es la diferencia de usar un indice unico o aplicar una constraint unica sobre una columna?
No veo la diferencia ya qye en delphi aparecen ambos como indices y se los pueden utilizar.:rolleyes:
Saludos a todos

RONPABLO 24-04-2006 15:21:27

Pues lo yo tengo entendió q el Índice único es una marca que le "indica" al motor q no hay mas datos y con encontrar uno ya puede devolver el valor encontrado y parar la búsqueda, mientras q el constraint único es una forma de validar q no se ingresen valores repetidos, por lo cual con los índices se tiene mayor velocidad q con los constraint

lbuelvas 24-04-2006 16:34:20

Hola foro,

Bueno desde el punto de vista de diseño de bases de datos, una UK (llave unica) es una llave alternativa, es decir, similar a una llave primaria en el sentido que no puede haber mas de una instancia (registro) con el mismo valor para esa llave.

Voy a poner un caso en que he utilizado llaves unicas. Imaginemonos un sistema contable y tenemos una tabla para terceros (clientes, proveedores, etc). Uno podria colocar como identificador para la tabla PK (llave primaria)
el documento de identidad de la persona, pero sucede que los errores de los digitadores ya en un entorno de produccion son muy altos y es normal que se equivoquen en digitar los documentos. Cambiar el valor de la llave primaria desencadenaria actualizaciones en cascada a las tablas asociadas.

En cambio, si identificamos los terceros con un UID (Identificador unico), por medio de un generador y creamos un UK para el documento de identidad, evitariamos que se digitaran dos documentos de identificacion iguales y dado el caso que se tenga que corregir un documento, no se dispararian actualizaciones en cascada.

Debe aclararse otro aspecto, toda llave primaria, llave unica y llave foranea tiene asociada un indice, es decir, cuando se crea cualquiera de estas restricciones el motor de base de datos crea un indice basado en los campos que hacen parte de la restriccion.

Por tanto crear un inide unico o llave unica creara de fondo un indice razon por la cual el rendimiento en ambos casos seria igual.



Puede uno defenir llaves unicas cuando se esta manejando por ejemplo Normalmente uno define la llave unica

Cita:

Empezado por RONPABLO
Pues lo yo tengo entendió q el Índice único es una marca que le "indica" al motor q no hay mas datos y con encontrar uno ya puede devolver el valor encontrado y parar la búsqueda, mientras q el constraint único es una forma de validar q no se ingresen valores repetidos, por lo cual con los índices se tiene mayor velocidad q con los constraint


maxid 24-04-2006 17:03:06

Gracias
 
En realidad siempre uso una columna id para las claves primarias y nunca una columna con datosque utilize el usuario. Pero mi duda me lleva a que es mas eficiente en cuanto al trabajo que se le puede añadir al motor el definir un tipo de indice u otro.
Utilizo SQL Manager, y cuando defino un indice o un constrait me da el tiempo de respuesta que llevaria el uso de ellos y ambos me dan el mismo resultado, por eso era mi pregunta. Pero como dijo Ronpablo creo es mas eficiente el indice.
Les agradezco la inquietud.
Saludos Maxi:p


La franja horaria es GMT +2. Ahora son las 22:26:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi