Trabajo con un producto que tiene claves hibridas y creo que el modelo
tiene mucho sentido asi que se los comparto:
    Para tablas de configuracion: el ID lo escribe a mano el usuario.
Por ejemplo en la tabla idioma insertar: 'ENG' o 'SPA'.
    Para tablas de transacciones el ID es generado. Obvio
    Para tablas maestras: depende el caso, casi siempre es generado.
La tabla de usuario por ejemplo se escribe a mano el ID. Pero la tabla
persona tiene id generado.

Cualquiera que haya generado automaticamente el ID de usuario sabe que
despues rastrearlos por la base es super molesto.

En el ejemplo inicial: Persona, si hubiese un ID claro podria usarse,
sin embargo depende del pais una persona podria no tener un ID tan
claro (SSN)....mismo en argentina es legal no tener DNI y usar LC o
LR. Tambien podrias considerar una persona que tenga mas de un ID como
DNI y CUIT y quieras buscarlo por cualquiera.


2009/5/25 Juan Alejandro Knight <[email protected]>:
> From: "Victor Del Rio" Monday, May 25, 2009 1:07 PM
>>
>> 1. ¿Porque usar un id numerico (ej: Long id) envez de usar los campos
>> que realmente identifican a la entidad?
>
> Se me ocurren varias ventajas de usar ids numéricos:
> +) el id es *independiente* de los datos. Si el día de mañana cambian las
> reglas del negocio y tus "personas" tienen DNI opcional, por decir un
> ejemplo, tenés que realizar una reestructuración de la base de datos. No es
> sólo
> cambiar la tabla Personas, sino todos los FK que toquen a Personas.
>
> +) la PK de cada entidad *nunca* cambia
> La PK puede ser autonumérica por lo que se genera al persistir un registro.
> La PK no va
> a sufrir cambios por lo que te asegurás que no va a haber conflictos de
> identidad existencial
>
> +) es más intuitivo (por lo menos para mi)
> a mi me suena más natural tener un "PersonaId" que un DNI (quizás no tanto
> con Persona pero con entidades más complicadas, sí)
>
> +) las entidades débiles tienen un solo atributo que es PK (el id) y le
> asignas el EntidadFuerteId como atributo
> Supongo que debe ser más performante tener un sólo atributo y de tamaño fijo
> para
> la verificación de integridad
> Sino tenés que poner el FK y el discriminante y poner todo como PK
>
> Al menos esta es mi opinión :P
> Saludos.
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a