我有一个数据库,里面记录着我们办公室里存放的物品。我想给这些物品贴上标签,这样数据库就可以轻松搜索 - 例如,如果我想知道我们有多少订书机和打孔机,我可以通过标签进行筛选Stationery
。
为此,我Tags
在Item
表中创建了一个多值查找字段,其中列出了可以对项目进行分类的所有标签(可能不止一个)。
目前,要输入数据(无论是在表单还是数据表中),我需要点击下拉菜单,然后点击要添加的每个标签。我希望数据输入尽可能顺畅和简单,并且所有操作都可以使用键盘完成 - 但当我尝试输入标签时,它不允许我输入。我只能点击。对于数百个项目来说,这太麻烦了。
是否有一种解决方案、快捷方式或方法,可以仅使用键盘或以更少的步骤将值输入到多值字段中?
答案1
我强烈建议避免在 MS Access 中使用多值字段:他们违背数据库规范化规则而且,您无法像查询中任何其他单值字段那样轻松地访问或过滤它们所保存的数据。
相反,考虑一下你有一个多对多关系:一个Item
可能有很多 个Tags
,并且一个Tag
可能被分配给多个Items
。
因此,如果你想遵循最佳实践并遵守规则数据库规范化,我建议使用两个单独的表来容纳和Items
,Tags
以及连接表以下列方式:
项目表
该表将包含一个主键 (PK),用于唯一标识表中的每个项目,以及其值通常不会与表中的其他项目共享的属性,例如Description
。
最基本的形式是这样的表格:
+-------------+------------+
| itm_ID (PK) | Autonumber |
| itm_Desc | Text |
+-------------+------------+
+-------------+----------+
| itm_ID (PK) | itm_Desc |
+-------------+----------+
| 1 | Pen |
| 2 | Pencil |
| 3 | Chair |
| ... | ... |
+-------------+----------+
表中其他项目可能共享的属性(例如,,,Colour
)Location
应Type
出现在自己单独的表中,并由项目记录使用外键(FK)引用。
标签表
该表将包含所有可用的标签,每个标签将再次由表内的主键字段唯一标识:
+-------------+------------+
| tag_ID (PK) | Autonumber |
| tag_Desc | Text |
+-------------+------------+
+-------------+------------+
| tag_ID (PK) | tag_Desc |
+-------------+------------+
| 1 | Stationery |
| 2 | Furniture |
| ... | ... |
+-------------+------------+
物品-标签连接表
Items
该连接表用于表示和之间的多对多关系Tags
,可以按以下方式构造:
+----------------+--------------+
| itg_itmID (PK) | Long Integer |
| itg_tagID (PK) | Long Integer |
+----------------+--------------+
+----------------+----------------+
| itg_itmID (PK) | itg_tagID (PK) |
+----------------+----------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
+----------------+----------------+
从上面可以看出,我们已经轻松地将标签分配给了表中的Stationery
和(证明Pen
了标签和项目之间的一对多关系),同样,我们可以为任何项目分配多个标签(证明了项目和标签之间的一对多关系)。Pencil
Items
答案2
我不同意人们不应该在 Access 应用程序中使用多值字段 (MVF) 的观点。我在数据库的许多表中使用了多个 MVF。我的一个表有十 (10) 个 MVF。它们在表单和报告中都运行良好。我使用它们将人员分配到不同的任务,例如编写、审阅和批准工作。它们不会违反任何数据库设计规则。它们易于实现并且直观。