Проектирование базы данных для пользовательских записей (с использованием mysql) - PullRequest
0 голосов
/ 14 марта 2011

Основными частями данных, которые вводят мои пользователи, является объект, называемый «активность», который состоит из нескольких текстовых полей, нескольких строк и т. Д. Одно из текстовых полей, называемое «Описание», может возможно, будет довольно длинным (например, длинный пост в блоге). Для каждого пользователя я хотел бы сохранить все свои объекты активности в базе данных mysql.

Вот несколько решений, о которых я подумал:

  • Иметь отдельную таблицу mysql для действий каждого пользователя, т.е. активность_пользователяX, X в диапазоне от

  • Используйте json для кодирования этих объектов в строки и сохранения их в виде столбца в основной таблице

  • Иметь одну отдельную таблицу для всех этих объектов деятельности и просто индексировать их; тогда для каждого пользователя в основной таблице есть список индексов, соответствующих тем, какие действия являются их.

Каковы плюсы / минусы этих методов? Что еще более важно, что еще я мог сделать?

Спасибо.

1 Ответ

1 голос
/ 14 марта 2011

Иметь отдельную таблицу mysql для действий каждого пользователя, то есть activity_userX, X в диапазоне от

Таблица для каждого пользователя? Это просто означает безумное количество столов.

Используйте json для кодирования этих объектов в строки и сохранения их в виде столбца в основной таблице

JSON - хороший транспортный язык. У вас есть база данных для хранения ваших данных, используйте ее возможности.

Иметь одну отдельную таблицу для всех этих объектов деятельности и просто индексировать их; тогда для каждого пользователя в основной таблице есть список индексов, соответствующих тем, какие действия у них.

Становится ближе.

Такого рода отношения обычно известны как «имеет много». В этом случае «У пользователя много действий».

У вас должна быть таблица пользователей и таблица действий.

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

Тогда вы сможете сделать:

SELECT fields, i, want from activities WHERE userid=?

Или

SELECT users.foo, users.bar, activities.description from users,activities 
    WHERE user.userid=activities.userid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...