2013-05-10 6 views
1

У меня есть база данных MySQL, в которой одна таблица хранит данные пользователя, а в другой таблице хранится что-то, называемое «тегами» для каждого пользователя. Структура что-то вроде этого:Структура MySQL для большого количества полей

Таблица 1: user_info

id | col1 | col2 | .... 

Таблица 2: теги

id | user_id | tag 

приблизительное количество пользователей составит около 25 тысяч, и с практической точки зрения каждый пользователь будет иметь 50 тегов, но теоретически пользователь может создавать бесконечные теги. Каждый пользователь может получить доступ только к тэгам, которые он создал, поэтому я спрятал его с user_id в таблице 2.

Итак, мой вопрос в том, что у меня хорошая структура, или есть лучший способ сделать это? (Дайте мне знать, если это не подходящее место, потому что это не вопрос прямого кода.)

+2

Я предпочту нынешний дизайн, так как вы упомянули, что пользователь может иметь бесконечные теги. –

ответ

3

Вы также можете создать таблицу тегов и таблицу отношений, чтобы связать таблицу пользователей с таблицей тегов. У вас было бы много отношений между пользователями и тегами через таблицу отношений.

Тег таблицы: идентификатор, имя и т.д. таблица пользователей: идентификатор, имя и т.д. таблица отношения: user_id, tag_id с внешними ключами, привязанных к tag.id и user.id, и рк на tag.id и user.id.

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

В зависимости от того, что вы используете для приложения, вы можете, как правило, выполнять четкие отношения между моделями - сценарий с множеством сквозняков в активной записи или что-то подобное, и сделать вещи очень легкими для себя.

+0

Спасибо, я рассмотрю более подробную информацию о таблицах отношений. – rgamber

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