是否可以在 Excel 中规范化数据,以便确保导入 Access 时数据集符合第三范式

是否可以在 Excel 中规范化数据,以便确保导入 Access 时数据集符合第三范式

先介绍一下背景,我是一名正在做数据科学作业的大学生。我在 Excel 中有一个数据集,基于来自世界各地的足球运动员。目前,每个球员都有一个 ID,每条记录都包括他们的 ID、姓名、俱乐部、照片、年龄等;

我遇到的问题是,当我在 Access 中设计表时,我无法从 Excel 导入数据并由于一些重复数据而对其进行规范化。

我已为每个球员分配了一个 ID,我想将其拆分成一个表格,其中包含 (俱乐部、球员、球员属性、联赛),但由于我有超过 17,000 名球员及其俱乐部的数据 - 我必须手动在 Access 中为每个唯一的俱乐部分配一个 ID,然后从我的 excel 电子表格中删除所有重复的俱乐部,以便“俱乐部”表中只显示一个俱乐部实例,而“球员”表中则显示一个关联的“clubID”列,该列链接到俱乐部表。我是否可以自动删除 Excel 中某个东西的所有重复实例,并将该重复替换为数字?

Excel 中我的前 4 条记录的屏幕截图。电子表格包含超过 17,000 条记录。

Excel 中的前 4 条记录
(点击图片放大)

答案1

按步骤进行:

导入代表非规范化数据的“原始数据”表 - 本质上是逐字的 Excel 电子表格数据(您不需要创建此表;导入向导会为您完成此操作)。

通过执行附加查询从原始表中选择不同的数据,将联赛、俱乐部提取到适当的规范化表中。例如:

INSERT INTO Leagues SELECT DISTINCT LeagueName FROM RawData

将球员提取到适当的标准化球员表中。为此,使用附加查询将 RawData 表连接到标准化的联赛和俱乐部表,并将名称作为连接字段(因为原始数据中没有 ID)。在此查询中,球员SELECT标准化字段(姓名、年龄等)以及俱乐部和联赛 ID。例如:

INSERT INTO Players
SELECT PlayerName, Age, LeagueID, ClubID
FROM RawData 
INNER JOIN Clubs ON RawData.ClubName = Clubs.ClubName
INNER JOIN Leagues ON RawData.LeagueName = Leagues.LeagueName

相关内容