SQL设计问题 - 每周为工作团队订购工作人员

时间:2016-05-11 13:00:37

标签: sql asp.net sql-server asp.net-mvc database

我正在使用ASP.net MVC6和Azure SQL-db制作网络解决方案。

我的目标是建立一个每周订购工作团队的订单系统,并且必须能够在今天提前6周显示工作订单。每个工单都连接到一个项目。经理应该能够选择一个项目,然后开始订购不同类型的工人(disiplin),为他们提供6个星期的每个人员的人力需求。 disiplin可以是木匠,画家,瓦工等。

每个项目都可以分配任意数量的disiplin,因此无法将其硬编码到表结构中。您可以在2016年的第2周与2017年的第2周不同来对本周进行硬编码

工作订单可能如下所示:

Project A

Disiplin  |   Week 1  |  Week 2  |  Week 3  |  Week 4  |  Week 5  |  Week 6  
Carpenter |    4      |    3     |    0     |    0     |    3     |    0
Painter   |    0      |    0     |    2     |    3     |    3     |    3

下一个项目可能如下所示:

Project B

Disiplin  |   Week 44 |  Week 45 |  Week 46 |  Week 47 |  Week 48 |  Week 49  
Carpenter |    4      |    3     |    0     |    0     |    3     |    0
Painter   |    0      |    0     |    2     |    3     |    3     |    3   
Bricklayer|    1      |    2     |    1     |    5     |    3     |    0
Carpentry |    4      |    3     |    0     |    0     |    3     |    0

如您所见,周数和disiplin数量可能因项目而异。我似乎无法围绕如何设计SQL表来有效地存储这些值。

任何人都可以审核这个问题并指出我正确的方向吗?感谢。

编辑:

问题实际上不是存储数据,而是如何查询数据。您永远不知道每个disiplin已注册数据的周数,并且您不知道每个项目中注册了多少个disiplins。此外,第2周你可能已注册木匠的人力需求,但不是画家。我可以对每个disipline进行查询,但我最好有一个查询来获得完整的网格。

0 个答案:

没有答案