SQL: Советы по структурированию таблицы для соответствия трехмерным данным? - PullRequest
0 голосов
/ 30 января 2019

Мне просто хотелось бы получить некоторые рекомендации по оптимизации базы данных.У меня есть то, что по сути является ежедневным опросом с парой ползунков (так с плавающей точкой 0-1).Каждый день, X людей из одной компании будут заполнять это, представляя свои значения для этого «опроса».

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

Я ищу руководство по размещению всех этих данных в одной таблице.Вот некоторые конкретные вопросы:

  • Если у каждой компании есть 5-значный идентификатор, и я должен был записать все данные в одной таблице со столбцом, содержащим идентификатор, и столбцом с отметкой времени, насколько эффективно было бы получить все точки данных от определенной компании (5-значный идентификатор), когда данные исчисляются миллионами или десятками миллионов?
  • Сколько составляет размер таблица влияет на эффективность при доступе?
  • Если бы я использовал метод с 5-значным идентификатором, вы бы порекомендовали мне также назначить каждую отдельную "запись опроса" (она же строка) с еесобственный индекс, как таковой?
  • У вас есть какие-либо общие советы или идеи для структурирования одной таблицы с моим конкретным случаем?

Спасибо.

1 Ответ

0 голосов
/ 30 января 2019

Не рекомендуется использовать одну таблицу для всех ваших данных.

Я думаю, вы могли бы смоделировать ее с несколькими таблицами (схема, в реляционной записи):

Users(ID,name, bla, bla, bla) --user's data
Company(ID, Name, bla, bla) --company's data

question(ID,question) --a single question
survey(ID, date, some general stuff about that survey) --track each survey    
answer(ID, question_id, survey_id, user_id, company_id, answer_value) --an answer to a question (in a survey)

ПРИМЕЧАНИЕ: внешние ключи обозначаются как referenced_table _ID

С помощью этой схемы вы можете:

  • давать один и тот же опрос нескольким компаниям,
  • иметьодин пользователь, проводящий одно и то же исследование с разными значениями из разных компаний
  • отслеживать каждый отдельный вопрос
  • отслеживать каждый отдельный ответ
  • вопрос не имеет репликации данных, разумеется, после того, как вы это сделаете, выМожно
  • Конечно, вы можете написать представление, чтобы иметь все в одной таблице
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...