我有一个Engagement带有四个字段的 Access 表:
Emp_id, Year, Week, Act_id
Run Code Online (Sandbox Code Playgroud)
它记录员工何时/曾参与某项活动。每个字段都是数字,每个字段都构成复合主键的一部分。应用程序的语义是每个条目(每个Emp_id- Year- Week-Act_id组合)必须是唯一的。也就是说,虽然员工通常会有不同的年周和不同的活动,但员工有时可以在不同的年周从事相同的活动,甚至可以在同一年的周从事不同的活动。不允许有空值。一切正常。
现在我需要扩展/修改语义以允许与任何给定员工活动相关的未知——或更恰当地说,未披露——年-周值。当然,尝试输入带有空的 Year-Week 的行会导致“索引或主键不能包含 Null 值”。所以我需要改变表格设计。
我尝试过的一件事是通过在“索引”窗口中关闭“主”(并保持“唯一”状态)将主键索引转换为非主索引。这正确地防止了年-周值非空的重复记录——但它允许年-周为空的重复记录。
例如,使用上述非主、唯一索引,允许以下数据:
Emp_id Year Week Act_id
7 2014 12 31 } Same activity,
7 2015 22 31 } different dates.
7 2015 33 32
7 2015 40 33 } Same dates,
7 2015 40 34 } different activities.
7 2016 2 36
7 38 } Different activities,
7 39 } undisclosed dates.
Run Code Online (Sandbox Code Playgroud)
随后不允许添加以下任何内容:
Emp_id …Run Code Online (Sandbox Code Playgroud)