J'ai complètement ré-écrit mon message d'origine pour mieux expliquer le problème que je suis en train de comprendre. J'ai essayé de généraliser le problème autant que possible.
Aussi, mes remerciements aux personnes originales qui ont répondu. J'espère que ce message rend les choses un peu plus claires.
Contexte
En bref, je me bats pour comprendre la meilleure façon de concevoir une base de données à petite échelle pour gérer (ce que je perçois être) plusieurs nombreux à plusieurs.
Imaginez le scénario suivant pour une structure organisationnelle de l'entreprise:
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
indique une liste de employess qui travaillent dans ce domaine
Quand j'ai commencé avec cette question que j'ai fait quatre tableaux distincts :
Divisions
-> Textile, marketing (PK = DivisionID)Departments
-> RH, Finance (PK = DeptID)Functions
-> paie, recrutement, vérification, de fiscalité, de la comptabilité (PK = FunctionID)Employees
-> Liste de tous les employés (PK = EmployeeID)
Le problème que je vois est qu'il ya plusieurs nombreux à àplusieurs-à-dire de nombreux ministères ont beaucoup de divisions et de nombreuses fonctions ont beaucoup de départements.
Question
Donner la structure de base de données ci-dessus, supposons que je voulais faire ce qui suit:
- Obtenez tous les employés qui travaillent dans la fonction de la paie de la Division du marketing
Pour ce faire, je dois être en mesure de faire la différence entre les deux départements de la paie, mais je ne suis pas sûr comment cela peut être fait?
Je comprends que je pouvais construire une table « Link/Junction » entre les ministères et les fonctions afin que je puisse récupérer quelles sont les fonctions dont les ministères. Cependant, j'aurais encore besoin de différencier la division à laquelle ils appartiennent.
Effort de recherche
Comme vous pouvez le voir, je suis un civilisatrices en matière de base de données deisgn. J'ai passé les deux derniers jours à résoudre ce problème, à travers des modèles de jeux imbriqués, des modèles de contiguïté, à lire que ce problème est connu pour ne pas être complet, etc. Je suis sûr qu'il existe une solution simple?
oui, il y a une solution, pas de soucis.les ensembles imbriqués pourraient le faire (mais pourraient être une overkill). pourriez-vous s'il vous plaît définir si vous voulez travailler avec des hiérarchies générales de n'importe quel niveau ou savez-vous que ce sera hiérarchie à 3 niveaux? – Unreason
@Goran - pour le moment, ce sera une hiérarchie à 3 niveaux seulement. –
ok, alors pour le moment ma réponse est toujours là. :) – Unreason