Jay*_*Jay 5 database ms-access multivalue relationships ms-access-2010
相关问题:多值字段是个好主意?
我知道多值字段类似于多对多关系.在MS Access应用程序中替换多值字段的最佳方法是什么?我有一个具有多值字段的应用程序.我不确定如何完全取消这些并以单值字段的形式实现完全相同的逻辑?
当我想将多值关系移动到单值关系时,表关系方面的实现是什么.
谢谢.
以下内容可能比您需要的详细得多,但它是针对初学者的。假设您有一个表 MainTable:
ID -> Numeric, primary key
Title -> Text
Surname -> Text
Address -> Text
Country -> Numeric
Run Code Online (Sandbox Code Playgroud)
您可能需要一个可供选择的标题和国家/地区的列表。
就标题而言,将信息存储在表中的字段中并不是最糟糕的事情,因为您只有一列并且数据不太可能更改,并且您可能不会使用该数据创建查询。
国家/地区则不同,通常您会存储一个数字并有一个查找表。在这种情况下,人们会忍不住使用多值字段。
然而,约定要容易得多。为国家/地区添加另一个表:
ID -> Numeric, primary key
Country -> Text
Run Code Online (Sandbox Code Playgroud)
您可能想调用主表CountryID中的相关字段。您现在可以在关系窗口中创建一个关系,显示 Country 与 MainTable 的关系:

您可以看到“强制引用完整性”被选中,这意味着“CountryID”字段中的“国家/地区”表中的国家/地区必须为空或一个国家/地区。
要查看数据,您可以创建查询:
SELECT
MainTable.ID,
MainTable.Title,
MainTable.Surname,
MainTable.Address,
Country.Country
FROM Country
INNER JOIN MainTable
ON Country.ID = MainTable.CountryID;
Run Code Online (Sandbox Code Playgroud)

但要点是有一个允许数据输入的表单。您可以使用向导创建表单,但之后,您需要右键单击 CountryID 并将其更改为组合框,或者使用向导添加组合框或列表框。选项 2 可能是最简单的。以下是向导的大部分步骤:

现在,您的表单上有一个国家/地区的下拉列表。

另请参阅:创建表单以在多个表中添加记录
在 Access 2010 中,当用户输入可能值表中不存在的数据时,可以使用新方法向组合添加值。在以前的版本中(虽然我不确定 2007 年的情况),您可以使用“不在列表中”事件将项目添加到查找表中,在 2010 年中,您可以选择将“列表项目编辑”表单添加到属性表中。
