База данных форума

Автор работы: Пользователь скрыл имя, 24 Марта 2013 в 22:53, курсовая работа

Краткое описание

Целью данной работы являлось проектирование примера такой базы. Т.е она должна хранить в себе всю необходимую информацию о пользователях: имя, фамилию, адрес, почтовый адрес, количество сообщений и их содержание, а также информацию о друзьях пользователя и его нарушениях.

Содержание работы

1. Введение. 3
2. Описание предметной области 4
2.1 Краткая информация о форуме 4
Таблица объектов 4
2.2 Описание справочников 5
3. Проектирование базы данных 5
3.1 Приведение к первой нормальной форме 7
3.2 Приведение ко второй нормальной форме 7
3.3 Приведение к третьей нормальной форме (если есть необходимость – и к BCNF) 8
4. Разработка приложения 10
4.1 Описание Таблиц, Полей, условий ввода. 10
4.2 Разработка экранов 11
4.3 Разработка запросов. 14
4.4 Отчеты 16
Заключение 17
Список литературы 18
Приложение 1 19

Содержимое работы - 1 файл

Отчет.doc

— 848.50 Кб (Скачать файл)

ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ 
Пермский филиал 
федерального государственного автономного образовательного

учреждения  высшего профессионального образования 
«Национальный исследовательский университет  
“Высшая школа экономики”»

Факультет бизнес-информатики

Кафедра информационных технологий в бизнесе

 

 

УДК 004.65

 

ТЕМА РАБОТЫ

“База данных форума”

 

Работу выполнил студент  
группы БИ- 10-1  
2 курса факультета бизнес-информатики

Архипов К.Б.

 

 

 

 

Научный руководитель:

доцент кафедры информационных технологий в бизнесе

Шестакова  Л.В.

 

Пермь 2012

Оглавление

 

 

 

 

 

 

1. Введение

 

Веб-форум — класс приложений  для организации общения посетителей  сайта. Форум предлагает набор разделов для обсуждения. Работа форума заключается в создании пользователями тем в разделах и последующим обсуждением внутри этих тем. Отдельно взятая тема, по сути, представляет собой тематическую гостевую книгу .Распространённая иерархия форума: Разделы → темы → сообщения. Обычно сообщения несут информацию «автор — тема — содержание — дата/время». Сообщение и все ответы на него образует «ветку» или «тему» (также употребляются кальки «топик», «топ» от англ. topic; «тред», «трэд» от англ. thread).

На сегодняшний день практически  каждый сайт предоставляет своим  посетителям возможность обсудить то, что он им предоставляет. Однако этот процесс требует управления, что бы пользователи держались установленных  рамок. Для этого существуют «  модераторы» - люди, следящие за соблюдением правил форума.  Они имеют права выдавать наказания и штрафы пользователям, которые того заслуживают. Ввиду того, что выдача наказания зачастую требует разбирательства, существуют база данных форума. В этой базе указывается вся информация о пользователях. На самом деле эта база имеет более широкий спектр назначений.  Пользователи тоже могут обращаться к некоторым её частям, например, просматривать друзей и некоторую информацию о собеседнике.

