Социальная сеть - уровни конфиденциальности - схема базы данных - PullRequest
0 голосов
/ 15 ноября 2010

Я создаю профили пользователей и у меня есть несколько вопросов, касающихся схемы уровней конфиденциальности:

Для деталей профиля -> Есть несколько полей, таких как на фейсбуке - день рождения, пол, местоположение, интересы, отношения, полное имя пользователя и т. Д. С точки зрения базы данных - Как это сделать? Я использую MySQL, так что во-первых, могут ли уровни конфиденциальности хорошо работать в MySQL или мне нужна нереляционная БД? Затем, чтобы назначить конфиденциальность на уровне поля, это так:

Таблица объектов -> Поле профиля 1, поле профиля 2, .....
Таблица поиска конфиденциальности -> Друзья = 1, Друг друга = 2, Все = 3, Заблокированный список = 4, ...
Таблица объектов пользователя -> Поле профиля 1 имеет поиск конфиденциальности 1 (что означает, что поле 2 установлено только для друзей)?

Вышеприведенное работает хорошо для фиксированного уровня конфиденциальности списка, но если у нас есть, например, уровни конфиденциальности не из списка: я хочу заблокировать пользователя X, Y & Z и разрешить только пользователю с именем A видеть его, фиксированных уровней нет для этого, так как представить это на уровне схемы?

Это уровень поля, но конфиденциальность даже на более высоком уровне объектов, таких как отдельные фотографии, отдельные видео и т. Д. Итак, какие-либо общие рекомендации по использованию БД / базовой схемы, которые помогут мне, как спроектировать это?

Спасибо.

1 Ответ

0 голосов
/ 15 ноября 2010

Что вы можете сделать, это реализовать моделирование отношений сущностей, которое позволит вам неограниченный список конфиденциальности.

Вы можете иметь такие таблицы:

Privacy
id    varchar(36)
label text()

IsPrivacyActivated
privacyid      varchar(36)
isActivated    boolean

UserPrivacy
userid   varchar(36)
privacyid varchar(36)

Таким образом, вы можете легко реализовать все функции, которые вы указали выше.

Надеюсь, я смогу помочь,

...