2015-02-17 73 views
0

有一個免費的public data set可用,有超過300個字段。我想創建一個ETL過程來更新和存儲本地數據在MySQL或SQL服務器上。因爲記錄太大而不適合數據庫表,所以我將不得不去規格化,或者用不同的方式標準化。以下是我的數據集的表示:使用MySQL或Sql Server處理300多列Excerx

+------------+---------+---------+-----+-----------+---------+ 
| 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個表格。

TableLeft:

+------------+---------+---------+ 
| 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  |   | 
+------------+---------+---------+ 

TableRight:

+-----+-----------+---------+ 
| …. | 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場演出,或約500萬行,而實際上它可能是更接近於4-6個連接來獲取整行數據。

有關處理需要以這種方式進行分區的數據的標準是什麼?

您可以查看帶有前1000條記錄的Excel文件here

+1

我並不是說你不應該規範,但爲什麼這麼說呢記錄是太大,不適合到表? – 2015-02-17 20:11:20

+1

讓我們清楚這一點。數據是非規範化的,你想要規範化它。這意味着將這些列分解成單獨的表格。這很有意義。提供答案的問題是有302列需要在表格中分配。這些數據應該像任何其他收集數據點一樣結構化。當您開始查看像「醫療保健提供商分類標準代碼__1」這樣的列名稱時,它可能是第二個表格。 – 2015-02-17 20:13:22

+0

@RickS每個RDBMS都有一個極限,達到創紀錄能多大 – 2015-02-17 20:29:20

回答

1

請閱讀正常形式。網上有很多關於這方面的資料。例如this poster似乎是很好的概述。或者這樣的視頻:Normalisation DemonstrationDatabase Normalization - Explained with Examples

一般來說一個表應該是「關於」一個實體,如地址,人,企業單位等

例如,在此數據集列提供組織名稱(法定公司名稱) , 提供商姓(法定名稱), 提供名字, 提供中間名, 提供商名稱前綴文字, 提供商名稱後綴文字, 提供憑據的文字,似乎是大約一個實體(服務提供商?)。

列提供其他組織的名稱, 提供其他組織的名稱類型代碼, 提供商的姓, 提供商的名字, 提供商的中間名, 提供商的名稱前綴文字, 提供商的名稱後綴文字, 提供者其他憑據文本, 提供者其他姓氏類型代碼似乎是關於第二個提供者實體。

列提供商第一線業務郵寄地址, 提供商二線商務郵寄地址, 供應商業務郵寄地址城市名稱, 供應商業務郵寄地址國家名稱, 供應商業務通訊地址郵編, 供應商業務郵寄地址國家代碼(如果在美國以外), 提供商業務郵寄地址電話號碼, 提供商業務郵寄地址傳真號碼似乎是關於地址實體。

列設置提供商業務實踐位置...似乎是另一個地址。

授權官方姓, 授權正式名字, 授權官方中東名稱, 授權的官方頭銜或職位, 授權官方電話號碼可能是另一個實體。

醫療保健提供商分類Code_n, 提供商許可NUMBER_N, 提供商許可數態勢Code_n, 醫療保健提供商主要分類Switch_n其中n爲1至15似乎是另一個實體的實例的列表。

與其他供應商Identifier_n, 其他供應商標識類型Code_n, 其他供應商標識State_n, 其他供應商標識Issuer_n

和醫務人員分類Group_n相同的 - 在這裏似乎是一個領域的實體。