Дизайн базы данных и верстка - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу вернуться к проекту, который я сделал, чтобы сохранить пользовательские данные в базе данных и улучшить способ их хранения. В настоящее время я прошел сложный путь и сохранил пользовательские данные в формате JSON в поле базы данных MySQL, что затрудняет выполнение действий CRUD. Я сделал это потому, что все данные пользователя были в поле пользователя. И был достаточно новым для этого.

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

Если бы у меня было 1000 пользователей с 500 строками данных для каждого, то это 500 000 строк для сортировки при чтении данных и отображении их на веб-странице. И есть ли риск смешивания данных или проблем с производительностью?

Я просто хочу иметь пользовательскую базу данных, в которой хранятся идентификатор, имя и учетные данные пользователя. Затем другая база данных, в которой будут храниться данные об активности пользователя (запуск). Таким образом, по крайней мере 5 полей для каждого события: время, местоположение, дата, продолжительность и т. Д. c. И это будет сохранено для различных событий (прогонов), которые могут закончиться в сотнях за определенный период времени.

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

1 Ответ

0 голосов
/ 27 апреля 2020

Учитывая предоставленную информацию, я считаю, что нижеприведенный дизайн может подойти.

  1. Создайте таблицу с именем User_Details со столбцами в виде идентификатора (автоинкремент), идентификатора пользователя, имени и учетных данных.
  2. Теперь создайте таблицу User_Activity с этими столбцами id, user_id, именем события, данными (поле json).

Объяснение: Таблица действий пользователя будет хранить данные о событиях для вас, связанных с каждым пользователем, через поле user_id в таблицу user_details. Данные, являющиеся полем json, помогут вам сохранить все поля для события. Поскольку вы используете поле json в БД, это позволит вам сбросить любое количество полей для события, которое может / не может быть структурировано. Затем вы можете отобразить это в своем среднем слое по мере необходимости.

Кроме того, если у вас конечное число событий, вы также можете создать таблицу с именем user_event_types и иметь идентификатор столбца, имя события, а затем в таблице user_activity вы можете ссылаться на идентификатор вместо имени события.

...