2013-10-03 3 views
0

Я собираюсь сделать некоторые веб-приложения, используя Rails/PostgreSQL, и мне нужен ваш совет о части структуры базы данных. Есть 2 стола: магазины и уступки. «Магазины» должны хранить некоторую базовую информацию: имя, адрес и т. Д. «Обратная связь» должна хранить информацию о обратной связи: описание, рейтинг пользователя для магазина. Веб-приложение должно показывать магазины и их средние оценки. Я могу хранить всю информацию о рейтингах в таблице «обратная связь» и вычислять средние значения с помощью функций SQL (получать все отзывы от shop_id, суммировать их и делиться на количество обратных ссылок). Но может быть хорошо иметь еще 2 поля «рейтинг», «count_of_feedbacks» в таблице «магазины», чтобы сделать это быстрее? Пожалуйста, дайте мне совет.Структура таблиц для хранения магазинов/обратных связей

ответ

1

Вещь, которую вы описываете (создавая дополнительные поля «сделать это быстрее»), прежде чем даже зная, будет ли она медленной, называется преждевременной оптимизацией. Муравей это плохо. Очень, очень плохо.

Также вы хотите дублировать данные в своем дБ - это тоже плохо. Вам нужно будет поддерживать правильную версию rating для каждого обновления - это не так просто сделать с несколькими параллельными транзакциями/соединениями.

Мой совет - держите его простым и только фиксируйте проблемы с производительностью, когда они становятся реальными. Есть много способов исправить их в современных базах данных.

Смежные вопросы