使用 PHP 规范化数据库的过程是什么?

What is the procedure to normalize a database with PHP?

我刚刚接手了一份非常糟糕的数据库设计工作,该工作大量使用逗号分隔值来存储数据。我知道我知道,就是地狱

数据库是 mysql,目前正在使用 MySql Workbench 访问它。

我已经想到要删除什么,以及需要什么新关系 table。

所以,我的问题是,我该如何继续将逗号分隔的数据迁移到新的 table?有专门用于规范化数据库的工具吗?

编辑: 服务器代码在 PHP.

首先定义新的 table 和属性。

然后,使用 PHP 或 Python 或您最喜欢的语言调用 MySQL 并编写一个循环并读取旧 table(s) 的 1 次转换器并记录并将正确的记录插入新的 tables.

看来您正在寻找标准做法。那里有不同程度的非规范化数据库。我遇到的那些已经使用自定义代码和工具进行了规范化。

SQL 服务器集成服务 (SSIS) 可用于某些情况。在您的情况下,我将为涉及的迁移构建一个脚本:

  • 创建标准化 tables
  • 正在创建存储过程或 PHP 脚本以从非规范化 table 中读取数据,对其进行转换并将其加载到规范化 table
  • 正在创建日志 table 或日志文件
  • 在沙盒中执行迁移;这样做的同时写日志
  • 版本控制脚本
  • 根据需要更正 proc/script
  • 创建另一个沙箱
  • 运行 沙盒上的完整脚本
  • 如果成功,运行 产品上的完整脚本(带日志记录)

许多组织将 SSIS 用于 ETL;它是 Microsoft BI 堆栈的标准工具,也可用于在非 Microsoft 数据库之间迁移数据。

名为 Talend 的开源 ETL 工具也可能有助于转换您的数据。我个人认为 PHP 脚本将是最快和最容易处理数据的。