【问题标题】:MS Access - Matching records without single identifierMS Access - 匹配没有单一标识符的记录
【发布时间】:2018-05-15 17:12:12
【问题描述】:

我需要找到一种方法来匹配两个表之间的记录。问题是没有一个标识符可以使匹配变得非常简单,所以我需要找到一种方法来根据记录中的一些其他可用信息进行匹配。

在小学,所有注册/现有学生都有学生证。它是独一无二的,是完美的主键。但是,任何来年进入学校的新生在正式注册之前都不会获得学生证。

在下一学年开始之前,学校会邀请新入学的学生参加注册前评估计划,以帮助确定他们当前的水平和下一学年的需求。正是在这一点上,收集了有关每个潜在学生的尽可能多的数据。此信息与主要学生信息存储在单独的表中,主要是因为没有正式的学生 ID。我们的想法是,一旦他们获得了正式的学生 ID,就将预注册学生及其数据合并到主学生信息表中。

我的想法是为这些新学生分配一个临时 ID,以便为他们提供一个唯一标识符,以防姓名重复。

我的问题是,一旦为学生分配了一个临时 ID,我如何才能将临时 ID 与真实 ID 匹配?

将在预注册过程中收集的一些信息将包括姓氏、名字、中间名、年级,生日是另一种可能性(但目前不包括在内)。

也许我以错误的方式处理这个问题,所以任何提供的建议都将不胜感激。

【问题讨论】:

  • 对此有很多可能的答案。一种选择可能是获取学生 ID 并从中创建一个临时 ID 并尽早创建 ID 号。在学生 ID 方面,有一个“活动”或“已注册”列作为 BIT 字段,在学生注册之前不会激活。当然,根据您的故事,很难说出您的数据是什么样的(或者您可以更改什么)以及您可能使用哪种流程,但这可能是一种选择。 IMO,如果您想通过该过程,您有正确的匹配想法,但这可能(在某些不太可能的情况下)导致冲突。
  • 不要使用学生证作为主键。主键仅用于唯一标识记录,不应具有任何其他含义。定义另一个主键并将学生数据添加到您的表中。如果他们确实注册并获得了学生 ID,请将其添加到您的主表中。接下来,删除所有未获得学生证的学生的所有学生数据。
  • Student ID 是否需要连续?似乎最简单的解决方案是在预注册期间分配一个学生 ID,并且根本不使用最终没有注册的学生的 ID。除非您需要一组可以保证完全匹配的字段。通常,名称对此并不好,因为它们很容易输入错误。如果您可以使用预注册信息作为注册学生的基础,那么问题会比您必须使用两个完全独立生成的表格要容易得多。

标签: database ms-access


【解决方案1】:

听起来您正在从主学生信息系统导出信息,在 Microsoft Access 中运行附加处理,然后最终将其合并回主系统。在这种情况下,您将不得不处理导出和合并功能的限制,并围绕那里可用的内容构建匹配逻辑。

A 计划:理想情况下,您的 Excel 导出将包含来自主系统的某种类型的主要记录标识符,独立于稍后分配的学生 ID。 (它很可能在内部使用一个唯一 ID,即使该 ID 未包含在导出文件中。)然后您将使用它来匹配您在 Microsoft Access 中的记录。

B 计划:如果主系统不导出唯一标识符,那么您需要提供最佳数据组合来唯一识别学生。你如何做到这一点取决于你正在处理的学生数量,以及匹配的数据是否在任一系统中发生变化。如果原始系统中的数据是完整的,则全名和出生日期是一种相当常见的方法。

建立唯一标识符后,我将在 Access 中使用两个查询。第一个是更新查询,一旦学生 ID 在主系统中可用,就将其分配给您的 Access 系统。 (在 Excel 中搜索具有学生 ID 但在 Access 中还没有的匹配学生。)

第二个查询是追加查询,用于将新学生从主系统添加到 Access 中。 (Excel 中的学生与 Microsoft Access 中的任何现有学生都不匹配。)

采用这种方法,您将定期从主系统中提取 Excel 导出并运行上述查询以保持您的 Access 系统更新。然后,当您准备好将信息合并回主系统时,您可以在 Access 中过滤分配有学生 ID 的学生。主系统中数据的实际更新可能是通过更新查询完成的,或者可能是从包含学生 ID 的 Access 导出。 (取决于您的主系统如何合并传入的数据。)

【讨论】:

    【解决方案2】:

    我的处理方法是将两个表合并到一个单个表的学生中。该表将有一个AutoNumber ID 列,该列指的是学生或准学生。然后,您将在此表中为 StudentID 提供另一列,该列将在稍后分配。

    然后,您的表单和报告可以根据 StudentID 字段过滤数据,以向您显示当前或未来的学生。

    采用这种方法意味着您的学生数据会输入到一个地方,您不必担心以后会尝试重复信息或合并信息。由于单条记录代表一个人,因此使用单张表对我来说是合乎逻辑的。

    【讨论】:

    • 你和Rene 提出了类似的建议,我没想到会这样做。我喜欢!!!但是......我仍然有一个问题,即在分配后将自动编号的学生与他们的真实学生 ID 相匹配。学生的信息作为来自官方学生信息系统的 Excel 导出提供给我。 Access 文件不是存储学生数据的地方。它被用于真正的学生信息系统无法处理的单独目的。这意味着我仍然无法将 Access 中的内容与 Excel 中的内容相匹配。
    • 感谢您的补充说明。由于您无法直接访问/控制主系统中的数据,因此在您的情况下,单个表可能不是一个选项。我添加了一个额外的答案,重点是匹配策略。希望对您有所帮助!
    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多