Целью данной работы являлось проектирование  примера такой базы. Т.е она должна хранить в себе всю необходимую информацию о пользователях: имя, фамилию, адрес, почтовый адрес, количество сообщений и их содержание, а также информацию о друзьях пользователя и его нарушениях.

 

 2. Описание предметной области

  • 2.1 Краткая информация о форуме

  • Данная БД нацелена предоставление информации  о пользователях форума со свободной тематикой. Использоваться может для просмотра всех действий пользователя на форуме, с того момента, как он зарегистрировался. Помимо просмотра можно добавлять пользователей.  Этот процесс должен происходить  автоматически, основываясь на действиях форумчан, однако, так на самом деле этого форума не существует, это действие носит лишь наглядный характер.

     

    В данной базе присутствуют основные элементы среды форумов: пользователи, темы, сообщения, нарушения и другие. Полный список представлен в таблице объектов

  • Таблица объектов

  • Объект

    Описание

    1

    Пользователь

    Так как форумы предназначены для общения людей, «пользователь» является ключевым объектом базы.

    Имеет связь  практически со всеми остальными объектами Таблица «пользователь» содержит профильную информацию о участнике форума, начиная от ФИО, кончая текущем статусом.

    2

    Друзья пользователя

    Объект «Друг» обозначает близкую связь с «пользователем», настоящих форумах дает некоторые дополнительные привилегии, например, личная переписка и расширенные права просмотра профиля.

    3

    Нарушения пользователя

    Иногда пользователи отклоняются от установленных администратором  правил, поэтому существует система наказаний. Данный объект существует для того, что бы администратор знал прошлое «пользователя», а так же время и дату окончания наказании или вступления оного в силу.

    4

    Сессии пользователя

    Дополнительная  информация о пользователе. Позволяет просматривать историю онлайна. Это пригождается при взломах и других подобных разбирательствах.

    5

    Темы

    «Темы» создают  для того, что бы обсудить какую-то конкретную тему или новость или  что бы то  ни было, внутри специально подготовленного виртуального пространства.

    6

    Сообщения

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


     

  • 2.2 Описание справочников

  • Необходимые справочники:

      1. Страны: нужны для предоставления информации о странах, в которых живут пользователи.
      2. Статусы: нужны для предоставления информации о текущем статусе пользователя.

    3. Проектирование базы данных

    В базу данных должны быть включены следующие разделы:

      • информация о пользователе
      • информация о темах форума
      • информация о сообщениях форума
      • информация о нарушениях
      • информация об истории сессий
      • информация о друзьях пользователей

    В базе данных будут следующие атрибуты:

      • информация о пользователе
        • «ID» – уникальный ключ , однозначно идентифицирует соответствующий ему объект.
        • «ФИО», «Nickname» –  атрибуты определяющие личность пользователя в реальной жизни и на форуме.
        • «Адрес», «e-mail» - контактная информация.
        • «Пароль» -  личные данные, с помощью которых пользователь авторизируется на форуме.
        • «Страна», «Статус», «Дата регистрации» - характеристики пользователя. 
      • информация о темах форума
        • «ID» - уникальный ключ , однозначно идентифицирует соответствующий ему объект.
        • «Название» - название темы
        • «автор» - автор, создавший тему.
        • «Количество ответов», « Время», «Открыта\закрыта» - характеристики темы.
      • информация о сообщениях форума
        • «ID» - уникальный ключ, однозначно идентифицирует соответствующий ему объект.
        • «Автор» -  автор сообщения.
        • «Тема» - тема, в которой находится данное сообщение.
        • «Содержание» - текстовое поле, содержащее текст сообщения.
        • «Время» - время написания сообщения.
      • информация о нарушениях
        • «Пользователь» - Пользователь, совершивший нарушения.
        • «Тема» - тема, в которой совершено нарушение.
        • «Описание нарушения» -  краткое объяснение выдачи наказания.
        • «Содержание» - текстовое поле, содержащее текст сообщения.
        • «Время нарушения», « Окончание нарушения» - сроки действия наказания.
      • информация об истории сессий
        • «Код пользователя» - уникальный ключ , однозначно идентифицирует соответствующий ему объект.
        • «Время начала», «Время окончания» - характеризуют продолжительности сессий.
      • информация о друзьях пользователей
        • «Человек» - поле, содержащее уникальный ключ, однозначно идентифицирующий соответствующий ему объект.
        • «Друг» - nickname  пользователя являющего другом пользователю, идентифицируемому при помощи кода, находящимся в поле человек.

     

    • 3.1 Приведение к первой нормальной форме

    Рис 1

    Сведем данные в таблицу, ввиду  большого количества полей, она визуально  разбита на несколько таблиц. По той же причине возьмем для  примера только 1 строчку и покажем различные варианты.

    Для приведения отношения к первой нормальной форме  надо добиться того, чтобы на пересечении строк и столбцов было только одно значение, то есть требуется исключить группы значений на пересечении строк и столбцов. Воспользуемся способом исключения повторяющихся групп: заполним пустые ячейки таблицы дубликатами соответствующей информации о повторяющихся группах и определим первичный ключ полученного отношения.

    • 3.2 Приведение ко второй нормальной форме

    Атрибуты, представляющие собой различные  названия и наименования, имеют тип  данных "строка" и, следовательно, их использование в качестве ключа неудобно, поэтому будут использоваться с целью однозначной идентификации соответствующих им объектов искусственные ключи типа «Код » и т.д.

    Будем считать, что:

    • «Код пользователя» будет однозначно определять все характеристики фирмы, такие как «ФИО», «Страна», «Nickname», «пароль», «e-mail», «дата регистрации», «адрес» и « статус» одного конкретного пользователя.
    • «Код  Темы» будет однозначно определять данные о теме, такие как «название», «количество ответов», «открыта/закрыта», «время» и « автор»
    • «Код сообщения» будет однозначно определять данные о сообщении, такие как « содержание», «тема», «время написания», «автор»

    Как следует из анализа приведенных  выше данных и установленных функциональных зависимостей, для того чтобы «попасть» в одну строку универсального отношения, необходимо задать значения минимум для следующих атрибутов, которые и представляют собой первичный ключ отношения: «Код Пользователя», «Код Сообщения», «Код темы».

    Предположим следующие  связи:

    Сообщений и  тем на форуме много, но каждое отдельное сообщение или тема е имеют единственного своего носителя, поэтому связь будет 1:N. Один у кода пользователя, много у поля и именем автора в других таблицах.

    Каждое сообщение  принадлежит какой-либо теме. Также  наказание совершается в одной из тем форума. Связь будет 1:N. Один у кода темы, много у полей с кодом темы в других таблицах.

    3.3 Приведение к третьей нормальной форме 
    (если есть необходимость – и к BCNF)

    После приведения ко второй нормальной форме, осталась последняя проблема – избавиться от единственной транзитивной функциональной  зависимости. Таб.2 

    В отношении существуют следующие функциональные зависимости: Нарушения→ Тема, Тема → Сообщение, Нарушение → Сообщение.

    Зависимость Нарушение → Сообщение является транзитивной, следовательно, отношение не находится в 3NF.

    Поэтому данная таблица разбивается 2 таблицы. Нарушения: Тема и Тема: Сообщения.

     

    Рис 2

     

    Таким образом мы имеем окончательный вид схемы:

    Рис 3

    4. Разработка приложения

    4.1 Описание Таблиц, Полей, условий ввода.

    • Таблица Пользователь:
        • ID– ключевое поле, счетчик
        • ФИО – тип string
        • Страна – тип Коллекция страна, ссылается на справочник стран. Не обязательное поле.
        • Nickname – тип string.
        • Пароль –  тип string.
        • E-mail – тип string.
        • Дата регистрации – тип date.
        • Адрес – тип string, не обязателен.
        • Статус – ссылается на справочник. Необязателен.
    • Таблица Темы:
        • ID – ключевое поле, счетчик.
        • Название – тип string.
        • Автор – поле для связи с таблицей пользователь, тип Коллекция пользователь.
        • Количество ответов – тип integer.
        • Открыта/закрыта – тип string.
        • Время – тип date.
    • Таблица Сообщения
        • ID – ключевое поле, счетчик.
        • Тема – поле для связи с темой, тип Коллекция тема.
        • Автор – поле для связи с пользователем, тип Коллекция пользователь.
        • Время – дата/время.
        • Содержание – т.к.  содержит текст сообщения целиком, может иметь весьма большие размеры, тип поля string.
    • Таблица Нарушения
        • Тема – поле для связи с темой, тип Коллекция тема.
        • Автор – поле для связи с пользователем, тип Коллекция пользователь.
        • Время нарушения – тип date.
        • Окончание наказания – тип date.
        • Описания нарушения  - текстовой.

    Информация о работе База данных форума