43489

Информационно-поисковая система веб-форума

Курсовая

Информатика, кибернетика и программирование

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

Русский

2013-11-05

402 KB

1 чел.

Московский государственный институт электроники и математики

(технический университет)

Кафедра электронно-вычислительной аппаратуры




Курсовая работа:

«Информационно-поисковая система
веб-форума»

По дисциплине «Базы Данных»







Выполнили студенты гр. С-55:
Фролов Ю.С.

Чиркунов П.А.

Преподаватель:

д.т.н. профессор Зарудный Д.И.


Москва – 2005


АННОНАЦИЯ

В данной курсовой работе решалась задача проектирования и разработки информационно-поисковой системы веб-форума.

В качестве программного приложения использовалась система управления реляционными базами данных «MySQL».


Оглавление

[1]
АННОНАЦИЯ

[2]
1. Техническое ЗАДАНИЕ

[3]
2. ВВЕДЕНИЕ

[3.1] 2.1 ОБЩИЕ СВЕДЕНИЯ о СУБД «MySQL»

[3.2] 2.2. Основные достоинства MySQL

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

[4.1] 3.1 Предметная область.

[4.2] 3.2 Инфологическая модель.

[4.3] 3.3 Датологическая модель.

[5]
4. Программная реализация

[5.1] 4.1 СОЗДАНИЕ БАЗЫ ДАННЫХ

[5.2] 4.2 СОЗДАНИЕ ТАБЛИЦ

[5.3] 4.3 Первоначальное заполнение таблиц

[5.4] 4.4. Выборка данных из таблицы

[5.4.1] Запрос 1. Вывод темы форума – «Итоги лабораторной работы…»

[5.4.2] Запрос 2. Вывод темы форума – «КГ Темы»

[5.4.3] Запрос 3. Вложения.

[5.5] 4.5 Добавление новых данных в таблицы

[5.5.1] Запрос 4. Добавление нового сообщения в форум.

[6]
5. ЗАКЛЮЧЕНИЕ.

[7]
6. Список используемой литературы:


1. Техническое ЗАДАНИЕ

Реализовать информационно-поисковую систему веб-форума на основе базы данных. Спроектировать базу данных и реализовать ее в СУБД «MySQL». Под проектированием понимается: описание предметной области, получение инфологической и датологической модели.


2. ВВЕДЕНИЕ

2.1 ОБЩИЕ СВЕДЕНИЯ о СУБД «MySQL»

MySQL - это система управления базами данных.

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

MySQL - это система управления реляционными базами данных.

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

Программное обеспечение MySQL - это ПО с открытым кодом.

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

2.2. Основные достоинства MySQL

Перечислим  основные достоинства пакета MySQL:

Внутренние характеристики и переносимость:

  •  Написан на C и C++. Протестирован на множестве различных компиляторов.
  •  Работает на различных платформах. See section 2.2.5 Операционные системы, поддерживаемые MySQL.
  •  Для обеспечения переносимости используется GNU Automake, Autoconf и Libtool.
  •  API для C, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl. See section 8 Интерфейсы для MySQL.
  •  Полностью многопоточный с использованием потоков ядра. Это означает, что, если такая возможность обеспечивается, можно легко организовать работу с несколькими процессорами.
  •  Очень быстрые дисковые таблицы на основе В-деревьев со сжатием индексов.
  •  Очень быстрая базирующаяся на потоках система распределения памяти.
  •  Очень быстрые соединения, использующие оптимизированный метод однопроходного мультисоединения (one-sweep multi-join).
  •  Хеш-таблицы в памяти, используемые как временные таблицы.
  •  SQL-функции реализованы при помощи хорошо оптимизированной библиотеки классов, поэтому они выполняются настолько быстро, насколько это возможно. Обычно после инициализации запроса распределения памяти не происходит вообще.
  •  MySQL- код протестирован с использованием Purify (коммерческий детектор утечки памяти), а также Valgrind, одного из GPL-инструментов

Типы столбцов: 

  •  Большое количество: целочисленные со знаком/беззнаковые, длиной в 1, 2, 3, 4 и 8 байтов, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET и ENUM. See section 6.2 Типы данных столбцов.
  •  С записями фиксированной и переменной длины.
  •  Все столбцы имеют значения по умолчанию. С помощью INSERT можно вставить подмножество столбцов таблицы; столбцы, для которых явно не заданы значения, устанавливаются в значения по умолчанию.
  •  Команды и функции
  •  Полная поддержка операторов и функций в SELECT- и WHERE- частях запросов. Например:

