Thursday, July 24, 2008

Re: [pgsql-es-ayuda] como lograr campo consecutivo sin fallar ?

>> Pero incluso siendo este el caso, yo no usaría al número de factura
>> como la llave primaria. Generaría en todo caso algo como:
>>
>> CREATE TABLE factura (
>> id SERIAL PRIMARY KEY,
>> factura integer NOT NULL DEFAULT siguiente_factura(),
>
> Esto se puede ?
> Puedo poner como DEFAULT una funcion que he hecho>?
>
> Wao!!
> Eso si que no lo sabiaQ!!!

Poderse, se puede. Pero estás metiendo una clave primaria artificial
cuando ya tienes una natural.

>> Claro, poniendo la lógica en cuestión bajo siguiente_factura(), y
>> creándole un bonito índice para el rendimiento. Sí, sé que el número
>> de factura no _debe_ cambiar, pero...

¿Y que ocurre si cambia? ¿desde cuando una clave primaria no puede cambiar?
Salvo que leas la INCORRECTA definición que dan muchos ORM como hibernate,
simplemente porque si no ellos no funcionan, una clave primaria es
única y sin nulos.
Lo de que cambie o no cambie es irrelevante, y de hecho para eso está la acción
referencial "ON UPDATE...."

>> Bueno, todos los atributos que un humano pueda tocar son malas opciones
>> para una llave primaria.

Yo estoy 100% EN CONTRA de esta sugerencia.
De hecho, encuentro que se abusa demasiadas veces de campos serial y similares,
y en mi universidad en concreto viene de (de nuevo es mi opinión) una
orientación a
objetos en el desarrollo de software que da demasiado poca importancia
al diseño de
las bases de datos.


Saludos
--
Miguel Rodríguez Penabad
--
TIP 7: no olvides aumentar la configuración del "free space map"

No comments: