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)
-   -   Problema con Índice (https://www.clubdelphi.com/foros/showthread.php?t=6973)

KayserSoze 29-01-2004 06:25:45

Problema con Índice
 
Hola.

Tengo una tabla de base de datos bastante grande con datos de personas.

El problema es que para el caso en que se usa, no se tiene el dato del RUT. el cuál se puede usar como un identificador para cada persona.

Al no tener esto, la idea fue crear un índice y así manejar como dato único el nombre, apellido paterno y apellido materno, pero el problema ahora es que no necesariamente siempre se llenan los 3 datos. Por ejemplo el apellido paterno también puede ser la razón social de una empresa, lo que significa que no tendría nombres ni apellido materno.

El problema radica que al hacer un índice único, los valores de los campos que componen el índice no pueden ser nulos. Yo se que lo puedo manejar de todas maneras usando valores default para cada campo, pero realmente se pone demasiado complejo por la envergadura de la aplicación.

La soluciones que me gustaria descartar como primera instancia son:

1.- yo uso firebird 1.0, con la última versión podré lograr un índice parte de sus campos NULL.
2.- alguien conoce algún algoritmo de HASHING con el que pueda entrar una cadena generada por los 3 campos para así tener un identificador ÚNICO-IRREPETIBLE para así poder simular de alguna manera el rut que no poseo?

espero que me puedan ayudar.

gracias.

Eduardo.

marcoszorrilla 29-01-2004 07:45:36

Yo creo que independientemente de que logres lo que quieres, por ejemplo concatenar los tres campos y guardarlos en un cuarto campo y éste indexarlo, no es buena idea. Entiendo que ha habido un fallo en el diseño, o se utiliza el RUT que según dices no existe o se le da un código a cada cliente por ejemplo el código de contabilidad 430???? o un número que se vaya incrementando....

Un Saludo.

KayserSoze 29-01-2004 15:12:43

Cita:

Empezado por marcoszorrilla
Yo creo que independientemente de que logres lo que quieres, por ejemplo concatenar los tres campos y guardarlos en un cuarto campo y éste indexarlo, no es buena idea. Entiendo que ha habido un fallo en el diseño, o se utiliza el RUT que según dices no existe o se le da un código a cada cliente por ejemplo el código de contabilidad 430???? o un número que se vaya incrementando....

Un Saludo.


te entiendo, pero mi idea no es prescisamente concatenar los 3 y ponerlos en un campo, sino que aplicar un algoritmo HASHING a la cadena para que me entregue un identificador de largo pequeño.

lamentablemente en el lugar en donde se implementa este software, no cuentan con la información, no es relevante, pero a su vez el volumen de información ingresada es considerable, por lo que no quiero llenar una tabla con 100 mil datos y que 20 mil de ellos esten repetidos.

en estos momentos yo uso un id para cada persona, pero es un autoincremento que sirve para relacionar con el resto de las tablas, pero necesito manejar la redundancia.

Eduardo.


La franja horaria es GMT +2. Ahora son las 20:10:15.

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