【发布时间】:2018-05-15 17:12:12
【问题描述】:
我需要找到一种方法来匹配两个表之间的记录。问题是没有一个标识符可以使匹配变得非常简单,所以我需要找到一种方法来根据记录中的一些其他可用信息进行匹配。
在小学,所有注册/现有学生都有学生证。它是独一无二的,是完美的主键。但是,任何来年进入学校的新生在正式注册之前都不会获得学生证。
在下一学年开始之前,学校会邀请新入学的学生参加注册前评估计划,以帮助确定他们当前的水平和下一学年的需求。正是在这一点上,收集了有关每个潜在学生的尽可能多的数据。此信息与主要学生信息存储在单独的表中,主要是因为没有正式的学生 ID。我们的想法是,一旦他们获得了正式的学生 ID,就将预注册学生及其数据合并到主学生信息表中。
我的想法是为这些新学生分配一个临时 ID,以便为他们提供一个唯一标识符,以防姓名重复。
我的问题是,一旦为学生分配了一个临时 ID,我如何才能将临时 ID 与真实 ID 匹配?
将在预注册过程中收集的一些信息将包括姓氏、名字、中间名、年级,生日是另一种可能性(但目前不包括在内)。
也许我以错误的方式处理这个问题,所以任何提供的建议都将不胜感激。
【问题讨论】:
-
对此有很多可能的答案。一种选择可能是获取学生 ID 并从中创建一个临时 ID 并尽早创建 ID 号。在学生 ID 方面,有一个“活动”或“已注册”列作为 BIT 字段,在学生注册之前不会激活。当然,根据您的故事,很难说出您的数据是什么样的(或者您可以更改什么)以及您可能使用哪种流程,但这可能是一种选择。 IMO,如果您想通过该过程,您有正确的匹配想法,但这可能(在某些不太可能的情况下)导致冲突。
-
不要使用学生证作为主键。主键仅用于唯一标识记录,不应具有任何其他含义。定义另一个主键并将学生数据添加到您的表中。如果他们确实注册并获得了学生 ID,请将其添加到您的主表中。接下来,删除所有未获得学生证的学生的所有学生数据。
-
Student ID是否需要连续?似乎最简单的解决方案是在预注册期间分配一个学生 ID,并且根本不使用最终没有注册的学生的 ID。除非您需要一组可以保证完全匹配的字段。通常,名称对此并不好,因为它们很容易输入错误。如果您可以使用预注册信息作为注册学生的基础,那么问题会比您必须使用两个完全独立生成的表格要容易得多。