2016-04-25 7 views
0

Первое сообщение, которое я скрывал в течение многих лет, но, в конце концов, достаточно туго, чтобы попросить о помощи? Извините, что форматКак нормализовать мои данные

Я создал карту разума (категории, подкатегории, вопросы и ответы) Я пытаюсь найти структуру данных для ее отображения. Как только я сопоставляю данные, я получаю много повторений, когда вопрос и его дети подпадают под несколько категорий и подкатегорий. Это заставляет меня думать, что моя структура бедна, и это может быть нормализовано каким-то образом, что ускользает от меня.

E.g. Думая о покупках и рекламе, что из следующего вы когда-либо делали?

  • (cat_id = 1) ПОКУПКА & РЕКЛАМА (Родитель Категория)
    • (cat_id = 41) Покупка информации/Закупки (подкатегория)
      • (ID- 1234) Мышление покупок и рекламу, какую из следующих вы когда-либо делали?
        • (ID-4111) Как часто вы делаете это с помощью экрана телевизора?
        • (ID-4112) Как часто вы делаете это через свой настольный компьютер?
        • (ID-4113) Как часто вы делаете это через свой портативный компьютер?
  • (cat_id = 1) ПОКУПКА & РЕКЛАМА (Родитель Категория)

    • (cat_id = 44) Нет сплит - покупки и реклама (подкатегорию)
      • (ID-1234) Думая о покупках и рекламе, что из следующего вы когда-либо делали?
        • (ID-4111) Как часто вы делаете это с помощью экрана телевизора?
        • (ID-4112) Как часто вы делаете это через свой настольный компьютер?
        • (ID-4113) Как часто вы делаете это через свой портативный компьютер?
  • (cat_id = 2) ЭКРАНЫ & УСТРОЙСТВА (родительский Категория)

    • (cat_id = 51) Использования/Общее использование (подкатегория)
      • (ID-1234) Думая о покупках и рекламе, о чем вы когда-либо делали?
        • (ID-4111) Как часто вы делаете это с помощью экрана телевизора?
        • (ID-4112) Как часто вы делаете это через свой настольный компьютер?
        • (ID-4113) Как часто вы делаете это через свой портативный компьютер?
  • (cat_id = 2) ЭКРАНЫ & УСТРОЙСТВА (Родитель Категория)
    • (cat_id = 52) TV (подкатегорию)
      • (ID- 1234) Thinking покупки и рекламы, что из следующего вы когда-либо делали?
        • (ID-4111) Как часто вы делаете это с помощью экрана телевизора?

Так что для того, чтобы отобразить эту я создал следующую таблицу. Обратите внимание: у меня уже есть таблица вопросов и таблица категорий, ссылающиеся на нее, в которой указаны идентификаторы выше.

| 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, указаны те же данные. что заставляет меня думать, что это не самый эффективный способ, если подойти к этому. У меня такое чувство, что я должен расщепить это по идентификатору объекта, а потом иметь всех родителей, но потом я начинаю потерять трек и потеряться. Это небольшой пример, приведенный выше пример повторяется много раз в карте разума, так как я могу получить доступ по нескольким путям.

Может ли кто-нибудь помочь? Возможно ли это или что я сделал достаточно.

ответ

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         | 
Смежные вопросы