NotaSQL Server 2005 de diseño de base de datos - muchos-a-muchos relación con la jerarquía
He reescrito por completo mi post original para explicar mejor el tema que estoy tratando de entender. He tratado de generalizar el problema tanto como sea posible.
Además, mi agradecimiento a las personas originales que respondieron. Esperemos que este mensaje aclare un poco las cosas.
Contexto
En resumen, estoy luchando para entender la mejor manera de diseñar una base de datos a pequeña escala para manejar (lo que percibo como) múltiples relaciones de muchos a muchos.
imaginar el siguiente escenario para una estructura organizativa de la empresa:
Textile Division Marketing Division
| |
---------------------- ----------------------
| | | |
HR Dept Finance Dept HR Dept Finance Dept
| | | |
---------- ---------- ---------- ---------
| | | | | | | |
Payroll Hiring Audit Tax Payroll Hiring Audit Accounts
| | | | | | | |
Emps Emps Emps Emps Emps Emps Emps Emps
NB: Emps
denota una lista de employess que trabajan en esa área
Cuando empecé con este tema que hice cuatro tablas separadas :
Divisions
-> Textil, marketing (PK = DivisionID)Departments
-> recursos humanos, Finanzas (PK = DeptID)Functions
-> nómina, contratación, auditoría, impuestos, cuentas (PK = FunctionID)Employees
-> Lista de todos los empleados (PK = EmployeeID)
El problema, como yo lo veo, es que existen múltiples relaciones de muchos a muchos, es decir, muchos departamentos tienen muchas divisiones y muchas funciones tienen muchos departamentos.
Pregunta
dando a la estructura de base de datos anterior, supongamos que se quiere hacer lo siguiente:
- Obtener todos los empleados que trabajan en la función de nómina de la División de Marketing
Para hacer esto, necesito poder diferenciar entre los dos departamentos de nómina pero no estoy seguro de cómo se puede hacer esto.
Entiendo que podría construir una tabla 'Enlace/Cruce' entre Departamentos y Funciones para que pueda recuperar qué Funciones están en qué Departamentos. Sin embargo, aún necesitaría diferenciar la División a la que pertenecen.
esfuerzo de investigación
Como se puede ver que soy un principiante cuando se trata de deisgn base de datos. He pasado los últimos dos días rescatando este problema, atravesando modelos de conjuntos anidados, modelos de adyacencia, leyendo que este problema se sabe que no es NP completo, etc. Estoy seguro de que hay una solución simple.
sí, tiene una solución, no se preocupe.los conjuntos anidados podrían hacerlo (pero podría ser una exageración). ¿podría definir si desea trabajar con jerarquías generales de cualquier nivel o sabe que tendrá una jerarquía de 3 niveles? – Unreason
@Goran: por el momento solo será una jerarquía de 3 niveles. –
bien, entonces por el momento mi respuesta sigue en pie. :) – Unreason