Correcta eleccion del primary key
A ver, creo que ese no es el titulo correcto pero no encuentro otro. Paso a explicar el problema.
Tengo una tabla de facturas donde el primary key deberia ser el numero de factura (por ej: 0001-12345678) la idea era ponerlo a todo ese numero (sin el guin) como in bigint (uso firebird + dbexpress + delphi7) pero resulta que el dbexpress me lo pone como tipo TBCDxxx y no se porque no me deja asignar valor a dicho campo...
Para evitar esto puse a este campo como varchar(15) pero no me gusta que un varchar sea primary key (creo haber leido un problema de velocidad en la indexacion)
Entonces para evitar esto lo he puesto como float... alli si toma todo el nuemro de corrido es decir 112345678, ahora bien varias preguntas.
1-Es optimo poner un float como primary key ? No se desperdicia espacio sin sentido...
2- y un varchar?
3- si aplico un formatfloat("9999-9999999", 1123456789) me devolvera 0001-12345678 ?
4- Alguno otro consejo de diseño ?
desde ya muchas gracias
|