Предположим, что я хотел бы хранить голоса для опросов в базе данных mysql.Как хранить конкретные (опросы, например) данные в базе данных MySQL?
Насколько я знаю, у меня есть два варианта:
. Создание одной таблицы (скажем голосов) с полями, как poll_id, user_id, selected_option_id, vote_date и так далее ..
. Создайте новую базу данных для голосов (допустим, votes_base), и для каждого опроса добавьте таблицу к этой базе (таблица, состоящая из идентификатора опроса в названии), скажем poll [id of the poll] ,
Проблема с первой опцией заключается в том, что стол скоро станет большой. Скажем, у меня 1000 опросов, и у каждого опроса 1000 голосов - это уже миллион записей в таблице. Я не знаю, какая скорость будет стоить.
Проблема с второй вариант Я не уверен, что это правильное решение с точки зрения правил программирования. Но я уверен, что с этим вариантом будет (намного?) Быстрее найти все голоса для какого-то опроса.
Или, может быть, есть лучший вариант?
Но что, если у меня есть, например. миллиарда (или даже больше) голосов? Разве не намного быстрее просто выбрать каждую строку таблицы с x строк вместо поиска 1 миллиарда строк для этих x строк? Честно говоря, я не вижу веских оснований не использовать второй вариант. Какие проблемы могут возникнуть? – Jack
Хороший вопрос. Я отредактировал свой ответ. Я изменю вопрос: почему бы не использовать хороший и чистый первый вариант? Для InnoDB нет проблем с большими столами. – Konerak