我有一个项目清单 对于每个项目,我都有一个项目成员列表 对于每个项目成员,我有一个分配时间列表(第33周100%,第34周80%等)
+------------------------------------------------------------+
| Project name | 3 resources | |
-------------------------------------------------------------+
| Resource | Role | 33 | 34 | 35 | 36 | 37 | 38 |
+------------------------------------------------------------+
| Person 1 | Developer | 100 | 100 | 100 | 100 | 100 | 100 |
| Person 2 | UX designer | 100 | 100 | 100 | 60 | 60 | 60 |
| Person 3 | Project Mng | 100 | 100 | 100 | 100 | 100 | 100 |
+------------------------------------------------------------+
如果MySQL有(动态)PIVOT表,我可以在那里完成大部分工作。但没有这样的运气。
如果我开始使用联接和联合,当我有50个项目,至少有10个项目成员,并且在36周内分配时,我将获得非常大的结果集。
如果我开始构建一个查询以一次性获取所有数据,我想我将得到一个非常大而复杂的查询。我不熟悉MySQL,所以我只是从过去的经验中假设。
SELECT p.project_name, r.resource, r.role
FROM projects p
LEFT JOIN link_allocation la ON p.id = la.fk_project_id
LEFT JOIN resources r ON la.fk_resource_id = r.id
UNION
SELECT * from allocation a
WHERE.... and so on
我可以运行3个查询,返回项目,资源和分配。然后使用javascript循环(使用Node.js返回数据)
for (var i in Projects){
for (var i in Resouces){
for (var i in Allocation){
}
}
}
我关注的是,实施它的最不费力的方式是什么?
可以在MySQL上完成一些连接,然后在JS后端完成其余的工作吗?
我认为这是一个相当普通的#34;方案,所以我也假设有人开发了一个库来解决这个问题。有谁知道什么?
我的表格或多或少看起来像这样:
Projects
| ID | name | fk_project_owner_id | fk_project_mng_id |
Resources
| ID | name | role |
Allocations
| fk_project_id | fk_resource_id | week_nr | allocation |
Link_tbl_projects_resources
| fk_project_id | fk_resource_id |