You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access使用Analyze Table后去重并维护表关联的技术问题

拆分扁平表并去重的实操方案

1. 先明确三个目标表的核心结构

先把关联逻辑捋清楚,避免后续混乱:

  • BOOKS:存书籍核心信息(用ISBN当主键,因为它天然唯一)
    • 字段:ISBN(主键)、TITLE、AUTHOR、PURCHASE COST、PURCHASE DATE、ShelvingID(外键,关联存放位置表)、PersonID(外键,关联借阅人表)
  • PEOPLE:存唯一的借阅人信息(用自动编号当主键,避免重名导致的重复)
    • 字段:PersonID(自动编号,主键)、FIRST NAME、LAST NAME、PHONE、OFFICE
  • SHELVING:存唯一的存放位置信息(同样用自动编号当主键)
    • 字段:ShelvingID(自动编号,主键)、AISLE、BOOKCASE、SHELF

2. 分步去重并建立关联

第一步:生成无重复的PEOPLE表

在Access里新建查询,直接提取原表中唯一的人员记录:

SELECT DISTINCT [FIRST NAME], [LAST NAME], [PHONE], [OFFICE]
INTO PEOPLE
FROM 你的扁平表名称;

生成表后,给PEOPLE表加一个自动编号类型的PersonID字段,设为主键。

第二步:生成无重复的SHELVING表

用同样的思路提取唯一的存放位置:

SELECT DISTINCT [AISLE], [BOOKCASE], [SHELF]
INTO SHELVING
FROM 你的扁平表名称;

给SHELVING表加自动编号类型的ShelvingID字段,设为主键。

第三步:生成关联后的BOOKS表

通过关联查询,把原表的书籍信息和新生成的两个表绑定,同时保留原有的对应关系:

SELECT 
  原表.ISBN,
  原表.TITLE,
  原表.AUTHOR,
  原表.[PURCHASE COST],
  原表.[PURCHASE DATE],
  PEOPLE.PersonID,
  SHELVING.ShelvingID
INTO BOOKS
FROM 
  (你的扁平表名称 AS 原表
  INNER JOIN PEOPLE ON 
    原表.[FIRST NAME] = PEOPLE.[FIRST NAME] 
    AND 原表.[LAST NAME] = PEOPLE.[LAST NAME]
    AND 原表.[PHONE] = PEOPLE.[PHONE]
    AND 原表.[OFFICE] = PEOPLE.[OFFICE])
INNER JOIN SHELVING ON 
  原表.[AISLE] = SHELVING.[AISLE]
  AND 原表.[BOOKCASE] = SHELVING.[BOOKCASE]
  AND 原表.[SHELF] = SHELVING.[SHELF];

生成BOOKS表后,把ISBN设为主键,PersonID和ShelvingID设为外键,分别关联PEOPLE和SHELVING表的主键。

3. 验证和补漏

  • 打开Access的关系视图,检查三个表的关联是否正确:BOOKS的PersonID连PEOPLE的PersonID,ShelvingID连SHELVING的ShelvingID
  • 检查是否有遗漏记录:用原表和BOOKS表做左连接,确认所有书籍都被正确导入
  • 如果发现存放位置有拼写差异(比如"Aisle 1"和"aisle 1"),先在原表统一格式再重新执行去重,避免生成重复的位置记录

内容的提问来源于stack exchange,提问作者synthetic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:52:44