mysql> SELECT CONCAT(first_name, " ", last_name)

  •  FROM tbl_name
    •  WHERE income/dependents > 10000 AND age > 30;

  •  Полная поддержка для операторов SQL GROUP BY и ORDER BY с выражениями SQL. Поддержка групповых функций (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX() и MIN()).
  •  Поддержка LEFT OUTER JOIN и RIGHT OUTER JOIN с синтаксисом ANSI SQL и ODBC.
  •  Разрешены псевдонимы для таблиц и столбцов в соответствии со стандартом SQL92.
  •  DELETE, INSERT, REPLACE, and UPDATE возвращают число строк, которые были изменены. Вместо этого можно задать возвращение совпавших строк. Для этого следует установить флаг при соединении с сервером.
  •  Команду SHOW, которая является специфической для MySQL, можно использовать для получения информации о базах данных, таблицах и индексах. Чтобы выяснить, как оптимизатор выполняет запрос, можно применять команду EXPLAIN.
  •  Имена функций не конфликтуют с именами таблиц и столбцов. Например, ABS является корректным именем столбца. Для вызова функции существует только одно ограничение: между именем функции и следующей за ним открывающей скобкой `(' не должно быть пробелов. See section 6.1.6 ``Придирчив'' ли MySQL к зарезервированным словам?.
  •  В одном и том же запросе могут указываться таблицы из различных баз данных (с версии 3.22).

Безопасность:

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

Масштабируемость и ограничения

  •  Управляет очень большими базами данных. Компания MySQL AB. использует MySQL для работы с несколькими базами данных, которые содержат 50 миллионов записей, кроме того, нам известны пользователи, использующие MySQL для работы с 60000 таблицами, включающими около 5000000000 строк.
  •  Для каждой таблицы разрешается иметь до 32 индексов. Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов. Максимальная ширина индекса 500 бит (это значение может быть изменено при компиляции MySQL). Для индекса может использоваться префикс поля CHAR или VARCHAR.

Установка соединений

  •  Клиенты могут соединяться с MySQL, используя сокеты TCP/IP, сокеты Unix или именованные каналы (named pipes, под NT).
  •  Поддержка ODBC (Open-DataBase-Connectivity) для Win32 (с исходным кодом). Все функции ODBC 2.5 и многие другие. Например, для соединения с MySQL можно использовать MS Access. See section 8.3 Поддержка ODBC в MySQL.

Локализация

  •  Сервер может обеспечивать сообщения об ошибках для клиентов на различных языках. See section 4.6.2 Сообщения об ошибках на языках, отличных от английского.
  •  Полная поддержка нескольких различных кодировок, включая ISO-8859-1 (Latin1), немецкий, big5, ujis и многие другие. Например, скандинавские символы разрешены в именах таблиц и столбцов.
  •  Для хранения всех данных используется выбранный набор символов. Все сравнения для столбцов с нормальными строками проводятся с учетом регистра символов.
  •  Сортировка производится согласно выбранному алфавиту (по умолчанию используется шведский). Эту установку можно изменить при запуске сервера MySQL. Чтобы ознакомиться с примером очень грамотной сортировки, можно обратиться к коду сортировки для чешского языка. MySQL поддерживает много различных кодировок, которые можно задавать во время компиляции и в процессе работы.

Клиенты и инструментарий

  •  Включает myisamchk, очень быструю утилиту для проверки, оптимизации и восстановления таблиц. Все функциональные возможности myisamchk также доступны через SQL-интерфейс. See section 4 Администрирование баз данных.
  •  Все MySQL-программы можно запускать с опциями --help или -? для получения помощи.


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

Ниже приведены основные этапы проектирования базы данных:

1. Определение цели создания базы данных.

2. Определение таблиц, которые должна содержать база данных.

3. Определение необходимых в таблице полей.

4. Задание индивидуального значения каждому полю.

5. Определение связей между таблицами.

3.1 Предметная область. 

Форум. На форуме можно оставлять как общие сообщения, доступные всем пользователям, так и личные сообщения для конкретного пользователя. Сообщения могут вложенные файлы.

3.2 Инфологическая модель.

3.3 Датологическая модель.

Пользователь (№ п, ник, пароль, дата регистрации, e-mail, количество сообщений, группа, рейтинг, аватар).

Сообщение (№ с, раздел, подраздел, тема, индекс сообщения, автор, дата, заголовок, текст, тип сообщения, имя получателя, № п).

Вложение (№ в, тип вложения, имя файла, адрес вложения, № с).


4. Программная реализация

4.1 СОЗДАНИЕ БАЗЫ ДАННЫХ

Для начала необходимо создать и подключить базу данных forum.

mysql> create database forum; use forum;

Теперь, создав и подключившись к базе данных, можно начать с ней работать.

4.2 СОЗДАНИЕ ТАБЛИЦ

Теперь создаем таблицы в которых будем информацию о всем веб-форуме:

mysql> create table users

(userID integer, nickname char(20), password char(10), regdate date, mail char(40), message integer, groups enum("admin","moderator","user"), rating enum("newbie","usver","advuser","maniac","flooder"))

Дав команду mysql> describe usersполучим информацию о созданной таблице:

Рисунок  Таблица – Пользователи

Таким же образом создаем оставшиеся таблицы.

mysql> create table messages

(messageID integer, chapter char(60), subChapter char(60), subject char(60), writer char(40), indeks integer, messagedate date, messageName char(60), texts char(255), mestype enum("privat","general"), recipient char(40), userID integer)

Рисунок  Сообщения

mysql>create table attach

(attachID integer, attachtype enum("archive","picture","textfile","executable"), filename char(60), addressattach char(100), messageID integer)

Рисунок  Вложения

4.3 Первоначальное заполнение таблиц

Теперь в созданные таблицы необходимо добавить данные:

mysql> insert into users values

(1, "Valentina.Babich", 23465, "2004-08-01", "Valentina.Babich@auditory.ru", 12, "user", "newbie", "C:\\avatar1"),

(2, "Agata.Bobyleva", 43565, "2004-08-01", "Agata.Bobyleva@auditory.ru", 31, "user", "newbie", "C:\\avatar2"),

(3, "Dmitry.Boldyrev", 86784, "2004-08-01", "Dmitry.Boldyrev@auditory.ru", 102, "admin", "usver", "C:\\avatar3"),

(4, "Vadim.Dobrynin",61864, "2004-08-01", "Vadim.Dobrynin@auditory.ru", 75, "user", "newbie", "C:\\avatar4"),

(5, "Yury.Gulyanov", 87324, "2004-08-01", "Yury.Gulyanov@auditory.ru", 23, "moderator", "newbie", "C:\\avatar5"),

(6, "Sergey.Zharkov", 43534, "2004-08-01", "Sergey.Zharkov@auditory.ru", 1102, "moderator", "flooder", "C:\\avatar6"),

(7, "Alexandr.Melnik", 80898, "2004-08-01", "Alexandr.Melnik@auditory.ru", 2, "user", "newbie", "C:\\avatar7"),

(8, "Vladislav.Matveev", 23054, "2004-08-01", "Vladislav.Matveev@auditory.ru", 201, "user", "usver", "C:\\avatar8"),

(9, "Maxim.Losev", 43590, "2004-08-01", "Maxim.Losev@auditory.ru", 89, "user", "newbie", "C:\\avatar9"),

(10, "Georgy.Spassky", 34901, "2004-08-01", "Georgy.Spassky@auditory.ru", 290, "user", "advuser", "C:\\avatar10"),

(11, "Evgeny.Serov", 10923, "2004-08-02", "Evgeny.Serov@auditory.ru", 560, "user", "maniac", "C:\\avatar11"),

(12, "Denis.Karachevtsev", 12354, "2004-08-02", "Denis.Karachevtsev@auditory.ru", 25, "user", "newbie", "C:\\avatar12"),

(13, "Anton.Tsaruk", 90472, "2004-08-02", "Anton.Tsaruk@auditory.ru", 120, "user", "usver", "C:\\avatar13"),

(14, "Anton.Cherepov", 56418, "2004-08-02", "Anton.Cherepov@auditory.ru", 4, "user", "newbie", "C:\\avatar14"),

(15, "Andrey.Ryazanov", 41385, "2004-08-02", "Andrey.Ryazanov@auditory.ru", 19, "user", "newbie", "C:\\avatar15"),

(16, "Yury.Frolov", 41741, "2004-08-02", "Yury.Frolov@auditory.ru", 180, "admin", "usver", "C:\\avatar16"),

(17, "Pavel.Chirkunov", 31096, "2004-08-02", "Pavel.Chirkunov@auditory.ru", 132, "admin", "usver", "C:\\avatar17"),

(18, "Vladimir.Shihanov", 43178, "2004-08-02", "Vladimir.Shihanov@auditory.ru", 790, "moderator", "flooder", "C:\\avatar18"),

(19, "Roman.Shamanin", 98470, "2004-08-02", "Roman.Shamanin@auditory.ru", 89, "user", "newbie", "C:\\avatar19"),

(20, "Maxim.Popov", 83657, "2004-08-02", "Maxim.Popov@auditory.ru", 27, "user", "newbie", "C:\\avatar20");

Можно посмотреть результат выполнения этого запроса:

Рис.2 Результат выполнения запроса 3

Также если используются клиенты «MySQL» c визуальной средой разработки, то данные в таблицы можно добавлять при помощи «Data» > «Insert»:

Рисунок  Добавление данных при помощи визуального редактора

Таким способом были добавлены данные в оставшиеся таблицы:

Рисунок  Добавление данных в таблицу «Сообщения»

Рисунок  Добавление данных в таблицу «Вложения»

4.4. Выборка данных из таблицы

Запросы необходимо создавать исходя из критериев выборки веб-форума.

Запрос 1. Вывод темы форума – «Итоги лабораторной работы…»

Вывести на экран тему в форуме «Итоги лабораторной работы №1 по КГ», вывести все сообщения, дату добавления каждого сообщения, авторов этих сообщений, а также группу и рейтинг пользователя добавившего сообщения. И сортировать сообщения по мере их поступления.

mysql>SELECT DISTINCT

messages.messagename, messages.writer, messages.messagedate, users.groups, users.rating, messages.texts, attach.filename

FROM messages, users, attach

WHERE messages.userID = users.userID

and messages.messagename like "Итоги%"

and attach.messageID = messages.messageID

ORDER BY messages.indeks

Вот как это будет выглядеть:

Рисунок  Вывод темы «Итоги лабораторной работы №1 по КГ»

Запрос 2. Вывод темы форума – «КГ Темы»

Вывести на экран тему в форуме «Итоги лабораторной работы №1 по КГ», вывести все сообщения, дату добавления каждого сообщения, авторов этих сообщений, а также группу и рейтинг пользователя добавившего сообщения. И сортировать сообщения по мере их поступления.

mysql>SELECT messages.messagename, messages.writer, messages.messagedate, users.groups, users.rating, messages.texts

FROM messages, users

WHERE messages.userID = users.userID

and messages.messagename like "КГ темы"

ORDER BY messages.indeks

Рисунок  Вывод темы «КГ Темы»

Запрос 3. Вложения.

Вывести прикрепленные к сообщениям вложения.

mysql>SELECT DISTINCT

messages.indeks, messages.messagename, attach.filename, attach.attachtype

FROM messages,  attach

WHERE attach.messageID = messages.messageID

ORDER BY messages.indeks

Рисунок  Прикрепленные к сообщениям файлы

4.5 Добавление новых данных в таблицы

База данных готова, осталось лишь добавить функцию добавления новых данных в форум.

Запрос 4. Добавление нового сообщения в форум.

mysql>  insert into messages values

(23, "Учеба", "3 курс", "КГ темы", "Valentina.Babich ", 6, "2004-08-01", "КГ темы", "Денис Александрович, можно ли мне взять тему по цветовым моделям", "general",NULL, 1)

Рисунок  Добавление новой записи в тему


5. ЗАКЛЮЧЕНИЕ.

В ходе выполнения работы были изучены все правила и основные аспекты проектирования баз данных.

Была разработана информационно-поисковая система веб-форума, реализованная в СУБД «MySQL», что позволит в дальнейшем помещать ее на серверы, или в любую программу на языке PHP, а также использовать в Internet.


6. Список используемой литературы:

  1.  Справочное руководство по MySQL, http://codebase.h11.ru/
  2.  «Understanding SQL», Martin Gruber, http://www.sql.ru/
  3.  А.Д. Хомоненко, В.М. Цыганков, М.Г. Мальцев. Базы данных: Учебник для высших учебных заведений. КОРОНА принт, Санкт-Петербург, 2004г.
  4.  Дюбуа Поль. MySQL/ Издательский дом Вильямс 2004г.
  5.  Грабер Мартин. SQL/ "Лори" Москва, 2003г.


 

А также другие работы, которые могут Вас заинтересовать

16344. Линейная фильтрация сигналов 137.18 KB
  Линейная фильтрация сигналов Методические указания к лабораторной работе Лабораторная работа по исследованию прохождения сигналов через линейные цепи с постоянными параметрами используется в процессе изучения курса Радиотехнические цепи и сигналы и Радиолок...
16345. Прохождение сигналов через нелинейные цепи 113.39 KB
  Прохождение сигналов через нелинейные цепи Методические указания к лабораторной работе Лабораторная работа по исследованию преобразования спектров сигналов нелинейных цепях используется в процессе изучения курса €œРадиотехнические цепи и сигналы€ студентами ...
16346. Линейная фильтрация случайных процессов 370.01 KB
  Линейная фильтрация случайных процессов Методические указания к лабораторной работе Лабораторная работа по исследованию прохождения случайных процессов через линейные цепи с постоянными параметрами используется в процессе изучения курса Радиотехнические цеп
16347. ИЗУЧЕНИЕ ЭФФЕКТА ХОЛЛА В ПОЛУПРОВОДНИКАХ 1.03 MB
  ЦЕЛЬ РАБОТЫ: определение постоянной Холла и концентрации носителей тока в исследуемом полупроводнике. ОБОРУДОВАНИЕ Миниблок Эффект Холла в котором находится тонкая пластинка германия помещенная в зазор сердечника электромагнита. Регулируемый источник пос
16348. ОПРЕДЕЛЕНИЕ ЕМКОСТИ КОНДЕНСАТОРА 1.27 MB
  ЦЕЛЬ РАБОТЫ: знакомство с одним из методов измерения электрической емкости конденсатора; экспериментальная проверка формул для расчета емкости батареи конденсаторов при их параллельном и последовательном соединениях. ОБОРУДОВАНИЕ Регулируемый источн...
16349. ИССЛЕДОВАНИЕ ИНДУКЦИОННОГО РЕГУЛЯТОРА И ФАЗОРЕГУЛЯТОРА 192.5 KB
  ИССЛЕДОВАНИЕ ИНДУКЦИОННОГО РЕГУЛЯТОРА И ФАЗОРЕГУЛЯТОРА 1. Цель работы 1.1. Изучить работу асинхронной машины с фазным ротором в режиме индукционного регулятора и фазорегулятора. 1.2. Ознакомиться с принципиальными схемами индукционного регулятора и фазорегулятор
16350. ИССЛЕДОВАНИЕ ОДНОФАЗНОГО АСИНХРОННОГО ДВИГАТЕЛЯ 66 KB
  ИССЛЕДОВАНИЕ ОДНОФАЗНОГО АСИНХРОННОГО ДВИГАТЕЛЯ 1. ЦЕЛЬ РАБОТЫ. 1.1.Ознакомиться с конструкцией принципом действия и режимами работы однофазных асинхронных двигателей. 1.2.Приобрести практические навыки в определении параметров и исследовании р...
16351. ИЗУЧЕНИЕ И ИССЛЕДОВАНИЕ СВОЙСТВ АСИНХРОННОГО ДВИГАТЕЛЯ С КОРОТКОЗАМКНУТЫМ РОТОРОМ 103.12 KB
  ИЗУЧЕНИЕ И ИССЛЕДОВАНИЕ СВОЙСТВ АСИНХРОННОГО ДВИГАТЕЛЯ С КОРОТКОЗАМКНУТЫМ РОТОРОМ 1. Цель работы 1.1. Ознакомление с конструкцией трехфазного асинхронного двигателя с короткозамкнутым ротором. 1.2. Проведение опытов холостого хода короткого замы
16352. ИСПЫТАНИЕ АСИНХРОННОГО ДВИГАТЕЛЯ С ФАЗНЫМ РОТОРОМ 200 KB
  ИСПЫТАНИЕ АСИНХРОННОГО ДВИГАТЕЛЯ С ФАЗНЫМ РОТОРОМ ЦЕЛЬ РАБОТЫ 1.1. Ознакомиться на разобранном образце по учебнику и конспекту лекций с конструкцией асинхронного двигателя с фазным ротором. 1.2. Получить практические навыки пуска асинхронного двигателя с ...