总结: 我需要 [Field_1] 和 [Field_2] 的任意组合是唯一的,并且要强制执行这种唯一性。注意:这不适用于排列 - 这就是困难所在。
深入: 我正在尝试跟踪供应商软件的联系人。我以老式的方式设置了我的数据库,这样供应商记录可能有很多联系人。诀窍是联系人可能彼此相关,并且可能与父供应商记录无关。一个例子:
1. SuperBrokenSoftware is a tool who's vendor I need to contact all the time. 2. WeMakeBadSoftware is the Vendor 3. Fred works for WeMakeBadSoftware 4. Gale works for WeHelpPeopleWhenOthersWont
假设 Gale 是解决我的 SuperBrokenSoftware 问题的合适联系人。
无法使用当前层次结构来跟踪 Gales 与 SuperBrokenSoftware 的关系。
我的解决方案是在表格中跟踪这些关系,如下所示:
Field1 Field2 Field3 Fred Gale Gale handles specific issues for Fred
但是,鉴于此解决方案 Field_1 和 Field_2 在组合中必须是唯一的。也就是记录:
Field1 Field2 Field3 Fred Gale "Gale handles specific issues for Fred" Gale Fred "Gale is awesome - Fred sucks"
应视为相同。数据库中不应允许记录 2,因为它不是唯一的。
我试过的:
使用双射 - Szudzik 函数: a >= b ?a * a + a + b : a + b * b; 其中 a, b >= 0
我可以为每个组合计算一个唯一标识符 - 但访问不能强制计算字段的唯一性。
在 Access 中强制执行组合的最佳方法是什么?
提前致谢!!!