Разработка мультиагентной системы для формирования новостных сводок на основе профилей пользователей и онтологии
Технологии и средства Web-разработки, популярные среды разработки и языки сценариев. Понятие системы управления базами данных и её атрибутов, критерии её выбора. Алгоритм работы мультиагентной модели. Проектирование модели реляционной базы данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.07.2012 |
Размер файла | 892,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
(МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ)
Институт АВТ
Кафедра ПМ
ВЫПУСКНАЯ РАБОТА
по направлению подготовки бакалавра информатики и вычислительной техники (230201)
Тема: «Разработка мультиагентной системы для формирования новостных сводок на основе профилей пользователей и онтологии»
Студент: А-16-08 Грачева О.В.
Научный руководитель: к.т.н. доцент Михайлов И.С.
«Работа допущена к защите»
Зав. Кафедрой: д.т.н., профессор Еремеев А.П.
Москва, 2012 г.
Оглавление
ГЛАВА 1. ТЕХНОЛОГИИ И СРЕДСТВА WEB-РАЗРАБОТКИ
1.1 Выбор среды разработки
1.1.1 Среда PHP
1.1.2 ASP.NET
1.2 Выбор СУБД
1.2.1 СУБД MySQL
1.2.2 СУБД PostgreSQL
1.3 Выбор веб-сервера
1.4 Другие используемые средства разработки
1.4.1 HTML
1.4.2 CSS
1.4.3 JavaScript
1.4.4 Фреймворк CodeIgniter
1.4.5 Библиотека grocery CRUD для CodeIgniter
1.5 Выводы
ГЛАВА 2. МОДЕЛЬ РАЗРАБАТЫВАЕМОЙ СИСТЕМЫ
2.1 Мультиагентная модель
2.2 Проектирование модели базы данных
2.2.1 Инфологическое проектирование
2.2.2 Логическое проектирование
ПРИЛОЖЕНИЕ А. ОПИСАНИЕ СУЩНОСТЕЙ И ИХ АТРИБУТОВ В БАЗЕ ДАННЫХ
ГЛАВА 1. ТЕХНОЛОГИИ И СРЕДСТВА WEB-РАЗРАБОТКИ
В настоящее время существует большое количество средств разработки веб-приложений. Выбор средств разработки - один из главных этапов при создании проекта.
1.1 Выбор среды разработки
Рассмотрим наиболее популярные на данный момент среды разработки, используемые для создания web-приложений: язык PHP и технологию ASP.NET.
1.1.1 Среда PHP
PHP - это широко используемый язык сценариев общего назначения с открытым исходным кодом.
Говоря проще, PHP - это язык программирования, специально разработанный для написания web-приложений (сценариев), исполняющихся на Web-сервере.
Аббревиатура PHP означает “Hypertext Preprocessor (Препроцессор Гипертекста)". Синтаксис языка берет начало из C, Java и Perl. PHP достаточно прост для изучения. Преимуществом PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц.
Значительным отличием PHP от какого-либо кода, выполняющегося на стороне клиента, например, JavaScript, является то, что PHP-скрипты выполняются на стороне сервера. При запросе клиентом страницы, содержащей PHP скрипт, сначала происходит ее обработка PHP процессором. Результатом выполнения скрипта является HTML-код, созданный по правилу, описанному в скрипте. Затем полученный HTML-файл передается клиенту. Так что клиенты не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.
На данный момент, язык PHP является наиболее популярным среди языков web-программирования (по данным tiobe.com - ресурса, который занимается индексированием популярности языков программирования). К крупнейшим сайтам, использующим PHP, относятся Facebook, Wikipedia, Google, Yahoo и др.
Как у любого языка, у языка PHP есть свои достоинства и недостатки.
Плюсы:
· Популярность. Язык поддерживает большинство хостов, существует множество книг и статей, помогающих в изучении, большое сообщество программистов, хорошая справка.
· Бесплатное распространение.
· PHP по своей функциональности сравним с известными языками высокого уровня и позволяет решать задачи различной сложности. Кроме того существует широкий набор готовых решений(функций), позволяющих значительно ускорить разработку.
Минусы:
· Нет совместимости между различными версиями PHP-процессора (нет гарантии, что скрипт для старой версии будет работать для новой).
· PHP является некоммерческим проектом и разрабатывается и улучшается группой энтузиастов (в любой момент его поддержка может прекратиться).
· Несогласованный синтаксис функций и неортогональность. В отличие от подавляющего большинства остальных языков программирования, PHP не был изначально задуман как полноценный язык программирования, а постепенно вырос из шаблонизатора для Perl. Это привело как к появлению в первоначальном варианте языка некоторых спорных решений, так и к отсутствию контроля со стороны создателя языка, который бы следил за стройностью его архитектуры.
Совместно с PHP-процессором используют различные IDE (Integrated Development Environment - интегрированные среды разработки) и отладчики. Наиболее известными IDE являются: Komodo, PHPStorm, Zend Studio. А наиболее функциональные отладчики: XDebug и Zend Debgger. IDE, отладчик и php препроцессор образуют полнофункциональную среду разработки web-приложений.
1.1.2 ASP.NET
ASP.NET -- технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP.NET 4.0.
Хотя ASP.NET берёт своё название от старой технологии Microsoft ASP, она значительно от неё отличается. Microsoft полностью перестроила ASP.NET, основываясь на Common Language Runtime (CLR), которая является основой всех приложений Microsoft .NET. Разработчики могут писать код для ASP.NET, используя практически любые языки программирования, входящие в комплект .NET Framework (C#, Visual Basic.NET и JScript .NET). ASP.NET имеет преимущество в скорости по сравнению со скриптовыми технологиями, так как при первом обращении код компилируется и помещается в специальный кэш, и впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.
К крупнейшим сайтам, использующим PHP, относятся MSN.com (Microsoft) и Live.com (Microsoft).
Плюсы:
· Наличие удобной визуальной среды разработки(IDE) с возможностью отладки.
· Поддержка коллективной разработки проекта (Team Projects).
· Удобство организации крупных проектов (за счет хорошей IDE)
· Полная интеграция с ОС за счет платформы .NET.
· Регулярные обновления, хорошая документация (коммерческая поддержка).
· Совместимость с предыдущими версиями.
Минусы:
· Для работы с ASP.NET необходимо лицензионное программное обеспечение. ОС Windows Server, среда разработки Visual Studio и все расширения - платные.
· Сложность освоения (во фреймворк .NET входят много языков). Необходимо уметь организовывать сложные проекты, а также разрабатывать проекты в команде.
Результаты сравнительного анализа сред разработки:
Таким образом, учитывая преимущества и недостатки рассмотренных выше сред разработки, приходим к выводу, что для данного проекта наиболее целесообразным является использование PHP, так как он является наиболее популярным для создания web-приложений, предоставляет широкие возможности, относительно легок в изучении и абсолютно бесплатен.
1.2 Выбор СУБД
Перед тем, как выбрать конкретную СУБД, вспомним, что такое СУБД, каковы ее функции и в чем заключается концепция реляционной СУБД.
База данных (БД) - это набор структурированной информации, предназначенной для совместного использования несколькими пользователями одновременно. Базы данных различаются по своей структуре: дореляционные (на инвертированных списках, иерархические системы и сетевые СУБД), реляционные и постреляционные (например, объектные).
Система управления базами данных (СУБД) -- совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
Основные функции СУБД:
· управление данными во внешней памяти (на дисках);
· управление данными в оперативной памяти с использованием дискового кэша;
· журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
· поддержка языков БД (язык определения данных, язык манипулирования данными).
Обычно современная СУБД содержит следующие компоненты:
· ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию;
· процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода;
· подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД;
· сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы.
В зависимости от того, какая модель данных лежит в основе БД, выделяют иерархические, сетевые, реляционные, объектно-ориентированные и объектно-реляционные СУБД. Рассмотрим подробнее, что из себя представляет реляционная СУБД.
Реляционная СУБД -- СУБД, управляющая реляционными базами данных. Реляционная модель данных характеризуется простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
· любой тип записи содержит атомарное значение;
· все ячейки в столбце таблицы однородные, то есть все элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.);
· любое отношение должно содержать один атрибут или более, которые вместе составляют уникальный первичный ключ;
· каждый столбец имеет уникальное имя;
· одинаковые строки в таблице отсутствуют;
· порядок следования строк и столбцов может быть произвольным.
Связь между таблицами существует на логическом уровне и определяется предметной областью.
Для связи двух таблиц используется логическая связь через сравнение значений атрибутов, которая строится динамически в процессе поиска нужной информации.
СУБД, в зависимости от способа доступа к БД, делятся на:
· файл-серверные - база данных хранится во внешней памяти компьютера, за которым работают один или несколько человек, или на выделенном сервере, доступ к которому осуществляется по сети (примеры: Microsoft Access, Paradox, dBase, FoxPro, Visual FoxPro);
· клиент-серверные - СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно. Недостаток клиент-серверных СУБД состоит в повышенных требованиях к серверу. Достоинства: потенциально более низкая загрузка локальной сети; удобство централизованного управления; удобство обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность (примеры: Oracle, Firebird, Interbase, IBM DB2, MS SQL Server, PostgreSQL, MySQL);
· встраиваемые - СУБД, которые поставляются как составная часть некоторого программного продукта и не требуют процедуры самостоятельной установки. Такие СУБД предназначены для локального хранения данных своего приложения и не рассчитаны на коллективное использование в сети (OpenEdge, SQLite, Firebird Embedded, Microsoft SQL Server Compact).
Web-технологии подразумевают использование клиент-серверных СУБД. Наиболее широкое распространение получили клиент-серверные СУБД с поддержкой языка запросов SQL.
Среди бесплатных СУБД наиболее популярными являются MySQL и PostgreSQL. Обе СУБД довольно динамично развиваются и повсеместно используются. Продолжаются споры о том, какая СУБД лучше. Обе системы очень стабильны, гибки и производительны. У каждой есть свои плюсы и минусы.
1.2.1 СУБД MySQL
MySQL - быстрая, но немного ограниченная СУБД (не полностью поддерживает стандарт SQL). Хорошо подходит для проектов, не требующих сложных баз данных (например, для web-проектов).
Плюсы:
· Бесплатная
· Поддержка известных операционных систем (Windows и Linux)
· Для работы требуется только знание языка SQL
· Простота установки и эксплуатации
· Распространенность (поддерживается большинством хостингов)
Минусы:
· Неполная поддержка стандарта языка SQL.
1.2.2 СУБД PostgreSQL
PostgreSQL - мощная и тяжелая система, отвечающая всем современным стандартам СУБД. Больше подходит для серьезных проектов, требующих сложных баз данных. По скорости работы PostgreSQL уступает MySQL. И администрирование PostgreSQL - непростая задача. PostgreSQL - это реляционно-объектная СУБД, в которой есть некоторые расширения для работы с таблицами, на которые можно легко отображать иерархии объектов. Но это еще не чисто объектная СУБД.
Плюсы:
· Бесплатная
· Возможность использования языков SQL, Perl, Ruby, Python, C++
· Высокая надежность
· Гибкость работы с БД
· Поддержка популярных ОС
Минусы:
· Сложность освоения и настройки
Результаты сравнительного анализа СУБД:
Для данного проекта будем использовать СУБД MySQL, так как она является бесплатной, широко распространенной и ее функциональности достаточно для реализации проекта.
1.3 Выбор веб-сервера
Среди множества существующих веб-серверов можно выделить следующие: Apache HTTP Server, Internet Information Services и nginx. В данном проекте будем использовать самый популярный из них - Apache, с которым работают около 65%.
Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основные достоинства Apache:
· надёжность;
· высокая производительность;
· огромный набор функций и дополнительных модулей;
· легкость установки;
· бесплатное распространение.
1.4 Другие используемые средства разработки
Итак, мы определились, что проект будем разрабатывать в среде PHP, базу данных создавать с помощью СУБД MySQL. Для отладки и реализации доступа к проекту из сети интернет используется веб-сервер Apache.
Помимо этого, для разработки веб-приложения нам понадобится язык разметки HTML, язык стилей CSS и скриптовый язык JavaScript. А также будем использовать фреймворк CodeIgniter, который расширяет возможности PHP и увеличивает удобство организации проекта, и библиотеку grocery CRUD, созданную специально для CodeIgniter - она позволяет с легкостью разработать приложение для работы с базой данных.
Рассмотрим кратко возможности этих средств разработки.
1.4.1 HTML
HTML (от англ. HyperText Markup Language -- «язык разметки гипертекста») -- стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц создаются при помощи языка HTML. Язык HTML интерпретируется браузерами и отображается в виде документа, в удобной для человека форме.
HTML имеет собственный набор символов, с помощью которых Web-браузеры отображают страницу. Эти символы, называемые дескрипторами, включают в себя элементы, необходимые для создания гиперссылок.
Одной из отличительных особенностей HTML-документов является то, что сам документ содержит только текст, а все остальные объекты встраиваются в документ в момент его отображения Браузером с помощью специальных тэгов и хранятся отдельно. При сохранении HTML-файла в месте размещения документа создается папка, в которую помещаются сопутствующие ему графические элементы оформления.
1.4.2 CSS
CSS (англ. Cascading Style Sheets -- каскадные таблицы стилей) -- формальный язык описания внешнего вида документа, написанного с использованием языка разметки.
CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом.
1.4.3 JavaScript
JavaScript -- прототипно-ориентированный скриптовый язык программирования.
JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования и освоения.
1.4.4 Фреймворк CodeIgniter
CodeIgniter -- популярный MVC фреймворк с открытым исходным кодом, написанный на языке программирования PHP и предназначенный для разработки полноценных веб-систем и приложений.
Особенности:
· CodeIgniter отличает простота, которая достигается благодаря следующим факторам:
o Качественная и полная документация с примерами, а так же большое сообщество;
o Фреймворк дает свободу программисту, не создавая каких-либо структурных ограничений и конвенций;
o Программисту не требуется учиться пользоваться генераторами кода из командной строки;
· CodeIgniter работает практически на любом хостинговом плане, который имеет поддержку PHP версии 5.1 и выше;
· CodeIgniter считается одним из быстрых и не требовательных к ресурсам фреймворков;
· Малый размер дистрибутива (размер версии 2.02 составляет всего 2.2 Мб);
· Документация CodeIgniter пропагандирует «толстые» контроллеры и «тонкие» модели. Валидация и построение бизнес-логики происходят в основном в контроллере. Несмотря на это, фреймворк дает свободу разработчику, поэтому он может самостоятельно выбрать подход к разработке приложения.
Возможности:
· Поддержка баз данных MySQL, PostgreSQL, MSSQL, SQLite, Oracle;
· Легко расширяемая система за счет возможности использования сторонних и самописных библиотек, а также дополнения или переопределения существующих;
· Поддержка как сегментированных ЧПУ, так и обычных URL-ов с передачей параметров;
· Фреймворк содержит в себе множество необходимых библиотек, которые создают функционал для работы с файлами, отправки электронных писем, валидации форм, поддержки сессий, работы с изображениями и так далее;
· Обладает возможностью кеширования на стороне сервера SQL-запросов и генерируемых html-страниц. С версии 2.0 для кеширования могут использоваться XCache или APC.
Использование фреймворка облегчает разработку приложения за счет наличия уже готовых библиотек с наиболее часто используемыми функциями, а также позволяет лучше организовать проект благодаря концепции MVC, которая лежит в основе фреймворка CodeIgniter.
MVC (Model-view-controller, «Модель-представление-контроллер») -- схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные.
MVC -- это шаблон, который позволяет отделить логику от отображения. На практике, это позволяет файлам с отображением содержать минимальное количество скриптов.
· Модель - представляет структуру данных. Обычно класс модели - это набор функций, которые помогают получить, добавить и обновить информацию в базе данных. Не содержит информации, как эту информацию можно визуализировать.
· Представление - отвечает за визуальное представление данных для конечного пользователя. В нем, как правило, содержатся обычные html страницы.
· Контроллер - выступает в роли посредника между Моделью, Отображением, и любыми другими ресурсами, необходимыми для того чтобы по HTTP запросу сформировать веб-страницу.
Концепция Model-View-Controller изображена на рис. 2.1.
Размещено на http://www.allbest.ru/
Рис. 1.1. Концепция Model-View-Controller
1.4.5 Библиотека grocery CRUD для CodeIgniter
Библиотека grocery CRUD реализует стандартные операции создания-чтения-редактирования-удаления записей БД.
С ее помощью можно быстро собрать приложение с удобным интерфейсом для работы с базой данных.
Возможности:
· Разбивка списка записей на страницы, сортировка, поиск по списку записей (все функции реализованы на ajax);
· Автоматическая генерация полей input в соответствии с типом поля БД;
· При необходимости, переопределение типов полей;
· Реализация зависимостей 1-1, 1-n и n-n всего одной строкой кода;
· Валидация вводимых значений на стороне клиента и на стороне сервера, согласно заданным правилам валидации;
· Гибкий выбор полей, которые будут отображаться и редактироваться;
· Блокировка операций удаления, редактирования и добавления записей;
· Реализованы вызовы callbacks для самостоятельной настройки дополнительных действий после выполнения стандартной операции;
· Расширяемость базовой модели grocery CRUD;
· Мультиязычный функционал (русский язык включен).
1.5 Выводы
В данной главе был проведен сравнительный анализ различных средств разработки веб-приложений. В качестве среды разработки была выбрана среда PHP, так как она является наиболее популярной для создания web-приложений, предоставляет широкие возможности и при этом абсолютно бесплатна. Из рассмотренных СУБД предпочтение было отдано СУБД MySQL, которая бесплатна, широко распространена, а ее функциональности достаточно для реализации данного проекта.
Также для реализации проекта будут использоваться сервер Apache, язык разметки HTML, таблицы стилей CSS, скриптовый язык JavaScript, а также фреймворк CodeIgniter, предназначенный для облегчения процесса разработки, и его дополнительная библиотека Grocery CRUD, позволяющая быстро создавать удобные приложения для работы с базой данных.
ГЛАВА 2. МОДЕЛЬ РАЗРАБАТЫВАЕМОЙ СИСТЕМЫ
2.1 Мультиагентная модель
Рис. 2.1. Мультиагентная модель
Агент обновления (и удаления) - отвечает за обновление базы данных новостей и онтологии, а также за очистку БД от старых новостей. В этом агенте осуществляется парсинг новостных сайтов.
Работу агента обеспечивают сервер Apache, PHP-препроцессор и скрипты parser.php, parser2.php, clear.php, news_model.php. При этом Apache используется для взаимодействия с сетью Интернет, а PHP-препроцессор служит для выполнения скрипта, который реализует алгоритм работы агента обновления.
Алгоритм работы агента заключается в следующем:
· Вначале загружается html-страница с сайта-источника новостей (адреса новостных сайтов хранятся в базе сайтов).
· Затем из страницы извлекается информация о новостях, а именно заголовок новости, картинка, дата публикации, начало текста новости, ссылка на новость, расположенную на сайте-источнике. Также из html-страницы извлекается информация о том, к какой рубрике относится каждая новость, и какие теги с ней ассоциированы.
· Проверяется, не существует ли уже в базе новостей новости с таким же заголовком. Если нет, то база новостей обновляется, в таблицу «Новости» добавляется новая запись.
· Затем обновляется онтология, а именно добавляются данные в следующие таблицы:
1) «Рубрика» - проверяется, есть ли уже данная рубрика в таблице, и если нет, то добавляется новая запись. Также устанавливается связь между рубрикой и сайтом-источником в таблице «Рубрика-сайт»;
2) «Тег» - добавляем все теги, связанные с новостью (проверяем, что такого тега еще не было в таблице);
3) «Рубрика-Тег» - устанавливается связь между рубрикой и тегом, при этом проверяется, если такая связь уже существует, то значение поля «количество» увеличивается на 1.
4) Учет количества связей тега с рубрикой позволит в дальнейшем проводить анализ и делать выводы о том, какие теги наиболее часто встречаются в какой-то конкретной рубрике. А также по тегам, связанным с разными рубриками, можно будет определять связи различных рубрик между собой.
· Также обновляются таблицы «Рубрика-Новость» и «Тег-Новость» - связывается новость с рубрикой и тегами.
Парсинг новостных сайтов работает автоматически. Запуск осуществляется на сервере с помощью Cron-задачи, которая запускает агента обновления с периодичностью в 20 минут.
Удаление новостей запускается раз в день, удаляются старые новости месячной давности.
Агент обработки - формирует список рубрик и новостей для конкретного пользователя. Работу агента обеспечивают PHP-препроцессор и скрипт home.php.
По ID пользователя осуществляется SQL- запрос к БД, результатом которого является список рубрик, которые пользователь выбрал в своем профиле. Далее для каждой такой рубрики формируется список связанных с ней новостей. Эти данные передаются Агенту отображения.
Агент отображения - отвечает за формирование пользовательского интерфейса (страниц сайта). Работу агента обеспечивают сервер Apache, PHP-препроцессор и скрипты site.php, admin.php, admin_view.php , home.php, settings_form.php, login_form.php, signup_form.php, signup_successful.php, rubric_helper.php.
На основе информации, поступившей от Агента обработки, формирует главную страницу с новостями, отсортированными по рубрикам. Если вход пользователя еще не был осуществлен, то главная страница формируется по готовому шаблону.
Для входа пользователя на сайт Агент отображения формирует страницу Login, на которой пользователь заполняет следующие поля: «E-mail» и «Пароль». Данные из полей передаются Агенту пользователей, который уже проверяет, существует ли данный пользователь в базе данных пользователей. В зависимости от ответа Агента пользователей, либо происходит вход пользователя на сайт, создается новая сессия и Агент обработки формирует главную страницу для пользователя, либо Агент отображения выдает сообщение об ошибке входа на сайт и предлагает ввести данные еще раз либо зарегистрироваться. Если в параметрах сессии тип пользователя - «Admin», то отображается не главная страница сайта с новостями, а приложение для работы с базой данных.
При регистрации пользователя отображается страница, на которой пользователь вводит следующие данные: «Имя», «E-mail», «Пароль», «Подтверждение пароля», которые затем отправляются Агентом отображения Агенту пользователей. Тот проверяет корректность введенных данных и, если все в порядке, сохраняет в базе данных информацию о пользователе. Иначе отправляет информацию об ошибке обратно Агенту отображения, который, в свою очередь, сообщает об ошибке пользователю и предлагает заполнить поля регистрационной формы еще раз.
Для изменения настроек своего профиля пользователю необходимо на странице редактирования профиля в форме с названиями рубрик отметить галочками те рубрики, которые он хочет видеть на своей главной странице. Данные о выборе пользователя передаются Агентом отображения Агенту пользователей, который сохраняет изменения в базе данных.
Агент пользователей - отвечает за все действия, связанные с настройками пользователей, а именно: за регистрацию пользователей, за их вход на сайт, а также за изменение пользователем настроек в своем профиле. Работу агента обеспечивают PHP-препроцессор и скрипты login.php, settings.php, rubric_model.php, membership_model.php.
При регистрации данные пользователя передаются Агенту пользователей от Агента отображения. Эти данные проверяются следующим образом: имя пользователя обязательно должно быть задано и может быть любым, e-mail пользователя проверяется на корректность средствами CodeIgniter, пароль и подтверждение пароля должны обязательно совпадать, а их длина должна быть в диапазоне от 6 до 32 символов. Если все поля заполнены верно, то Агент пользователей обращается к базе данных и создает новую запись в таблице «Пользователь», иначе - отправляет Агенту отображения информацию о том, какие ошибки были допущены пользователем при заполнении формы регистрации.
При входе пользователя на сайт Агент пользователей посылает запрос на поиск в базе данных в таблице «Пользователи» записи по e-mail пользователя и хешу введенного им пароля. Если такая запись найдена, то выполняется вход пользователя на сайт - создается новая сессия, в параметры которой сохраняются e-mail пользователя, его ID и тип пользователя (Admin или User). На основе данных сессии Агент отображения сформирует главную страницу для пользователя.
При редактировании профиля пользователя новые настройки сохраняются в базе данных в таблице «Пользователь-Рубрика», причем все старые настройки перед этим сбрасываются (все записи, связанные с данным пользователем, удаляются).
Агент рекомендаций - выбирает для пользователя такие новости, которые, скорее всего, будут ему наиболее интересны. Работу агента обеспечивают PHP-препроцессор и скрипты links.php, tag_model.php, news_model.php.
Отбор новостей происходит следующим образом. Каждый раз, когда пользователь переходит с сайта по внешним ссылкам, Агент рекомендаций связывает пользователя со всеми тегами новости, заинтересовавшей его, и сохраняет эту информацию в базе данных в таблице «Пользователь - Тег». Если ранее связь пользователя с каким-либо тегом уже была выявлена, то значение поля «Количество» увеличивается на 1.
Именно на основе этих связей пользователя с тегами и выбираются новости для рекомендаций. Чем больше значение поля «Количество» у тега, связанного с данным пользователем, тем больше вероятность того, что новость попадет в список рекомендаций. Порядок новостей тоже определяется тем, насколько популярны теги новости у пользователя, а также свежестью новости - чем позднее дата публикации, тем ближе к началу они будут расположены в рулетке рекомендованных новостей.
2.2 Проектирование модели базы данных
база данное мультиагентный сценарий
Проектирование модели реляционной базы данных включает следующие этапы:
· Инфологическое проектирование - сбор, анализ и редактирование требований к данным в предметной области. Включает в себя:
1) Исследование предметной области
2) Сбор сведений о сущностях, их свойствах и взаимоотношениях в предметной области
3) Определение требований по объемам БД, быстродействию, количеству пользователей;
4) Моделирование всех представлений.
Результатом данного этапа является инфологическая модель БД (модель «сущность - связь», «ER-модель»).
· Логическое проектирование - преобразование инфологической модели БД в структуры данных. Создается схема базы данных на основе конкретной модели данных, в нашем случае, реляционной модели данных. Для реляционной модели данных логическая модель -- набор схем отношений, обычно с указанием первичных ключей, а также «связей» между отношениями, представляющих собой внешние ключи.
Преобразование инфологической модели в логическую, как правило, осуществляется по формальным правилам. Этот этап может быть в значительной степени автоматизирован.
На этапе логического проектирования учитывается специфика конкретной модели данных, а также специфика выбранной СУБД.
Результатом этапа является логическая модель БД.
· Физическое проектирование - для привязки логической модели к среде хранения используется модель данных физического уровня. Эта модель определяет используемые запоминающие устройства и способы физической организации данных в среде хранения. Модель физического уровня также строится с учётом возможностей, предоставляемых СУБД. К числу работ выполняемых на этапе физического проектирования, относятся: выбор типа носителя, определение размера физического блока, управление размещением данных на внешнем носителе, управление свободной памятью, определение целесообразности сжатия данных и используемых методов сжатия.
Для проектирования будем использовать программу ERwin, предназначенную для построения инфологической модели и автоматической генерации соответствующей логической модели с учетом особенностей выбранной СУБД (для обозначения моделей данных ERwin использует терминологию, отличную от рассмотренной выше: инфологическая модель именуется логической (Logical) моделью, а логическая - физической (Physical) моделью.). Результатом генерации логической модели является схема БД, представленная на языке SQL, и созданные таблицы, входящие в БД.
2.2.1 Инфологическое проектирование
Инфологическая модель позволяет представить предметную область в формализованном виде. При этом используются наиболее естественные для человека формы представления той информации, которую предполагается хранить в создаваемой базе данных. Поэтому для построения инфологической модели данных используют различные виды семантических моделей: семантические сети, модель «сущность-отношение» и др. Будем использовать модель «сущность-отношение» (ER-модель). Основными элементами этой модели являются сущности, их свойства (атрибуты) и связи между сущностями.
Сущность определяет некоторый объект предметной области, информацию о котором необходимо хранить в БД. Объекты предметной области образуют классы объектов, имеющих одинаковые свойства. Такие классы определяют тип сущности (в дальнейшем, просто сущность). Конкретный объект из этого класса задает экземпляр сущности. Среди всех атрибутов сущности особое положение занимают атрибуты, образующие ключ. Ключ ? это минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности.
Другим элементом ER-модели является связь. Связь определяет зависимость двух или более сущностей. С помощью связей отражаются семантические соотношения между сущностями.
Различают следующие типы связей:
· Связь ОДИН-К-ОДНОМУ (1:1).
· Связь ОДИН-КО-МНОГИМ (1:N).
· Связь МНОГИЕ-КО-МНОГИМ (М:N).
Все связи требуют описания, которое включает:
· идентификатор связи;
· формулировку имен связи с точки зрения связываемых сущностей;
· тип связи.
Разработаем инфологическую модель для данного проекта.
Предметная область: сайт новостей.
Сущности:
· Пользователь
Идентификатор: ID пользователя.
Атрибуты: имя, E-mail, хэш пароля, salt для пароля, тип пользователя.
· Сайт
Идентификатор: ID сайта.
Атрибуты: адрес URL, название, правила извлечения данных.
· Новость
Идентификатор: ID новости.
Атрибуты: ID сайта, заголовок, картинка, начало текста новости, ссылка, дата публикации.
· Рубрика
Идентификатор: ID рубрики.
Атрибуты: название, ID родительской рубрики, тип рубрики.
· Тег
Идентификатор: ID тега.
Атрибуты: название.
Сущности Сайт и Новость связаны между собой связью 1: N, причем связь не идентифицирующая.
Сущности Пользователь и Рубрика, Пользователь и Тег, Новость и Рубрика, Сайт и Рубрика, Тег и Рубрика, Тег и Новость связывают между собой связи M:N. Для определения этих связей используем дополнительные таблицы: Пользователь-Рубрика, Пользователь-Тег, Рубрика-Новость, Рубрика-Сайт, Рубрика-Тег, Тег-Новость.
· Пользователь-Рубрика
Идентификаторы: ID пользователя, ID рубрики.
Атрибуты: порядковый номер.
· Пользователь-Тег
Идентификаторы: ID пользователя, ID тега.
Атрибуты: количество.
· Рубрика-Новость
Идентификаторы: ID рубрики, ID новости.
· Рубрика-Сайт
Идентификаторы: ID рубрики, ID сайта.
· Рубрика-Тег
Идентификаторы: ID рубрики, ID тега.
Атрибуты: количество.
· Тег-Новость
Идентификаторы: ID тега, ID новости.
В результате получаем инфологическую модель, изображенную на рис. 2.2.
Опишем атрибуты и определим первичные и внешние ключи отношений. Таблицы с описаниями приведены в приложении А.
Рис. 2.2. Инфологическая ER-модель
2.2.2 Логическое проектирование
После того, как была построена инфологическая модель, выбираем необходимую СУБД - MySQL, и ERwin автоматически создает соответствующую логическую модель. На основе этой модели ERwin может сгенерировать схему БД на языке SQL и сформировать таблицы, образующие БД.
Этот процесс называется прямым проектированием (Forward Egineering) и обеспечивает масштабируемость: создав одну инфологическую модель, можно сгенерировать логические модели для любой СУБД, поддерживаемой программой ERwin.
Логическая модель изображена на рис. 2.3.
Рисунок 2.3. Логическая модель
Самостоятельно проверяем, и, если нужно, редактируем типы и размеры полей. Для обеспечения ссылочной целостности в БД отредактируем действия, выполняемые при операциях Insert, Update и Delete. Для каждой связи зададим следующие действия:
· Child Delete: none
· Child Insert: restrict
· Child Update: restrict
· Parent Delete: cascade
· Parent Insert: none
· Parent Update: restrict
Таким образом, мы определили, что при удалении записи, на которую имеются ссылки по внешним ключам других таблиц, каскадно удаляются и все ссылающиеся на нее записи.
Только для связи Website - News зададим Parent Delete: restrict, чтобы избежать незапланированного удаления всех новостей, связанных с данным сайтом.
Определим функциональные зависимости для каждой таблицы:
· User
user_id -> user_name
user_id -> user_email
user_id -> passw_hash
user_id -> passw_salt
user_id -> user_type
user_id + = (user_id, user_name, user_email, passw_hash, passw_salt, user_type)
· Rubric
rubric_id -> rubric_name
rubric_id -> rubric_type
rubric_id -> parent_id
rubric_id + = (rubric_id, rubric_name, rubric_type, parent_id)
· News
news_id -> website_id
news _id -> header
news _id -> picture
news _id -> news_text
news _id -> release_date
news _id -> link
news _id + = (news _id, website_id, header, picture, news_text, release_date, link)
· Website
website_id -> url
website _id -> name
website _id -> extracting_rules
website _id + = (website_id, url, name, extracting_rules)
Во всех отношениях отсутствуют транзитивные зависимости от ключа.
Обоснование нахождения РБД в 3НФ:
· Каждое отношение находится в первой нормальной форме, потому что содержит только атомарные значения. Это гарантируется заданным типом атрибутов.
· Каждое отношение находится во второй нормальной форме, т. к. оно находится в первой и все неключевые атрибуты функционально полно зависят от ключа.
· Каждое отношение находится в третьей нормальной форме, потому что оно находится во второй и каждый неключевой атрибут нетранзитивно (то есть прямо) зависит от первичного ключа.
· Так как для каждого из отношений выполняются условия нахождения в 3НФ, то вся БД находится в 3НФ.
ПРИЛОЖЕНИЕ А. ОПИСАНИЕ СУЩНОСТЕЙ И ИХ АТРИБУТОВ В БАЗЕ ДАННЫХ
Сущности |
||
Имя |
Краткое описание |
|
Новость |
Новость, полученная с сайта-источника |
|
Пользователь |
Пользователь, зарегистрированный на сайте |
|
Пользователь - Рубрика |
Связь между пользователем и рубрикой означает, что пользователь выбрал в своем профиле данную рубрику, и она отображается на его главной странице |
|
Пользователь - Тег |
Связь между пользователем и тегом устанавливается, если пользователь перешел по ссылке на новость, содержащую данный тег |
|
Рубрика |
Один из разделов, содержащих новости. У рубрики могут быть подрубрики. |
|
Рубрика - Новость |
Показывает связь между новостями и рубриками. Каждая новость относится к одной или нескольким рубрикам. В каждой рубрике может быть несколько новостей. |
|
Рубрика - Сайт |
Связь показывает, к какому сайту/сайтам относится данная рубрика |
|
Рубрика - Тег |
Связь между рубрикой и тегом задается, когда у новости, относящейся к данной рубрике, существует данный тег |
|
Сайт |
Сайт, являющийся источником новостей |
|
Тег |
Ключевое слово, описывающее тему новости. |
|
Тег - Новость |
У каждой новости может быть несколько тегов. По ним можно судить о тематике новости. |
Атрибуты сущности "Новость" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID новости |
INTEGER |
Идентификационный номер новости |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
No |
|
ID сайта |
INTEGER |
Идентификационный номер новостного сайта |
Уникальное среди всех экземпляров сущности положительное число |
No |
Yes |
|
Заголовок |
VARCHAR (255) |
Заголовок новости |
до 255 символов |
No |
No |
|
Картинка |
VARCHAR (255) |
Путь к картинке, прилагающейся к новости |
до 255 символов; если null - картинки нет |
No |
No |
|
Начало текста новости |
TEXT (1000) |
Первые 1000 символов новости |
до 1000 символов |
No |
No |
|
Ссылка |
VARCHAR (255) |
Ссылка на исходное расположение новости в интернете |
до 255 символов |
No |
No |
|
Дата публикации |
DATETIME DAY TO SECOND |
Дата публикации новости на исходном новостном сайте |
Дата в формате: 2012-01-01 17:51:00 |
No |
No |
Атрибуты сущности "Пользователь" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID пользователя |
INTEGER |
Идентификационный номер пользователя |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
No |
|
Имя пользователя |
VARCHAR (50) |
Имя пользователя |
до 50 символов |
No |
No |
|
E-mail пользователя |
VARCHAR (50) |
Адрес электронной почты пользователя |
до 50 символов |
No |
No |
|
Хэш-значение пароля |
VARCHAR (32) |
Хэш-значение в виде строки размером 32 символа |
32 символа - результат функции хеширования md5 |
No |
No |
|
Salt для пароля |
VARCHAR (255) |
Случайные символы, добавляемые к паролю перед хешированием |
до 255 символов |
No |
No |
|
Тип пользователя |
VARCHAR (20) |
Определяет, какие полномочия будут назначены пользователю |
Может быть либо "Admin" - администратор, который может редактировать БД, либо "User" - обычный зарегистрированный пользователь |
No |
No |
Атрибуты сущности "Пользователь - Рубрика" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID пользователя |
INTEGER |
Идентификационный номер пользователя |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
ID рубрики |
INTEGER |
Идентификационный номер рубрики |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
Порядковый номер |
INTEGER |
По этому номеру будет определяться порядок, в котором рубрики будут отображаться на главной странице пользователя |
Любое целое число |
No |
No |
Атрибуты сущности "Пользователь - Тег" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID пользователя |
INTEGER |
Идентификационный номер пользователя |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
ID тега |
INTEGER |
Идентификационный номер тега |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
Количество |
INTEGER |
Показывает, сколько раз пользователь читал новости, содержащие данный тег |
Целое положительное число |
No |
No |
Атрибуты сущности "Рубрика |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID рубрики |
INTEGER |
Идентификационный номер рубрики |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
No |
|
Название рубрики |
VARCHAR (50) |
Название рубрики |
до 50 символов |
No |
No |
|
ID родительской рубрики |
INTEGER |
ID рубрики, которая является родительской по отношению к данной |
если 0 - то данная рубрика корневая |
No |
No |
|
Тип рубрики |
INTEGER |
Тип рубрики определяет, относится ли она к основным рубрикам, которые можно выбирать в настройках профиля. Тип рубрики задает администратор БД. |
NULL - тип рубрики еще не определен, 1 - рубрика относится к основным рубрикам, 0 - не относится |
No |
No |
Атрибуты сущности "Рубрика - Новость" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID рубрики |
INTEGER |
Идентификационный номер рубрики |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
ID новости |
INTEGER |
Идентификационный номер новости |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
Атрибуты сущности "Рубрика - Сайт" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID рубрики |
INTEGER |
Идентификационный номер рубрики |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
ID сайта |
INTEGER |
Идентификационный номер новостного сайта |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
Атрибуты сущности "Рубрика - Тег" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID рубрики |
INTEGER |
Идентификационный номер рубрики |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
ID тега |
INTEGER |
Идентификационный номер тега |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
Количество |
INTEGER |
Показывает, сколько раз тег встречался в этой рубрике |
целое положительное число |
No |
No |
Атрибуты сущности "Сайт" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID сайта |
INTEGER |
Идентификационный номер новостного сайта |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
No |
|
Адрес URL |
VARCHAR (255) |
Адрес URL новостного сайта в интернете |
до 255 символов |
No |
No |
|
Название |
VARCHAR (50) |
Название сайта |
до 50 символов |
No |
No |
|
Правила извлечения данных |
TEXT |
Правила, по которым данные извлекаются из новостного сайта |
длина строки не фиксированная |
No |
No |
Атрибуты сущности "Тег" |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID тега |
INTEGER |
Идентификационный номер тега |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
No |
|
Название тега |
VARCHAR(255) |
Название тега |
до 255 символов |
No |
No |
Атрибуты сущности "Тег - Новость |
||||||
Название |
Тип данных |
Описание |
Примечания |
Первичный ключ |
Внешний ключ |
|
ID тега |
INTEGER |
Идентификационный номер тега |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
|
ID новости |
INTEGER |
Идентификационный номер новости |
Уникальное среди всех экземпляров сущности положительное число |
Yes |
Yes |
Размещено на Allbest.ru
Подобные документы
Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.
курсовая работа [981,4 K], добавлен 05.11.2011Понятие базы данных, модели данных. Классификация баз данных. Системы управления базами данных. Этапы, подходы к проектированию базы данных. Разработка базы данных, которая позволит автоматизировать ведение документации, необходимой для деятельности ДЮСШ.
курсовая работа [1,7 M], добавлен 04.06.2015Выделение объектов предметной области и взаимосвязей между ними. Разработка ER-модели на логическом уровне с использованием системы Erwin Data Modeler. Проектирование даталогической и реляционной модели в среде выбранной системы управления базами данных.
курсовая работа [905,6 K], добавлен 26.12.2013Анализ системы управления базами данных, основные задачи: обработка информации, организация работы пользователей. Access как функционально полная система, имеющая мощные средства для работы программы. Этапы разработки базы данных торговой организации.
контрольная работа [458,0 K], добавлен 05.01.2013Системный анализ предметной области. Построение концептуальной и даталогичной модели базы данных. Физическое проектирование базы данных. Описание функциональной модели системы управления базами данных. Разработка экранных форм ввода-вывода и отчета.
курсовая работа [1,1 M], добавлен 09.12.2014Теоретические основы проектирования и разработки баз данных, правила формирования отношений из диаграмм ER-типа. Определение сущностей и их взаимосвязей, атрибутов и ключей. Разработка модели базы данных, повышение производительности доступа к информации.
курсовая работа [1,5 M], добавлен 24.12.2011Модели данных как формальный аппарат для описания информационных потребностей пользователей. Структура информационной базы. Типы взаимосвязей. Разработка логической структуры базы для хранения данных о пяти поставщиках. Детализация реляционной модели.
презентация [28,9 K], добавлен 07.12.2013Понятие и назначение, принципы построения и внутренняя структура системы управления базами данных, их функциональные особенности и возможности, критерии оценки эффективности. Языковые и программные средства. Использование SQL, типы и модели данных.
презентация [677,3 K], добавлен 18.03.2015Особенности управления информацией в экономике. Понятие и функции системы управления базами данных, использование стандартного реляционного языка запросов. Средства организации баз данных и работа с ними. Системы управления базами данных в экономике.
контрольная работа [19,9 K], добавлен 16.11.2010История создания, понятие, типы и функции системы управления базами данных. Изучение технологии копирования данных средствами устройства их хранения. Процесс разработки алгоритма и программы для нахождения максимального элемента массива А в массиве В.
отчет по практике [360,4 K], добавлен 08.02.2014