2012-04-17 2 views
1

Я занимаюсь разработкой крошечной социальной сети, где пользователи должны иметь возможность устанавливать отношения между ними, а также иметь разрешения на содержимое. Например: я добавляю одного пользователя в качестве моего друга, но этот пользователь не позволяет мне видеть все его/ее содержимое, поэтому я имею доступ только к тем содержимым, которые пользователь разрешает мне (разрешениям). Поэтому у меня есть проблема и вам нужна помощь в разработке DER этой части. Я думаю, что в есть эти таблицы:Людские отношения между пользователями

- users (id, name) 
- relations_type (id, name, active) 
- users_relations (id, id_user_1, id_user_2) 
- users_permissions (id, id_relation, id_module, id_user, view, edit, delete) 

Это вызывает следующее:

  • Две строки для всех отношениях: User 1> пользователя 2 и пользователя 2> User 1, так как при поиске (SELECT) Я нужно знать, какие друзья пользователя 1, а также друзья User2. Если я оставляю только одно отношение, то мне нужен СОЮЗ, и этот миг мой медленный мой DB

Это правильно? Как вы справляетесь с этим, когда CRUD на этом? Я использую MySQL кстати и таблицы MyISAM.

ответ

0

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

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