vp7
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Предлагаю на общее обозрение результаты моей разработки структур таблиц для создания форума Прошу учесть, что время, потраченное на эту разработку было немногим больше времени, необходимого для набора всего этого дела на очень неудобной ноутбучной клавиатуре, поэтому за некоторые глюки прошу не сильно меня ругать Ну и естественно, очень жду комментариев и предложений по улучшению. p.s. благодарю товарища zapimir за его вариант разработки таблиц. Код: =============================================== Структура форума =============================================== 1. Список таблиц ---------------- UGroups - Группы пользователей Users - Пользователи FGroups - Группы форумов Forums - Форумы Topics - Темы в форумах Messages - Сообщения в форумах LockIP - Блокировка IP адресов LockLogin - Блокировка логинов News - Новости Mail - Почта LockWords - Нежелательные выражения 2. Приблизительная структура таблиц ----------------------------------- ======[ UGroups ]====== * Группы пользователей - каждый пользователь может принадлежать сразу к нескольким группам. Группы используются для облегчения установки прав доступа для различных пользователей. Id - Код группы Name - Наименование группы GroupAdmin - Логин пользователя, который имеет право на добавление других пользоватей в свою группу AccessLevel - Уровень доступа для пользователей группы Может принимать значения: Guest - гость User - простой пользователь Power User - "продвинутый" пользователь Message Admin - позволяет выполнять модеративные функции во всех форумах Admin - администратор системы Users - Список пользователей, принадлежащих этой группе ======[ Users ]====== * Пользователи - описывает пользователей, которые могут выполнять какие-либо действия в системе. Id - Код пользователя Login - Логин пользователя Password - Пароль Nick - Ник - позволяет менять время от времени отображаемое имя при размещении сообщений Name - ФИО KeyQuestion - Вопрос, ответив на который можно восстановить утраченный пароль KeyAnswer - Ответ на вопрос при утрате пароля Group - Группа, к которой принадлежит пользователь. Эта группа основная, но пользователя можно отнести и к другим группам Email - Адрес Email пользователя ICQ - Номер ICQ пользователя LockStatus - Признак блокировки пользователя. Может принимать значения: LockWrite - блокировка написания писем Lock - блокировка доступа LockDate - Дата блокировки пользователя (если заблокирован) LockerId - Код администратора, заблокировавшего пользователя (если заблокирован) Avatar - Имя картинки, содержащей аватару пользователя CookieKey - Cookie, выдаваемая при заходе в форум LastLogged - Дата/время предыдущего входа в систему CurrentLogged - Дата/время текущего входа в систему LoggedOut - Дата/время последнего выхода из системы ======[ FGroups ]====== * Группы форумов - описывает группу форумов. Предназначен для распределения административных прав между пользователями Для каждой группы форумов автоматически создается группа пользователей: _FG_<код группы форумов>_List - предназначена для того, чтобы можно было установить список пользователей, которым разрешен доступ в выбранную группу форумов Id - Код группы Name - Наименование группы ListGroups - Список групп пользователей, которым позволен просмотр списка форумов DefReadGroups - Список групп пользователей, которым по умлочанию будет разрешен доступ для чтения в форумы, создаваемые в этой группе DefWriteGroups- Список групп пользователей, которым по умлочанию будет разрешен доступ для чтения/записи в форумы, создаваемые в этой группе DefModerGroups- Список групп пользователей, которые будут по умолчанию иметь право на выполнение модеративных функций DefUserModer - Позволяет по умолчанию установить модератором не группу пользователей, а одиночного пользователя (или список пользователей ======[ Forums ]====== * Список форумов - предназначена для описания форумов. Для каждого форума автоматически создается 3 группы пользователей: _FF_<код форума>_Moder - для задания списка модераторов _FF_<код форума>_Read - для задания списка пользователей, которым разрешено чтение сообщений _FF_<код форума>_DenyWrite - список пользователей, которым _запрещено_ писать в форуме _FF_<код форума>_Write - список пользователей, которым разрешено писать в форуме Id - Код форума Name - название форума ReadGroups - группы пользователей, которым разрешено читать сообщения из форума DenyWriteGroups - группы пользователей, которым _запрещено_ писать сообщения в форум WriteGroups - группы пользователей, которым разрешено писать сообщения в форум ModerGroups - группы пользователей, которым разрешено использование модеративных функций UserModer - список пользователей, которым разрешено использование модеративных функций NotifyUsers - список пользователей, которым будет сообщаться о добавлении сообщений в форум ======[ Topics ]====== * Темы форумов - содержит темы форумов Id - Код темы FId - Код форума Name - Название темы AuthorId - Код автора темы Status - Статус темы. Может принимать значения Empty - пустой. не содержит ответов пользователей Normal - нормальное состояние Closed - закрыт ======[ Messages ]====== * Сообщения - содержит сообщения, размещенны в форумах Id - Код сообщения FId - Код форума (в котором размещено это сообщение) TId - Код темы (в которой размещено это сообщение) AuthorId - Код автора сообщения Avatar - Имя картинки, содержащей аватару пользователя Text - Содержание сообщения PostedDate - Дата/время размещения сообщения ModerStatus - Статус сообщения в системе модерирования. может принимать следующие значения: normal - нормальное сообщение warn - предупреждение от модератора hidden - спрятано от простых пользователей (кроме модераторов) ======[ LockIP ]====== * Блокировка IP адресов - позволяет заблокировать доступ к системе с опеределенных IP адресов Id - Код строки IP - IP адрес нарушителя Reason - Необязательное поле с объяснением причины блокировки BlockerId - Код админстратора, заблокировавшего IP адрес, либо 0, если блокировка была произведена автоматически ======[ LockLogin ]====== * Блокировка логинов - позволяет заблокировать регистрацию пользователей с определенными логинами. Используется для того, чтобы не бы попыток регистрации с именами типа ForumAdmin, root, SysAdmin и других нежелательных имен Id - Код строки Name - Запрещаемый логин. Символ '*' используется в качестве маски, т.е. '*admin' - запрещает регистрацию всех логинов, заканчивающихся на 'admin' ======[ News ]====== * Новости - содержит новости, которые смогут читать пользователи Id - Код строки FId - Код форума. Если значение отлично от нуля, то новость является новостью форума и их может размещать любой админ форума. Если значение равно 0, то новость является новостью системы, и ее может размещать любой админ системы Text - Содержание новости PostedDate - Дата размещения новости ======[ News ]====== * Почта - содержит личные сообщения для пользователей Id - Код письма AuthorId - Код автора DestId - Код того, кому предназначено письмо Subject - Тема письма Text - Содержание PostedDate - Дата размещения New - Флаг указывающий, является ли это письмо новым для пользователя ======[ LockWords ]====== * Нежелательные выражения - содержит список нежелательных выражений и то, что необходимо с ними делать Id - Код строки Value - "Текст" нежелательного выражения Change - На что менять это выражение (в случае, если действие определено как замена) Action - Действие с письмом, содержащим вышеуказанное нежелательное выражение. Принимает следующие значения: Nothing - не делать ничего Change - заменить на то, что указано в переменной change Block - заблокировать размещение сообщения с этим выражением Notify - Сообщать ли модераторам о таком сообщении ModerStatus - Установить у данного сообщения следующий статус модерирования: normal - нормальное сообщение warn - предупреждение от модератора hidden - спрятано от простых пользователей (кроме модераторов) | Добавлено Да, забыл сказать - тут пока не учитывается возможно потребующаяся избыточность для более быстрой работы с базой, т.к., думаю, надо будет просто оценить результаты, и если при правильно созданных индексах, но отсутствующих итоговых полях скорость увеличится на 15-20 %, то это (imho) не так страшно... p.s. Ну и про размерность полей я пока промолчал - тоже жду предложений. Есс-но поля типа текста сообщения и некоторые другие будут иметь тип text, а вот требуемую размерность остальных надо будет выявлять на основе данных из уже существующих форумов. |