gpt4 book ai didi

sql - 自动标准化为 1NF(删除重复列)

转载 作者:搜寻专家 更新时间:2023-10-30 23:16:17 25 4
gpt4 key购买 nike

我有一个看起来像这样的表:

Person  Project1 Project2 Project3 WorkedWith1  WorkedWith2  WorkedWith3
John A B Null Ann Mary Null
Ann A B C Jeff Null Null
....

我正在寻找一种工具,无需编写任何代码即可帮助我将其转换为 1NF。

具体来说,在这个例子中,我会告诉工具我想将数据重新排列到表 PersonsProjectsAssigned (以多对多关系将 Persons 链接到 Projects)和 WorkedWith(将 Persons 链接到Persons 多对多关系)。我想让该工具做的就是根据这些说明移动数据。

我真的不在乎这个工具是不是某些 DBMS 的一部分,或者只是处理纯文本 (CSV) 文件——不涉及任何特定的数据库。我在 MS Access 2010 中尝试过表分析器,但除非我遗漏了什么,否则它无法解决此特定任务。 (尽管它在更简单的情况下工作得很好。)

注意:我熟悉归一化;我不想学习任何东西 - 只是想节省自己的时间。我也理解为什么不存在用于数据库规范化的通用工具。我希望我的案例非常简单和常见,以至于可能有一个工具可以处理它。我也不介意学习一个相对复杂的工具。

最佳答案

我相信你想要的是一个 ETL软件。
据我所知,您需要预先创建目标表,但 ETL 可以拆分、重组数据并将数据从一个数据库(或文件)加载到另一个数据库(或文件)。

虽然这对您的目的来说可能有点矫枉过正,使用 ETL 软件的学习曲线可能比编写一些 VBA 和一些查询来帮助将数据从一种形式转换为另一种形式要多得多,但如果这是您拥有的东西经常做,可能还是值得的。

但在您的情况下,我很可能只创建目标表并多次遍历输入表以一次提取数据,填写 PersonsProjects 使用与原始列不同的数据创建表,然后在单独的表中重新创建关系。

在 VBA 中做这种工作时,我发现了 Dictionary对于跟踪关系非常宝贵。

关于sql - 自动标准化为 1NF(删除重复列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com