用于比较多个日期的关系数据库的结构

Structure of a relational database for comparing multiple dates

我们使用 Microsoft Access 数据库来跟踪持续的客户列表。每个客户都必须与多个部门签订合同 - 总共 13 个(!)部门 - 我们希望在发送和接收合同时跟踪每个客户的当前进度。这个结构看起来类似于这样的东西:

    Table 1
    -------------------------------------------------------------------------------------------------------------------
    CUSTOMER_ID | ... | DEP_A_SENT | DEP_A_RECEIVED | DEP_B_SENT | DEP_B_RECEIVED | DEP_C_SENT | DEP_C_RECEIVED | ... |
    -------------------------------------------------------------------------------------------------------------------
         1      | ... | 2015-05-01 |   2015-05-03   | 2015-05-04 |   2015-05-09   | 2015-05-01 |   2015-05-05   | ... |
         2      | ... | 2015-05-01 |   2015-05-05   | 2015-05-01 |   2015-05-03   | 2015-05-13 |       ---      | ... |
         ...  

在 MySQL 中,我可以使用 GREATESTLEAST 等函数来比较不同列之间的值,但在 Access 中,我现在必须依赖 VBA我认为这被认为是不好的做法。我如何通过相当简单的 MAXMINAVG 操作来规范和重组我的 table 以实现我的目标?非常感谢!

只需将现有的 table 折叠成这个结构:

create table TABLE_1 (
    CUSTOMER_ID     int,
    DEPARTMENT_ID   int, -- foreign key reference to DEPARTMENT table
    SENT            date,
    RECEIVED        date
);

现在您可以简单地执行所需的分析,并将原始布局检索为透视报告或从部门 table 到新 TABLE_1 的 LEFT OUTER JOIN 到新的