2016-04-25 75 views
0

第一篇文章我一直潛伏多年,但最終難倒了足夠的要求幫助?請原諒格式如何正常化我的數據

我已經產生了一個思維導圖(類別,子類別,問題和答案)我試圖找到一個數據結構來映射這個。一旦我映射數據,最終會出現大量的重複問題,其中一個問題及其子代適合多個類別和子類別。這導致我相信我的結構很差,這可以通過某種方式來規範化,這正是我無法理解的。

E.g. 關於購物和廣告的想法,你曾經做過以下哪一項?

  • (CAT_ID = 1)購物& ADVERTISING(父類別)
    • (CAT_ID = 41)購物信息/購買(子類別)
      • (ID-1234)購物的思維和廣告,你做過以下哪些事情?
        • (ID-4111)您經常通過電視屏幕做這些事情?
        • (ID-4112)您經常通過臺式計算機執行此操作的頻率?
        • (ID-4113)您通過筆記本電腦多久使用一次?
  • (CAT_ID = 1)購物& ADVERTISING(父類別)

    • (CAT_ID = 44)不能分裂 - 購物和廣告(子類別)
      • (ID-1234)考慮購物和廣告,您曾經做過以下哪一項?
        • (ID-4111)您經常通過電視屏幕做這些事情?
        • (ID-4112)您經常通過臺式計算機執行此操作的頻率?
        • (ID-4113)您通過筆記本電腦多久使用一次?
  • (CAT_ID = 2)屏風& DEVICES(父類別)

    • (CAT_ID = 51)的使用/共享使用(子類別)
      • ( ID-1234)想購物和廣告,你曾經做過以下哪些事情?
        • (ID-4111)您經常通過電視屏幕做這些事情?
        • (ID-4112)您經常通過臺式計算機執行此操作的頻率?
        • (ID-4113)您通過筆記本電腦多久使用一次?
  • (CAT_ID = 2)屏風& DEVICES(父類別)
    • (CAT_ID = 52)電視(子類別)
      • (ID-1234)思維購物和廣告,你有沒有做過以下哪一項?
        • (ID-4111)您經常通過電視屏幕做這些事情?

所以爲了映射這個我創建了下面的表格。請注意我已經有一個問題表和一個鏈接到它的類別表,其中包含上面的ID。

| id | object_id  | parent_id  | type | 
|---- |----------- |----------- |------ | 
| 1  | 1    | NULL   | 1  | 
| 2  | 41   | 1    | 1  | 
| 3  | 1234   | 41   | 2  | 
| 4  | 4111   | 1234   | 2  | 
| 5  | 4112   | 1234   | 2  | 
| 6  | 4113   | 1234   | 2  | 
| 7  | 44   | 1    | 1  | 
| 8  | 1234   | 44   | 2  | 
| 9  | 4111   | 1234   | 2  | 
| 10 | 4112   | 1234   | 2  | 
| 11 | 4113   | 1234   | 2  | 
| 12 | 2    | NULL   | 1  | 
| 13 | 51   | 2    | 1  | 
| 14 | 1234   | 51   | 2  | 
| 15 | 4111   | 1234   | 2  | 
| 16 | 4112   | 1234   | 2  | 
| 17 | 4113   | 1234   | 2  | 
| 18 | 52   | 2    | 1  | 
| 19 | 1234   | 52   | 2  | 
| 20 | 4111   | 1234   | 2  | 
| 21 | 4112   | 1234   | 2  | 
| 22 | 4113   | 1234   | 2  | 

正如你可以看到上面有很多重複。除了表4,5,6,9,10,11,15,16,17,20,21,22給出的ID是相同的數據。這讓我覺得如果接近這個​​,這不是最有效的方法。我有一種感覺,我應該通過對象ID將它分開,然後讓所有的父母都開始,但是隨後我開始迷失方向並迷路。這是一個小樣本上面的例子在思維導圖中重複了很多次,因爲我可以通過多條路徑訪問

任何人都可以幫忙嗎?這是可能的還是我做得足夠的。

回答

0

我認爲你的方法是足夠的,取決於你想完成什麼。

對於表的組織,我可能會忽略父類和類型,並將其設置爲「question_map」表或其他行。

| id | cat_id | question_id | subquestion_id | 
| 1 | 41  | 1234  | 4111   | 
| 2 | 41  | 1234  | 4112   | 
| 3 | 41  | 1234  | 4113   | 
| 4 | 44  | 1234  | 4111   | 
| 5 | 44  | 1234  | 4112   | 
| 6 | 44  | 1234  | 4113   | 

這種方式(在我看來)允許更大的靈活性與類別,問題和子問題。然後在您的分類表中,您可以使用父列組織分類和子分類。

| cat_id | parent_id | description       | 
| 1  | null  | SHOPPING & ADVERTISING    | 
| 2  | null  | SCREENS & DEVICES     | 
| 41  | 1   | Shopping information/Purchases  | 
| 52  | 2   | TV         |