使用 MySQL 或 Sql Server Express 处理 300 多个列

Handling 300+ Columns with MySQL or Sql Server Experss

有一个免费的 public data set 可用,其中包含 300 多个字段。我想创建一个 ETL 过程来在 mysql 或 sql 服务器上本地更新和存储数据。因为记录太大而无法放入数据库 table,我可能不得不反规范化,或者可能以不同的方式规范化。以下是我的数据集的表示:

+------------+---------+---------+-----+-----------+---------+
|  Column1   | Column2 | Column3 | ….  | Column319 | ColumnN |
+------------+---------+---------+-----+-----------+---------+
| HUEBERT    | ALLISON | L       | DR. |           | M.D.    |
| YOUNGMAYKA | CYNTHIA |         |     |           | P.A.    |
| DIFILIPPO  | EMIL    | A       | DR. |           | M.D.    |
| THACKER    | RICHARD | RANDALL | DR. |           | D.O.    |
|            |         |         |     |           |         |
| ROTHSTEIN  | MARK    | TERRY   | DR. |           | M.D.    |
| GIBBS      | ELMER   | RICKEY  | DR. |           | M.D.    |
| MARKMAN    | ALAN    | WILLIAM | DR. |           | M.D.    |
| TROTCHIE   | DEBBIE  | C       |     |           | APN     |
| DYSART     | STANLEY | H       |     |           | M.D.    |
|            |         |         |     |           |         |
| GRUNERT    | GEORGE  | M       | DR. |           | M.D.    |
| GOLDBERG   | STEVEN  | M       | DR. |           | M.D.    |
| DUBOSE     | JON     |         | DR. |           | MD      |
+------------+---------+---------+-----+-----------+---------+

我想通过 2 tables 以这种方式去规范化。

左表:

+------------+---------+---------+
|  Column1   | Column2 | Column3 |
+------------+---------+---------+
| HUEBERT    | ALLISON | L       |
| YOUNGMAYKA | CYNTHIA |         |
| DIFILIPPO  | EMIL    | A       |
| THACKER    | RICHARD | RANDALL |
|            |         |         |
| ROTHSTEIN  | MARK    | TERRY   |
| GIBBS      | ELMER   | RICKEY  |
| MARKMAN    | ALAN    | WILLIAM |
| TROTCHIE   | DEBBIE  | C       |
| DYSART     | STANLEY | H       |
|            |         |         |
| GRUNERT    | GEORGE  | M       |
| GOLDBERG   | STEVEN  | M       |
| DUBOSE     | JON     |         |
+------------+---------+---------+

右表:

+-----+-----------+---------+
| ….  | Column319 | ColumnN |
+-----+-----------+---------+
| DR. |           | M.D.    |
|     |           | P.A.    |
| DR. |           | M.D.    |
| DR. |           | D.O.    |
|     |           |         |
| DR. |           | M.D.    |
| DR. |           | M.D.    |
| DR. |           | M.D.    |
|     |           | APN     |
|     |           | M.D.    |
|     |           |         |
| DR. |           | M.D.    |
| DR. |           | M.D.    |
| DR. |           | MD      |
+-----+-----------+---------+

整个数据集可能有 10 GB,或大约 500 万行,实际上它可能更接近 4-6 次连接才能获得整行数据。

处理需要以这种方式分区的数据的标准是什么?

您可以查看 excel 文件的前 1000 条记录 here

请阅读有关正常形式的信息。互联网上有大量关于此的材料。例如this poster seems to be good overview. Or this videos: Normalisation Demonstration, Database Normalization - Explained with Examples

一般来说,一个table应该是'about'一个实体,例如地址、人、业务单位等

例如,在此数据集中列提供商组织名称(法定企业名称), 提供者姓氏(法定名称), 提供者的名字, 提供商中间名, 提供商名称前缀文本, 提供商名称后缀文本, 提供者凭证文本,似乎是关于一个实体(提供者?)。

列提供者其他组织名称, 提供者其他组织名称类型代码, 提供者其他姓氏, 提供者其他名字, 提供者其他中间名, 提供商其他名称前缀文本, 提供商其他名称后缀文本, 提供者其他凭证文本, 提供商其他姓氏类型代码似乎与第二个提供商实体有关。

列提供商一线业务邮寄地址, 提供商二线业务邮寄地址, 提供商商业邮寄地址城市名称, 提供者商业邮寄地址州名, 提供者商业邮寄地址邮政编码, 提供商商业邮寄地址国家代码(如果在 U.S 之外), 提供者商业邮寄地址电话号码, 提供商业务邮寄地址传真号码似乎与地址实体有关。

列设置提供商业务实践位置...似乎是另一个地址。

授权官方姓氏, 授权官方名字, 授权官方中间名, 授权的官方头衔或职位, 授权官方电话号码可能是另一个实体。

医疗保健提供者分类 Code_n, 提供商许可证 Number_n, 提供者执照号码州 Code_n, 医疗保健提供者主要分类 Switch_n,其中 n 是 1 到 15,似乎是另一个实体的实例列表。

与其他供应商相同Identifier_n, 其他提供商标识符类型 Code_n, 其他提供商标识符 State_n, 其他提供商标识符 Issuer_n

以及医疗保健提供者分类法 Group_n - 这里似乎是一个字段实体。