J'ai une table d'emplois (job) et une table d'outils dans ma database. La table d'outils est divisée en deux parties: la première est la catégorie (catégorie_outil) et la seconde est l'outil (common_tools).
Maintenant, ce que je veux requestr est, j'ai un formulaire de travail dans lequel je dois sélectionner des champs déroulants qui sont répertoriés à partir d'outils (common_tools) pour différentes catégories (tool_category). Je donne deux approches ci-dessous. Veuillez suggérer lequel est le meilleur et pourquoi.
Approche 1
J'ai créé une table "tools_in_jobs" qui contient trois champs et nous pouvons savoir avec cela quelle valeur d'outil est sélectionnée pour quelle catégorie dans le formulaire de travail.
Approche 2
Une autre approche est au lieu d'une table commune pour tous les outils que nous pouvons créer une table séparée pour chaque outil comme montré dans le diagramme ci-dessous. Mais une chose à noter ici est que ces deux tables (job_faculty et job_expertise) sont juste par exemple il pourrait y avoir 5 à 6 telles tables que j'utilise 5 à 6 outils de catégorie différente.
Veuillez également suggérer s'il y a d'autres suggestions.
Je ne comprends pas vraiment ce que vous essayez d'accomplir, mais ce que je peux dire, c'est que cette approche n'est pas bonne du tout. Une table pour chaque outil? Qui ont tous les mêmes champs? N / a! Ceci est un énorme frais généraux et est comparable à "code dupliqué" dans un programme. La maintenabilité, l'extensibilité, etc. sont également très mauvaises je pense.
Ensuite pour en approcher un – je ne comprends pas pourquoi la table "tools_in_job" a une relation avec les outils ET les catégories – est-ce que celui aux outils ne serait pas suffisant? (Cela ressemble à une redondance inutile) Ou quel est le sens de cette catégorie?
Comme je l'ai dit, vous devez vraiment donner une meilleure explication de ce que vous essayez d'accomplir. Je vais modifier ensuite.
Certainement Approche 1 est l'approche préférée, mais supprimer tool_category_id du travail et aussi la relation entre tools_in_job et tool_category pour normaliser la design.
L'approche 2 impliquerait de créer une nouvelle table chaque fois que vous appendiez un nouvel outil, d'écrire et de gérer plus de code, de maintenir plus de tables et d'index et d'utiliser plus de stockage.