Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: romybe en 16 Mayo 2015, 23:50



Título: Ayuda con diseño de BD
Publicado por: romybe en 16 Mayo 2015, 23:50
Hola! Estoy diseñando las tablas para una base de datos. Tengo una tabla para ARTÍCULOS (que es la principal), donde éstos se identifican por un número provisorio o por el número de matricula.

El asunto es que a veces un articulo tiene número de identificación provisorio y no de matricula o al revés. Es decir, tiene matricula pero no numero provisorio. Entonces, cómo conformo la clave primaria para la tabla de modo que pueda buscar el articulo por numero provisorio o matricula? Ya que siempre uno de los campos estará vacío.

Espero que me entiendan lo que expuse y me puedan ayudar.


Título: Re: Ayuda con diseño de BD
Publicado por: ZeroVzla en 17 Mayo 2015, 05:09
Hola,

Si los dos campos son exclusivos, es decir ,nunca se va a dar el caso de que lo registren con el número de matrícula y luego con le número provisorio, entonces puedes colocar como clave primaria las dos columnas. De lo contrario y aunque pudieras seguir colocando las dos columnas como clave primaria, tendrías el caso que menciono (el mismo artículo registrado dos veces, uno con el número de matrícula y sin número provisorio , y el otro con número provisorio sin número de matrícula). En base de datos existe algo llamado normalización y para llevar a cabo la técnica debes emplear varias reglas (primera forma normal, segunda forma normal, etc..) te sugiero que leas sobre ella.

Como lo veo podrías crear una columna que sea el id del registro (entero autoincremental), y los campos que mencionas solo son información del objeto.

articulo {id_articulo,matricula,num_provisorio}

Éso te llevará a que no estés en concordancia con la segunda forma normal pero a veces como en tu caso se debe "desnormalizar" para tener el resultado deseado.

Otro caso puede ser el de agregar a la clave primaria otro campo de la tabla que pudiera generar una clave única.

Así puedes resolver el problema y tienes un id único para eliminar/atualizar... Sin embargo te sugiero que leas sobre las formas normales para que puedas dar con la respuesta que simpatice con tu ideal.

Saludos.