Как хранить несколько идентификаторов в одном ряду? - PullRequest
0 голосов
/ 29 марта 2019

Я создаю приложение заметок с облачной синхронизацией. Облако является сервером MySQL. Существует пользовательская таблица с именами, паролями и идентификаторами, а также база данных заметок с id, заметкой, метками, creator_id и shared_id. Идентификатор из пользовательской таблицы совпадает с идентификатором creator_id, а проблема с shared_id.

Пользователи должны иметь возможность делиться заметками с несколькими другими пользователями. Например, пользователь 1 может поделиться своей заметкой с пользователем 2 и пользователем 3, но я не могу понять, как хранить несколько идентификаторов в строке shared_id.

_________   ______
user        note
_________   ______
id    ----- creator_id
name        shared_id   <--(array of user id's)
password    note
            labels
            id

Я думаю о создании групповой таблицы с идентификатором группы и идентификатором пользователя (называемым user_id), но проблема все еще существует, в строке user_id будет более 1 идентификатора.

________
group
________
id       <--(id of the group, this would be used at the shared_id)
user_id  <--(array of user id's from user table) 

Заранее большое спасибо за помощь.

Пример базы данных:

user
id  name          password
0   "test user"   123456
1   "shared with" 123456
2   "another user"123456

note
creator_id   note                       labels        id   shared_id
0            "Something I will forget"  "home, shop"  0    1, 2

Creator_id - это идентификатор пользователя, который создал заметку, заметка, а метка - это заметка, id - это идентификатор заметки (не подключен к пользователям), а shared_id - это список пользователей, которые могут просматривать эту заметку.

Таблица групп будет выглядеть так:

group           note
id   user_id    shared_id
3    1, 2       3
|               |
-----------------

Идентификатор группы и примечание shared_id будут одинаковыми, идентификатор_пользователя будет идентификатором из таблицы пользователя.

1 Ответ

1 голос
/ 29 марта 2019

Как подсказывает @forpas в комментарии,

Один из лучших подходов - создать еще одну таблицу с именем "shared_notes" с двумя полями, т.е. user_id and notes_id.Где user_id - это идентификатор из пользовательской таблицы, которой делится заметка, а notes_id - это идентификатор заметки.

Затем вы можете сохранить несколько записей, например, если пользователь u0 делится примечанием n0 с u1 и u2, тогда таблица будет иметь вид,

shared_notes
------------
user_id      notes_id
u1           n0
u2           n0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...