- •1. Анализ предметной области
- •1.1 Wowprogress.
- •1.1.1 Поиск
- •1.1.2 Рейтинги персонажа Gearscore, Challenge score, Achievements и Pet score.
- •1.1.3 Рейтинги гильдий, PvE score.
- •1.1.4 Разделение по формату 10man/25man, фракциям, рекрутинг.
- •1.1.5 Разделение гильдий по региону.
- •1.1.6 Информация о гильдии.
- •1.1.8. Личный профиль, авторизация.
- •1.1.9 Общая статистика игровых миров, персонажей и Challenge scores.
- •1.2 World of Logs
- •1.2.1. Главная страница
- •1.1.7 Статистика убийств.
- •1.2.2 Детали лога боя
- •1.2.3. Загрузка логов, профиль.
- •2. Разработка требований к системе
- •2.1 Требования в части авторизации пользователей
- •2.2 Требования в части управления профилями (страницами) пользователей
- •2.3 Требования в части управления профилями (страницами) гильдий.
- •2.4 Поиск игроков и гильдий.
- •2.5 Просмотр общего рейтинга.
- •3. Разработка схемы базы данных
- •4. Разработка запросов к базе данных
- •4.1 Запросы на языке реляционной алгебры
4. Разработка запросов к базе данных
разрабатываются запросы к базе данных, позволяющие реализовать все требования, сформулированные во втором разделе. Запросы формулируются как на языке реляционной алгебры, так и на языке SQL.
4.1 Запросы на языке реляционной алгебры
Таблица 2. Запросы на языке реляционной алгебры
Номер требования |
Описание входных и выходных данных запроса |
Запрос на языке реляционной алгебры |
2.1.1 |
- |
- |
2.1.2 |
На входе Пользователь входит в систему: логин L; пароль P.
На выходе если результат запроса пуст, то система считает, что пара логин/пароль указана неверно и отказывает пользователю в доступе.
|
σProfileEmail=L and ProfilePassword=P(Accdata)
|
2.1.3 - 2.2.3 |
- |
- |
2.2.4 |
На входе Пользователь входит в систему с ProfileID=N.
На выходе Система возвращает пользователю Имя, год рождения, имя основного персонажа. |
πProfileName,ProfileYear, ProfileMain(σProfileID=N(AccInfo))
|
2.3.4 |
На входе Пользователь входит в систему с GuildID=N.
На выходе Система возвращает пользователю имя, игровой мир, фракцию, формат, сложность, информацию, PvE score. |
πguildName,Realm,GuildRealm,GuildFaction, Guildformat,GuildDiff, GuildInfo,GuildPve (σGuildID=N(GuildInfo)) |
2.4.1 |
На входе Пользователь вводит Playername=P На выходе Система возвращает пользователю список пар игроков с именем P и игровых миров с данными игроками. |
πPlayerName,Realm(σPlayerName=P(PlayerInfo)) |
Запросы на языке SQL Таблица 3. Запросы на языке SQL
2.1.1 |
На входе Пользователь входит в систему: логин L; пароль P.
На выходе если результат запроса пуст, то система считает, что пара логин/пароль указана неверно и отказывает пользователю в доступе. |
SELECT * FROM AccData WHERE ProfileEmail=L and ProfilePassword=P;
|
2.2.1 -2.2.4 |
На входе: Пользователь при регистрации ввел почту pEmail, пароль pPassword Система присвоила ProfileID = pID Также пользователь ввел имя pName фамилию pMain год рождения pYear На выходе: Система заносит данные в Accdata и AccInfo
|
INSERT INTO AccData (ProfileEmail, ProfilePassword, ProfileID) VALUES(pEmail, pPassword, pID); INSERT INTO AccInfo (ProfileID, ProfileName, ProfileMain, ProfileYear) VALUES(pID, pName, pMain, pYear); |
2.3.1-2.3.4 |
На входе: Система присвоила GuildID = gID Также пользователь ввел имя gName сервер gRealm фракция gFraction формат gFormat сложность gDiff информацию gInfo pve score gPve На выходе: Система заносит данные в GuildInfo
|
INSERT INTO GuildInfo (GuildID, GuildName, GuildRealm, GuildFraction, GuildFormat, GuildDiff, GuildInfo, GuildPve) VALUES(gID, gName, gRealm, gFraction, gFormat, gDiff, gInfo, gPve); |
2.4.1 |
На входе: Пользователь вводит имя игрока PlayerName = pName. По этому выводится список пар имя — сервер. На выходе: Система выводит список пар имя — сервер. |
SELECT PlayerName, Realm FROM PlayerInfo WHERE PlayerName = pName |
2.4.2 |
На входе: Система получает PlayerID = pID На выходе: Система выводит список игроков по одному или нескольким из пунктов (например achievements, gearscore) и выводит имя персонажа. |
SELECT Achievements, PlayerName, Gearscore FROM PlayerInfo WHERE PlayerID=pID |
2.4.3 |
На входе: Система получает GuildID = gID На выходе: Система выводит список игроков, состоящий в Guildname и сортирует их по PvE score. Также выводится информация из таблицы Guildinfo. |
SELECT PlayerPve, PlayerGuild, GuildName, GuildRealm, Realm, Guildfaction, GuildFormat, GuildInfo, GuildDiff, GuildPve, GuildID FROM GuildInfo NATURAL JOIN PlayerInfo WHERE GuildID = gID ORDER BY PlayerPve |
2.5.1 |
На входе: Системы получает статистику по всем параметрам (achievements, gearscore, etc) На выходе: Система выводит список игроков, по одной из категорий, с возможной сортировкой по классу. В примере рассмотрим 2 варианта — статистика achievements для всех игроков и статистика gearscore для class=1 (deathknight) |
SELECT PlayerAchievements FROM PlayerInfo ORDER BY PlayerAchievements
SELECT PlayerGearscore FROM PlayerInfo WHERE PlayerClass=1 ORDER BY PlayerGearscore |
2.5.2 |
На входе: Система получает PlayerID=pID. На выходе: Система выводит список игроков, сортированный по Dps/Hps с возможной сортировкой по PlayerClass и PlayerSpec и выводит гильдию персонажа.
В примере будет указано 2 случая — вывод статистики по Hps class=7 (priest), и вывод данных по Dps class=2 (druid) и spec = 3(guardian). |
SELECT PlayerHps, PlayerGuild FROM PlayerInfo WHERE class=7 ORDER BY PlayerHps
SELECT PlayerDps, PlayerGuild FROM PlayerInfo WHERE class=2 AND spec = 3 ORDER BY PlayerDps |
Заключение
В ходе разработка проекта базы данных для сайта анализа рейтинга игроков и групп игроков онлайн-игры World of Warcraft были решены следующие задачи:
1. Проведен анализ предметной области на примере сайтов wowprogress и worldoflogs.
2. Разработаны требования к системе в части:
- Авторизации пользователей.
- Управление профилями игроков и гильдий.
- Поиска по имени игрока или гильдии.
- Просмотра общего рейтинга.
3. Исследованы теоретические основы технологии построения баз данных:
- реляционная модель;
- реляционная алгебра;
- теория проектирования реляционных схем.
4. Разработана схема базы данных и проведена ее нормализация к НФБК;
5. Разработаны запросы к базе данных на языках реляционной алгебры и SQL, позволяющие реализовать все указанные требования к системе.
Все поставленные задачи решены успешно, цель курсовой работы достигнута.
Полученные в ходе курсовой работы результаты 1) анализ предметной области, 2) схема базы данных; 3) запросы к базе данных - могут быть использованы для разработки нового сайта для анализа рейтинга.
Опираясь на проведенный во втором разделе анализ предметной области, можно предположить, что дальнейшее развитие разработанного проекта базы данных можно осуществлять по направлениям:
- Расширение статистики wowprogress прикрепленными логами сражений
- Введение рейтинга по классу и специальности в меню игрока, позволяя зная имя игрока, узнать не только его рейтинги Gearscore и пр., но и Dps/Hps.
- Введение зависимости n=Dps(Hps) / Gearscore, позволяющая более объективно оценивать уровень игры человека.
Список использованных источников
[1] ВикипедиЯ Свободная Энциклопедия [Электронный ресурс]
http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3
[2] Mysitecost.ru - cайт для сбора инвормации о других веб сайтах [Электронный ресурс]
http://mysitecost.ru/wowprogress.com
[3] Wikireality.ru - энциклопедия по теме “интернет” [Электронный ресурс]
http://www.wikireality.ru/wiki/WOWProgress
[4] Сайт игры World of Warcraft - предмета исследования [Электронный ресурс]
http://eu.battle.net/wow/ru/
[5] Gamespot.com - сайт, создающий обзоры на игры [Электронный ресурс]
http://www.gamespot.com/world-of-warcraft/reviews/world-of-warcraft-review-6114072/
Данные получены 07.12.12.
