Я разрабатываю новую бэкэнд-систему MySQL, и я столкнулся с проблемой, и я не уверен в оптимальном способе настройки таблицы. Скажем, у меня есть таблица под названием города. Каждый город имеет отношение к столу weather, который содержит информацию о погоде за каждый месяц. Для того, чтобы быть просто скажем, что структура города таблицы:Оптимальный способ настройки структуры таблицы
---------------
| ID | Name |
---------------
| 1 | City1 |
| 2 | City2 |
| 3 | City2 |
---------------
Для погоды, у меня есть около 50 месторождений. Для каждого месяца года у меня есть высокая температура, низкая температура, средняя температура, средние осадки. Наличие таблицы с 50 столбцами кажется неэффективным, и кажется сложным добавить новые поля. Другой вариант можно рассмотреть, чтобы иметь таблицу со следующей установкой:
----------------------------------------------------
| ID | CityID | Type | Value | Unit | Month |
----------------------------------------------------
| 1 | 1 | high_temp | 50 | F | 1 |
| 2 | 1 | low_temp | 35 | F | 1 |
| 3 | 1 | avg_temp | 45 | F | 1 |
| 4 | 1 | avg_prec | 10 | IN | 1 |
| 5 | 2 | high_temp | 60 | F | 1 |
| 6 | 2 | low_temp | 50 | F | 1 |
| 7 | 2 | avg_temp | 55 | F | 1 |
| 8 | 2 | avg_prec | 2 | IN | 1 |
----------------------------------------------------
Однако, у меня есть около 1000 городов в базе данных и будет расширять это до десятков тысяч. Наличие таблицы с примерно 5 миллионами строк кажется чрезмерным, и я беспокоюсь о времени запроса.
Каким будет оптимальный способ установить это, с отношением «один к одному» или отношения «один ко многим»? Кроме того, что было бы более эффективным для создания сложных запросов, в которых я пытаюсь искать города, основанные на нескольких погодных характеристиках?
В качестве продолжения, у меня есть аналогичная проблема с ценовой таблицей. Существует около 50 различных полей для оценки по сравнению с 8, но нет данных за месяц. В этом случае было бы оптимально иметь таблицу с ~ 50 полями? – user2694306
В большинстве случаев он будет оптимальным. Но нормализация не является универсальной панацеей. У меня была подготовка в Microsoft, и преподаватель посоветовал просто сделать денормализацию в некоторых случаях.Но это большая тема для обсуждения в комментарии. Не забудьте задать вопросы о данных и ответах. –