2013-07-10 3 views
1

Каков наилучший способ хранения и подсчета голосов?Каков наилучший способ хранения и подсчета голосов?

У меня есть 2 таблицы:

[posts] 
    id 
    user_id 
    likes 
    dislikes 
    ... 

[likes_dislikes] 
    type // 0 if disliked, 1 if liked 
    post_id  
    user_id 

это хороший способ следить за Понравилось/не понравилось в таблицы «likes_dislikes», а также обновить соответствующие столбцы в «пост» таблицы,

или лучше хранить голоса только в таблице «likes_dislikes» и подсчитывать количество голосов с запросом каждый раз?

Сейчас у меня 14 колонок в таблице «posts». Это слишком много?

ответ

2

или лучше хранить голоса только в таблице «likes_dislikes» и подсчитывать количество голосов с запросом каждый раз?

Да, это было бы лучше, во-первых, потому что вам уже нужно выполнить запрос, и время подсчета симпатий и антипатий из связанной таблицы не будет иметь заметной разницы. Во-вторых, как указано в @kmas, нормализуйте свою базу данных, чтобы не дублировать данные. Если user_id таблицы posts будет соответствовать всем user_id для одного и того же post_id таблицы lik_dislikes, я бы поместил их все в одну таблицу, но я не считаю, что это так. Исправьте меня, если я ошибаюсь, но user_id в таблице lik_dislikes - это пользователь, который проголосовал, а user_id таблицы сообщений является владельцем сообщения. Чтение базы данных происходит намного быстрее, чем запись в базу данных. Если вам придется писать в дополнительную таблицу каждый раз, когда стихи читаются из дополнительной таблицы каждый раз, я бы пошел с чтением. Это не только сделает вашу базу данных нормализованной, но и упростит ваш код.

О, и для вопроса Right now I have 14 columns in the 'posts' table. Is that too much?, Нет 14 столбцов, определенно, не слишком много столбцов для одной таблицы. У меня есть база данных с 55 + таблицами одна таблица с 275 столбцами, одна из которых содержит 158 столбцов и множество других больших таблиц. Хитрость здесь заключается в том, чтобы никогда не запускать SELECT * FROM posts и выбирать только те столбцы, которые вам нужны, и использовать там, где условия с хорошей индексацией.

+0

Спасибо за ваше время, отвечая на мой вопрос! –

3

Наличие 14 столбцов в таблице не очень много.

Вы должны иметь в виду, что хорошая схема БД пытается не дублировать информацию. Я думаю, что это самое главное. Единственное, что вы должны дублировать, это иностранные IDS, вот и все.

Посмотрите на эту ссылку: http://en.wikipedia.org/wiki/Database_normalization

базы данных Нормализация является основой всего в разработке баз данных.

Вы должны понимать эти нормальные формы.

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

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