Bases de Datos - Duda con jerarquia en base de datos.

 
Vista:

Duda con jerarquia en base de datos.

Publicado por Daniel (3 intervenciones) el 10/04/2007 01:51:44
Hola a todos

Veran, estoy diseñando una base de datos en la cual quiero reflejar la jerarquia existente en el negocio en el cual laboro. Les explico :

He considerado la tabla usuario, la cual vendria a ser la generica de todos los cargos que quiero representar. Por otro lado existen las tablas Analista, Jefe, Supervisor, Coordinador y Ejecutivo Comercial (en ese orden va la jerarquia de mas a menos). El punto es que en base a esa jerarquia dese implementar los perfiles de los usuarios. es decir, la data que visualizara cada usuario segun su cargo y sus necesidades.

intente colocando en mi diagrama (en erwin) a todas estas tablas como herederas de la tabla usuario. esto causa a su vez, que todas las tablas mencionadas hereden el idUsuario como FK.

resulta que he relacionado los cargos (es decir, los hijos de la tabla usuario) con relaciones no identificadas pero al parecer, por lo que noto al generar el script de las tablas, estas generan una especie de conflicto, pues cuentan con el idUsuario heredado del padre y a la vez cuentan con el idUsuario que les envia la tabla que crea la relacion (por ejemplo, al relacionar analista con jefe, el jefe recibe el idUsuario con el que cuenta el analista).

Quisiera saber la mejor forma de reflejar esta jerarquia q les acabo de comentar en mi base datos.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda con jerarquia en base de datos.

Publicado por Franklin Gamboa (188 intervenciones) el 10/04/2007 16:12:05
Por que no acomodas las tablas Analista, Jefe, Supervisor, Coordinador y Ejecutivo Comercial en una única tabla en el modelo de datos, ya que todos ellos pueden tener el mismo Id (que puede ser id_puesto o id_posicion), luego de eso nos quedarían dos tablas, la de puestos y la de usuarios.

Un campo en la tabla puestos puede tener uno o mas registros, mientras que uno en la tabla Usuarios debe tener unicamente un registro, por tanto podemos identificar que la tabla padre de dicha relación es la tabla de puestos, por tanto son los usuarios los que deben tener asociado el id_puesto para hacer esta relación.

En caso que no quisieras unificar las tablas Analista, Jefe, Supervisor, Coordinador y Ejecutivo Comercial por una necesidad de negocio (insisto, estas cinco deberían estar en una única tabla), lo que debes hacer es que la tabla usuario tenga las llaves primarias de todas las tablas, debes tambien definir que puedan ser nulas, por lo que no pueden ser parte de la llave primaria.

Espero que esto te funcione.

Saludos,

Franklin Gamboa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con jerarquia en base de datos.

Publicado por Daniel (3 intervenciones) el 10/04/2007 16:36:13
Hola franklin,

entendi hasta la parte de que la tabla puesto sea la padre de la tabla usuario. lo que quisiera que me aclares es lo que dices que la tabla puesto puede tener uno o mas registros, y que la tabla usuario tenga unicamente un registro.
esto quiere decir, que esos uno o mas registros de la tabla puestos estarian ligados a un unico registro de la tabla usuario?

por otro lado, la idea que me propones, significa que deberia tener un campo en la tabla usuario o puesto que sea, por decirlo asi, "tipoPuesto", que tomaria los valores Analista, Jefe, Supervisor, etc???

Te agradezco la idea y si es posible sacame de estas dudas

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con jerarquia en base de datos.

Publicado por Franklin Gamboa (188 intervenciones) el 10/04/2007 21:52:56
Talvez me complique un poco a la hora de escribirlo, disculpame y voy de nuevo

Lo de los registros mas bien son referencias a los registros en las llaves foráneas, dejame ponerte este ejemplo:

Datos de la Tabla 1:
Id, Descripción
1, a
2, b
3, c

Datos de la Tabla 2:
Id, Id_tabla_1, descripción
1, 1, x
2, 2, x
3, 1, x
4, 2, x
5, 3, x
6, 3, x

donde tabla 2.Id_tabla_1 tiene que existir en tabla 1.Id

Nota que en mi ejemplo, los datos de Tabla 1 son referenciados en varias ocaciones por los datos en tabla 2 en el campo Id_tabla_1, a esto me refiero con los registros que puede tener una tabla(si me complique mucho para expresarlo), con lo que un puesto va a tener varios usuarios asociados a él, mas un usuario puede tener uno y solo un puesto asociado.

Con lo de la tabla puestos, si, a eso me refiero, tener una tabla con un campo tipoPuesto y ligarla a usuarios para facilitar la administración, cumplir en este apartado con la segunda foma normal y ayudar a reducir el tamaño de tus modelos, por lo cual contribuimos tambien a evitar el crecimiento de nuestros diccionarios de datos.

Espero haber evacuado todas tus dudas y cualquier cosa me avisas.

Saludos,

Franklin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar