Disons que j'ai 3 tables.Conception de table MySQL de base et requête SQL
Projects ---------- projectId PK
SubProject ---------- projectId PK subProjectId PK
Fondamentalement, tous les projets sont répertoriés dans le tableau des projets. Un projet peut avoir des sous-projets. Ainsi, par exemple, si j'ai les lignes suivantes dans ma table:
Projects ---------- 1 2 3
SubProjects ---------- 1,2 1,3
Il y a trois projets 1,2 et 3. Les projets 2 et 3 sont des sous-projets du projet 1.
J'ai deux questions. Premièrement, les clés étrangères doivent-elles être le projectId dans Projects référençant projectId et subProjectId dans SubProjects ou les clés étrangères doivent-elles être projectId dans les sous-projets référençant projectId dans Projects et subProjectId dans subProjects référençant projectId dans Projects.
Il est à noter qu'un projet peut être un sous-projet pour plus d'un projet.
Deuxièmement, comment puis-je obtenir les sous-projets d'un projet avec une requête. J'utilise:
Select * from projects p1 Join subProjects sp Join projects p2
where p1.projectId = sp.subProjectId and sp.subProjectId = p2.projectId;
Je reçois le résultat suivant:
1 , 2 1 , 3
Je veux revenir juste
2 3
Merci pour la réponse. J'ai une question. Qu'en est-il du cas où un projet est un sous-projet de plus d'un projet? Par exemple, s'il y a trois projets 1,2,3. Say 3 est un sous-projet de 2 et 1. Comment cela pourrait-il être modélisé? – user489041
Ayant construit un système centré sur une structure arborescente, je suggèrerais également de mettre en œuvre un [Modified Preorder Tree Traversal] (http://www.sitepoint.com/hierarchical-data-database-2/). Goûte bien et fonctionne bien. – bluevector