Ayuda con BD

  • Empezó el tema Deleted member 1045607
  • Fecha de publicación
D

Deleted member 1045607

Guest
Hola a todos,

Lo primero (obviando las merecidas felicitaciones por este rincón) gracias por el tiempo de lectura de este post :)
Estoy bastante "oxidado" en el tema.. Espero dar con alguien que pueda echarme un cable con esto.

La idea es crear una BD (por ej en access) que gestione/calcule la producción de x empleados de una empresa

Simplificando se me ocurren las tablas "EMPLEADOS", "ORDENES_DE_TRABAJO (OTS)", "PRECIARIO" con los siguientes campos:

-- EMPLEADOS --
EMP_ID_EMPLEADO
EMP_NOMBRE
EMP_FUNCION
EMP_NOTAS
---------------

-- OTS --
OTS_ID_OT
OTS_ID_PRECIARIO
OTS_FECHA
OTS_COMENTARIOS_ACTUACION
---------------

-- PRECIARIO --
PREC_ID_PRECIARIO
PREC_REFERENCIA
PREC_DESCRIPCION
PREC_PRECIO
---------------

Si cada empleado realizara "n" Ots, cada una de ellas con sus correspondientes datos de PRECIARIO, que modelo E-R/Diagrama se les ocurre? cuantas tablas saldrían!?

Gracias por adelantado!
 

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.051
Hola a todos,

Lo primero (obviando las merecidas felicitaciones por este rincón) gracias por el tiempo de lectura de este post :)
Estoy bastante "oxidado" en el tema.. Espero dar con alguien que pueda echarme un cable con esto.

La idea es crear una BD (por ej en access) que gestione/calcule la producción de x empleados de una empresa

Simplificando se me ocurren las tablas "EMPLEADOS", "ORDENES_DE_TRABAJO (OTS)", "PRECIARIO" con los siguientes campos:

-- EMPLEADOS --
EMP_ID_EMPLEADO
EMP_NOMBRE
EMP_FUNCION
EMP_NOTAS
---------------

-- OTS --
OTS_ID_OT
OTS_ID_PRECIARIO
OTS_FECHA
OTS_COMENTARIOS_ACTUACION
---------------

-- PRECIARIO --
PREC_ID_PRECIARIO
PREC_REFERENCIA
PREC_DESCRIPCION
PREC_PRECIO
---------------

Si cada empleado realizara "n" Ots, cada una de ellas con sus correspondientes datos de PRECIARIO, que modelo E-R/Diagrama se les ocurre? cuantas tablas saldrían!?

Gracias por adelantado!
Recuerda que debes establecer relaciones entre las entidades con las que estás trabajando. Entonces a tu "modelo" le falta, desde mi punto de vista, que en la tabla OTS exista un campo que refiera al ID del empleado que genera la orden de trabajo. En caso contrario, no tendrías cómo cm identificar cuál trabajador efectuó tal OTS.
 
Upvote 0
D

Deleted member 1045607

Guest
Gracias por responder :)

Es decir que las tablas OTS y EMPLEADOS generarían en su relación n:m una tabla parecida a esta:


-- EMP_OTS --
EMP_OTS_ID
EMP_ID_EMPLEADO
OTS_ID_OT

???

Si es así, donde se metería el campo FECHA y PRECIARIO ? Me explico muy mal? :(
 
Upvote 0

freishner

Capo
Se incorporó
16 Noviembre 2021
Mensajes
298
Gracias por responder :)

Es decir que las tablas OTS y EMPLEADOS generarían en su relación n:m una tabla parecida a esta:


-- EMP_OTS --
EMP_OTS_ID
EMP_ID_EMPLEADO
OTS_ID_OT

???

Si es así, donde se metería el campo FECHA y PRECIARIO ? Me explico muy mal? :(
Eso depende de la lógica del negocio, si muchos empleados están involucrados en una ots entonces OTS a EMPLEADOS quedaría como n:m (1:*), pero perfectamente podría ser n:n (1:1).

Otro punto que quería acotar, es que los nombres de las entidades son en singular, entonces hablaríamos de la tabla empleado (en singular).
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.461
y otra pequeña nota tb relacionada con el nombre de las tablas, en vez de esto:

-- EMPLEADOS --
EMP_ID_EMPLEADO
EMP_NOMBRE
EMP_FUNCION
EMP_NOTAS

yo ocuparía:

SQL:
CREATE TABLE empleado (
  id INT (etc),
  nombre VARCHAR (etc),
  funcion (etc),
  notas (etc)
);

de esa forma queda mucho más claro al escribir queries hacia qué tablas estás haciendo referencia (entre SELECT nombre FROM empleado en vez de SELECT EMP_NOMBRE FROM EMPLEADOS queda mucho más leíble la primera). Además, ten en cuenta que el nombre de las tablas NO ES para el computador, sino que para el humano que está por detrás entienda el código. "OTS" por ejemplo no tengo idea qué cresta significa y yo podría suponer que significa "On The Side". Prueba utilizando nombres completos en camelCase o CamelCase, no todo en mayúsculas. Son pequeños detalles pero todos ayudan a mejorar lijeramente la experiencia de estar trabajando en el sistema.

Saludos.
 
Upvote 0
D

Deleted member 1045607

Guest
Gracias por las ideas, el caso es que un empleado/tecnico no va tener una relación 1:1 con la tabla OTs (no duraría ni una semana.. ^^). La relación sería n:m, uno o varios EMPLEADOS realizan una o varias OTS

Habrá una tabla PERFILES donde se definirán funciones, etc..

El número aprox de empleados serían 50.. una BD sencilla de escritorio (ni servidores ni clientes). El objetivo es crear una BD que gestione EMPLEADOS, OTS, PERFILES/FUNCIONES, NOMINAS, etc...
 
Upvote 0
D

Deleted member 1045607

Guest
solo se me ocurre una tabla intermedia (como alguien comentó) n:m con sus claves foráneas y campos referentes a la relación...

Bueno, le daré una vuelta, agradezco las respuestas :)))
 
Upvote 0
Subir