Мне нужна помощь в оптимизации схемы базы данных - PullRequest
3 голосов
/ 03 июня 2010

Вот схема моих данных:

Heading 1:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 2:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 3:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 4:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 5:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Эти заголовки должны иметь логическое значение «Статус завершения», которое связывается с идентификатором пользователя.

В настоящее время мой стол выглядит так:

id  |  userID  |  field_1  |  field_2  |  field_3  |  field_4  | etc...
-----------------------------------------------------------------------
1   |     1    |    0      |     0     |     1     |     0     |
-----------------------------------------------------------------------
2   |     2    |    1      |     0     |     1     |     1     |

Каждое поле представляет один подзаголовок. Наличие такого количества столбцов в моей таблице выглядит ужасно неэффективно ...

Как я могу оптимизировать это? Я не могу придумать, как это исправить: /

Ответы [ 3 ]

3 голосов
/ 03 июня 2010

Не используйте логические значения, а простые отношения:

table completion_status

id user_id field_id

1  1       3
2  2       1
3  2       3
4  2       4
...

Отсюда легко увидеть, что пользователь 1 заполнил поле 3, а пользователь 2 - поля 1, 3 и 4.

Таким образом, вам не нужно менять схему базы данных всякий раз, когда вы хотите изменить количество полей.

0 голосов
/ 03 июня 2010

Почему бы вам не сделать такой стол?

id  | User Id | Field ID | Status
---------------------------------
1   |   1     |   1      | 0   
2   |   1     |   2      | 1  

У вас может быть другая главная таблица для полей с именами полей

0 голосов
/ 03 июня 2010

Вы можете иметь подзаголовки в другой таблице, а затем связать эту таблицу с первой таблицей.

id  |  userID  |  field_id | 
-----------------------------
1   |     1    |    0      | 
-----------------------------
2   |     2    |    1      | 

где таблица field выглядит так

id  | field_1 | field_2   | etc..
-----------------------------
1   |     1   |    0      | etc..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...