Насчёт привязки многие ко многим (БД типа Objects<->Users)

maaboo

Новичок
Насчёт привязки многие ко многим (БД типа Objects<->Users)

Доброго времени суток.

Давно не занимался БД, а тут приспичило. И натолкнулся на такую проблему (для меня).

Имеется некоторое количество неких объектов, ну назовём его Box (один объект, а не список).
Имеется некоторое количество субъектов, назовём его User (опять же одного).

Box может содержать список User (скажем до 5.000), где User имеет определённые Rights и Status (оба - таблицы с некоторым списком значений). В процессе развития, разумеется Rights и Status будут пополнятся новыми значениями.

И User может содержать несколько Box (по крайней мере так выглядит это всё для самого User), на которые у него есть Rights и Status (скажем какие-нибудь подписки, баны, права редактирования и прочее).

Каким образом организовать таблицы (я выбираю MySQL, да), чтобы правильно рулить пользователями и коробками?

Моё предположение, после некоторого поиска было такое:

TABLE:Boxes
---
Box_ID KEY
Box_Name...
...

TABLE:Users
---
User_ID KEY
User_Name
...

TABLE:States
---
State_ID KEY
State_Name
...

TABLE:UserState
---
Box_ID KEY
User_ID KEY
State_ID KEY
State_Value DATA

Так ли это? И насколько это будет напряжно для PHP лопатить такие таблицы, если скажем большое количество Rights и Status будет меняться с большой частотой (для 1 пользователя частота примерно 50 раз за день, всего предполагается 1000-5000 пользователей). Как это посчитать? (Ибо сам скрипт, подозреваю уже будет очень тяжёл для процессора).

Есть ещё проблема в том, что пользователи должны иметь такие хитрые статусы, которые позволят им передавать другим пользователям статусы и права, но это возможно не влияет на конечный ответ и рулится исключительно добавлением новых столбцов в БД.

Спасибо!
 
Сверху