entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Duda en la normalizacion de base de datos y modelo entidad relacion

Me podrian comentar sus observaciones; si voy bien en la normalizacion y relaciones de las tablas
Esta base de datos la diseñe en DBDesigner4 se trata de la administracion de horas de un trabajador,

a continuacion describire como estan relacionadas algunas de las tablas, Un trabajador (tabla TRABAJADOR) tiene muchos registros (tabla REGISTRO)
y muchos registros( tabla REGISTRO) tienen muchos trabajadores ( tabla TRABAJADOR), al hacer esta relacion es donde me crea el programa de manera automatica la tabla (TRABAJADOR_has_REGISTRO)

Un horario (tabla HORARIO) se elige al momento de la asignacion (tabla ASIGNAR_HORARIO)
la tabla (ASIGNAR_HORARIO) tiene Muchos Trabajadores son asignados al horario(ASIGNAR_HORARIO)

Un trabajador (tabla TRABAJADOR) tiene un resumen del tiempo total de cada trabajador (Tabla DETALLES_TRABAJADOR)
En cuestion de la tabla HORARIO solo coloque dos dias lunes y martes, para no extender tanto la tabla lleva los demas dias

enter image description here

0voto

Cristi_C comentado

alguna sugerencia o recomendacion con respecto a la normalizacion y relacion de base de datos???

2 Respuestas

2votos

GusGarsaky Puntos5480

Para ver si una BBDD está normalizada, es necesario ver los datos que guardará cada tabla. De ésta manera se identifica si cumplen con la 1FN, 2FN o 3FN, que son las más utilizadas.

Analizando un poco tu enunciado, las relaciones hasta el momento y normalizando lo haría así:

1FN: Todos los atributos de una tabla deben ser atómicos. Ésto quiere decir que deben ser únicos, que no se pueden subdividir en grupos como por ejemplo: tel_fijo y tel_movil.

En tu tabla horarios, veo mucha redundancia. Ésta tabla se puede dividir en:

  • hora_entrada
  • hora_salida

Donde cada registro pertenezca a un día (podrías agregar un atributo día).

Y en tu tabla horarios las llaves foráneas:

  • id_hora_entrada
  • id_hora_salida

Además, si se piensa agregar no sólo un número de teléfono, para evitar redundancia deberías crear una tabla teléfonos.

2NF: Eliminar redundancia que se pueda observar.

¿Qué pasaría si dos o más trabajadores viven en una misma casa (pueden ser familiares)? Sería redundante tener que repetir las direcciones, y ésto violaría la 1FN y la 2FN. Por lo que mejor sería:

  • direcciones (id_direccion, direccion)
  • direcciones_usuarios (id, id_direccion, id_usuario)

3FN: Eliminar cualquier atributo que no tenga una dependencia funcional con la llave primaria.

Los campos: sexo, país, colonia, cp, deberían ser tablas independientes, ya que no dependen directamente del trabajador. Es decir, no se puede identificar a un trabajador por medio de éstas tablas.

Eso es lo que veo hasta ahora.

0voto

Cristi_C comentado

lo que pasa es que en la tabla horarios se crea un nuevo horario para un grupo de trabajadores, estableciendo los dias y el horario que se tiene que presentar para un turno en un cierto periodo de 2 semanas; y para las siguientes 2 semanas establecen otros dias y con otro horario

0voto

Cristi_C comentado

Muchas gracias Gus Garsaky; he comprendido mejor con respecto a las formas normales, tomare encuenta las observaciones que se me pasaron por alto

2votos

Leonardo-Tadei Puntos227320

Hola @Cristi_C,

varias cosas de tu Noirmalización no están normalizadas.

En la tabla Trabajador, los campos sexo, País, Estado, CP, creo que colonia también, pero ese dato no se usa en mi región y no estoy seguro de lo que significa y estado-civil no van en esa tabla. No sé que es RFC... No van porque implican repeticiones.

Te hace falta una tabla de Sexos, una Países, una de Estados con una referencia al país y una de Estados_Civiles. Luego la tabla Trabajador tendrá referencias a estos datos.

La tabla Trabajador-has-Registro no parece ener sentido: basta con que la tabla Registro haga referencia al ID del trabajador.

Aparece en Registro un id-horario pero en el gráfico no hay una relación dibujada.

Un trabajador puede tener asignado más de un Horario al mismo tiempo? Si slo se le asigna un horario, la tabla Trabajador-has-asignación tampoco tendría sentido porque la relación es 1-N y no N-N. Si es N-N y la tabla va, tendría solo 2 campos: una para cada lado de la relación, y no 3 (salvo que le quieras agregar un ID, cosa que yo haría...)

La tabla Autorizar no parece tener nada que ver acá: seguramente no nos contaste su rol en el problema.

La tabla Detalles-Trabajador no debe existir: esos datos se pueden realizar haciendo querys sobre las otras tablas.

La tabla Horario no debería tener los días de la semana, sino que estos deberíane star en otra tabla junto con su hora de entrada y de salida.

Posiblemente se me escape algún detalle, pero las observaciones que te hago son de defectos de la Normalización.

Saludos cordiales!

0voto

Cristi_C comentado

La tabla que me comentas Trabajador-has-Registro el programa en el que estoy diseñando la base de datos selecciono la relacion de N:N y me crea de manera automatica la tabla, checare eso
me falto agregarle la llave foranea del id_trabajador a la tabla Autorizar , tiene una correspondencia de 1:1 un trabajador solicita una autorizacion para faltar al trabajo

0voto

Cristi_C comentado

Muchas Gracias por tu comentario Leonardo, se que aun me falta por aprender, tomare en cuenta estas observaciones para no volverlas a cometer a futuro.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta