mySQL 数据库的自动规范化 - 怎么做?

Posted

技术标签:

【中文标题】mySQL 数据库的自动规范化 - 怎么做?【英文标题】:Automated normalization of mySQL database - how to do it? 【发布时间】:2010-11-13 03:14:16 【问题描述】:

我有一个 mysql 数据库,其中包含一个包含 80 列和 1000 万行的巨大表。数据可能不一致。

我想以自动化和高效的方式规范化数据库。

我可以使用 java/c++/... 来做,但我想尽可能多地在数据库中做。我想在数据库之外的任何工作都会大大减慢速度。

关于如何做的建议?有什么好的资源/教程可以开始?

在寻找关于什么是规范化的任何提示(使用谷歌找到了很多这样的东西)!

【问题讨论】:

【参考方案1】:

我想不出任何可以自动化它的方法。您必须创建所需的表,然后通过手动查询替换每条数据。

例如,

INSERT INTO contact
SELECT DISTINCT first_name, last_name, phone
FROM massive_table;

然后您可以将这些列从庞大的表中删除,并将其替换为 contact_id 列。

在提取进入一对多表的行时,您将有类似的过程。

【讨论】:

【参考方案2】:

您需要研究列以识别“相似”实体并将它们分成单独的表格。充其量,自动化工具可能会为某些列识别具有相同值的行组,但了解数据的人必须确定这些数据是否真正属于单独的实体。

这是一个人为的示例 - 假设您的列是名字、姓氏、地址、城市、州、邮编。自动化工具可能会识别出具有相同姓氏、地址、城市、州和邮编的同一家庭成员的行,并错误地得出这五列代表一个实体的结论。然后它可能会拆分表格:

名字,参考ID

还有一张桌子

ID、姓氏、地址、城市、州、邮编

明白我的意思了吗?

【讨论】:

【参考方案3】:

在清理杂乱的数据时,我喜欢创建用户定义的 mysql 函数来执行典型的数据清理工作……这样您以后可以重用它们。采用这种方式还可以让您查看是否可以找到已编写的现有 udf,您可以使用(无论是否修改)...例如mysqludf.org

【讨论】:

谢谢,mysqludf就是我要找的那种资源。

以上是关于mySQL 数据库的自动规范化 - 怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server之数据库规范——1自动化规范命名

MySQL开发规范

MySQL设计规范

MySQL数据类型 - JSON数据类型

Mysql--重点1

若在vs中将excel当作数据库,那要怎么做?(求具体步骤!!!)