Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Содержание
Введение.......................................................................................................................2
1 Перспективы развития интерактивного справочника..........................................3
1.1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ.........................................................................31.2 ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА СОЗДАНИЯ ИНТЕРАКТИВНОГО СПРАВОЧНИКА
....................................................................................................................................61.3 ЯЗЫКИ ПРОГРАММИРОВАНИЯ ДЛЯ РАЗРАБОТКИ WEB-ПРИЛОЖЕНИЙ.................6
2. Информация о базах данных.................................................................................9
2.1 ОБЩИЕ СВЕДЕНИЯ О БАЗАХ ДАННЫХ..................................................................92.2 ПОСОБИЕ ПО РАБОТЕ С БАЗОЙ ДАННЫХ DL.GSU.BY..........................................112.3 СОДЕРЖАНИЕ БАЗЫ ДАННЫХ DL.GSU.BY..........................................................13
3 Подробное описание таблиц и полей базы данных dl.gsu.by.............................15
3.1 ТАБЛИЦЫ ИНФОРМАЦИИ О ПОЛЬЗОВАТЕЛЯХ....................................................153.2 ТАБЛИЦЫ ИНФОРМАЦИИ О КУРСАХ..................................................................213.3 ТАБЛИЦЫ СПРАВОЧНИКИ...................................................................................273.4 ТАБЛИЦЫ СВЯЗАННЫЕ С ТЕСТИРОВАНИЕМ.......................................................303.5 ТАБЛИЦЫ, СОДЕРЖАЩИЕ СТАТИСТИКУ РЕЗУЛЬТАТОВ ТЕСТИРОВАНИЯ..........343.7 ТАБЛИЦЫ ДЛЯ ПРОТОКОЛИРОВАНИЯ СОБЫТИЙ................................................383.8 ОСТАЛЬНЫЕ ТАБЛИЦЫ.......................................................................................39
4. Разработка интерактивного справочника............................................................43
4.1 РАБОТА С БАЗАМИ ДАННЫХ DL.GSU.BY............................................................434.2 СОЗДАНИЕ ПРОЦЕДУР ДЛЯ РАБОТЫ С ТАБИЛЦАМИ БАЗЫ ДАННЫХ..................454.3 ВЫБОР И ОБОСНОВАНИЕ СПОСОБА СОЗДАНИЯ СПРАВОЧНИКА........................474.4 СТРУКТУРА ИНТЕРАКТИВНОГО СПРАВОЧНИКА.................................................47
5 Взаимодействия пользователя со справочником................................................49
Заключение.................................................................................................................51
Список использованных источников.......................................................................52
Приложение A............................................................................................................53
Приложение B............................................................................................................55
Введение
Distance Learning Belarus (DLB) – проект дистанционного обучения в режиме реального времени, использующий возможности интернет-технологий. Был создан в 1999 году. Взаимодействие пользователя с системой DLB может осуществляться при помощи почты или через интернет. В первом случае пользователь должен писать письма почтовому роботу ([email protected]) используя определенный набор команд. Второй случай - использование web-сайта (http :// dl . gsu . by ).
При разработке системы DLB использовались следующие технологии и языки: Structured Query Language (SQL), Active Server Pages (ASP), JavaServer Pages (JSP) и Java, Internet Information Server Application Programming Interface (ISAPI), JavaScript, HTML, CSS, протоколы SMTP, POP3 (позволяют работать с почтовым сервером).
Distance Learning Belarus – это огромный проект, над которым работает ни один человек. Для функционирования данного типа проектов необходимы организация слаженной работы разработчиков и корректно налаженный обмен информации между ними. Для этого были созданы такие ресурсы как http :// confluence . newit . gsu . by , http :// jira . newit . gsu . by .
На сайте http://confluence.newit.gsu.by находится вся существующая документация по содержанию таблиц и процедур базы данных сайта DL.GSU.BY.
Разработкой сайта часто занимаются студенты, которые не имеют достаточных навыков работы с технологиями, необходимыми для разработки функциональности для сайта DL. И целью данной работы является создание интерактивного справочника для получения быстрой информации о базе данных сайта DL.GSU.BY.
В данном дипломном проекте ставится задача разработки интерактивного справочника по базе данных сайта DL.GSU.BY.
Для его разработки собрана и проанализирована информация по данной теме, на основе которой создан справочник по этапам:
Сбор информации, описание таблиц и полей, внесение данных в справочник . Находится нужная база банных, в которой описываются все поля, таблицы и хранимые процедуры которые необходимо внести в справочник, а так же формируется полный список всех существующих таблиц и процедур базы данных сайта DL.GSU.BY. Задачи:
2
− обновить данные таблиц и функций базы данных DL.GSU.BY;− реализовать скрипты по добавлению описания таблиц и полей;− создан интерактивный справочник со всей актуальной информацией;− написать отчет о проделанной работе.
1 Перспективы развития интерактивного справочника
1.1 Анализ предметной области
Понятие информации и роль компьютерных и Интернет-технологий в современном мире
Термин «информация» происходит от латинского слова «information», что в переводе означает свéдение, разъяснение, ознакомление. Информация - это сведения, которые человек получает при взаимодействии с природой и обществом с помощью своих органов чувств. В широком смысле информация - это обмен сведениями между человеком и окружающим миром.
Одним из самых значительных достижений человеческой мысли стали электронно-вычислительные машины, влияние которых на развитие научно-технического прогресса трудно переоценить. Области применения ЭВМ непрерывно расширяются.
За последние полвека цифровая ЭВМ превратилась из уникального и дорогостоящего аппарата в небольшую по размерам машину - персональный компьютер - состоящий из миллионов крошечных полупроводниковых приборов.
В результате этого превращения компьютеры стали применяться повсюду. Они ведут учёт семейного бюджета, управляют работой кассовых аппаратов, следят за работой автомобильных систем зажигания или просто используются в качестве развлекательного комплекса. Но это только малая часть возможностей современных компьютеров. Более того, бурный прогресс полупроводниковой микроэлектроники, представляющей собой базу вычислительной техники, свидетельствует о том, что сегодняшний уровень, как самих компьютеров, так и областей их применения является лишь слабым подобием того, что наступит в будущем.
Компьютеры участвуют во всех сферах деятельности человека, начиная с начального образования и заканчивая изучением новейших технологий.
Благодаря разнообразию программного и аппаратного обеспечения возможно использование всех потенциальных возможностей компьютерных
3
технологий. Это позволяет хранить огромное количество информации, занимая при этом минимальное место. С развитием компьютерных технологий встал вопрос: как же распространять эту информацию между пользователями?
Решить этот вопрос помог Интернет - глобальная информационная сеть, объединяющая все компьютеры мира. Интернет предоставляет широчайшие возможности свободного получения и распространения деловой, научной, познавательной и развлекательной информации. Интернет возник как воплощение двух идей - глобального хранилища информации и универсального средства ее распространения. Главным свойством сети Интернет является глобальность и интерактивность. С помощью такого программного обеспечения как браузер, предназначенного для просмотра Web-сайтов, их обработки, вывода и перехода от одной страницы к другой, пользователь, который имеет доступ в интернет, может задать любой вопрос и получить на него ответ.
Понятие интерактивного справочникаМодернизация и научно-технический прогресс привели к активному распространению информационных технологий и компьютерной информации. Были сделаны научные открытия, благодаря которым инновационные преобразования вошли во все сферы жизни и деятельности человека. Эти открытия не обошли стороной и область информационных технологий. В настоящее время происходят постоянные обновления и выход новых версий программного обеспечения, а также новинок в электронике и проекционном оборудовании.
Интерактивные технологии вошли в обиход каждого человека и стали применяться в различных сферах деятельности. Внедрение интерактивных систем помогает усвоить информацию более оперативно, так как процесс приобретает автоматический характер работы.
Интерактивность - это степень взаимодействия между объектами; принцип организации системы, при котором цель достигается информационным обменом элементов этой системы. Степень интерактивности показывает насколько быстро и удобно пользователь может добиться поставленной цели с помощью Интернета.
Справочник - это книга, в которой собраны необходимые сведения по определенным вопросам. В справочниках содержится информация в точной и понятной форме. Вся информация располагается так, чтобы пользователь мог быстро найти необходимые ему сведения. Так как информации с каждым днем становится все больше и больше, на сегодняшний день удобно иметь справочники по экономике, технике, культуре, бизнесу, образованию.
Интерактивный справочник - это программа, предназначенная для предоставления той информации, которую от нее желает получить
4
пользователь. Эта программа позволяет вместить большой объем информации, что является главным преимуществом электронного справочника перед бумажным. Ведь использовать многотомные бумажные издания не всегда удобно. Так же у интерактивных справочников имеется ряд преимуществ: поиск, с помощью которого можно быстро найти нужную информацию; наличие гиперссылок, позволяющих получить разъяснение терминов, содержащихся в тексте, чтобы получить развернутую информацию по определенной теме; получение регулярно обновляющейся информации.
В процессе образования интерактивный справочник играет важную роль.Он способствует раскрытию и использованию творческих способностей
каждого обучаемого. Формирует познавательные потребности путем организации поиска знаний в процессе изучения учебного материала, что может быть обеспечено созданием специальных электронных учебных пособий. Эта проблема решается с помощью интерактивных справочников.
В данной области появились исследования, связанные с рассмотрением вопросов создания и применения электронного справочного пособия в учебном процессе. Но остается нерешенным вопрос необходимости внедрения и использования электронных справочников в процессе профессиональной подготовки студентов вуза.
Актуальность использования интерактивного справочникаСправочная информация бывает нужна каждый день. Интернет быстро
меняется, информация устаревает. Электронные справочники легко обновляются. Они позволяют сэкономить время и получить актуальную информацию. Часто в интерактивных справочниках можно найти более сконцентрированную и полезную информацию, в таком случае оправданной будет и цена, да и бумажного аналога можно просто не найти.
Интерактивный справочник позволяет пользователю, имеющему компьютер и доступ в Интернет, в любое время оперативно получить необходимую справочную информацию в компактной форме.
У интерактивного справочника множество преимуществ:размещение в сети Интернет;быстрый и лёгкий обмен информацией;позволяет самому обучаемому выбрать и время и место для обучения; за счет использования новых информационных технологии, в определенной степени сокращает расходы на обучение;усиливает возможности индивидуализации обучения.
5
1.2 Инструментальные средства создания интерактивного справочника
Обзор популярных браузеровБраузер - программное обеспечение для просмотра Web-сайтов, их
обработки, вывода и перехода от одной страницы к другой. Браузеры постоянно развивались со времени зарождения Всемирной
паутины и с её ростом становились всё более востребованными программами. Ныне браузер - комплексное приложение для обработки и вывода разных составляющих Web-страницы и для предоставления интерфейса между Web-сайтом и его посетителем.
Практически все популярные браузеры распространяются бесплатно или «в комплекте» с другими приложениями: Internet Explorer - совместно с Microsoft Windows; Mozilla Firefox - бесплатно, совместно с многими дистрибутивами Linux; Safari - совместно с Mac OS X и бесплатно для Microsoft Windows; Google Chrome - бесплатно; Opera - бесплатно начиная с версии 8.50.Internet ExplorerExplorer (IE) является наиболее широко используемым Web-браузером, начиная с 1999 года. Доля использования в 2002 - 2003 годах - %. Однако, в последнее время его доля стремительно снижается, уступая место таким браузерам, как Mozilla Firefox, Google Chrome, Safari, Opera и др.
1.3 Языки программирования для разработки Web-приложений
Семантические элементы HTML5 доступно описывают свой смысл и назначение, как для браузеров, так и для веб-разработчиков. До появления стандарта HTML5 вся разметка страниц осуществлялась преимущественно с помощью элементов <div>, которым присваивали классы class или идентификаторы id для наглядности разметки (например, <div id="header">). С их помощью в HTML-документе
Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит компьютер под её управлением.
Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны
6
миллионам людей. Профессиональные программисты иногда применяют в своей работе
более десятка разнообразных языков программирования.Язык разметки гипертекста (Hypertext Markup Language). Это компьютерный язык, лежащий в основе World Wide Web (Всемирной
Паутины). Благодаря языку HTML любой текст можно разметить, преобразовав его в гипертекст с последующей публикацией в World Wide Web.
Язык HTML имеет собственный набор символов, с помощью которых Web-браузеры отображают страницу. Эти символы, называемые дескрипторами, включают в себя элементы, необходимые для создания гиперссылок.
Одной из отличительных особенностей HTML-документов является то, что сам документ содержит только текст, а все остальные объекты встраиваются в документ в момент его отображения Браузером с помощью специальных тэгов и хранятся отдельно. При сохранении HTML-файла в месте размещения документа создается папка, в которую помещаются сопутствующие ему графические элементы оформления.
Скриптовый язык программирования общего назначения, интенсивно применяемый для разработки Web-приложений.используется для:
создания скриптов, работающих на стороне сервера. PHP способен решать те же задачи, такие как: обработка данных HTML-форм, динамическое генерирование HTML-страницы и тому подобное.
создания скриптов, выполняющихся в командной строке. То есть с помощью PHP можно создавать такие скрипты, которые будут исполняться, вне зависимости от web-сервера и браузера, на конкретной машине.
создания GUI-приложений, выполняющихся на стороне клиента.GUI-приложения (Graphical user interface) - разновидность
пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т.п.), представленные на дисплее,исполнены в виде графических изображений.
Интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями.
Кроссплатформенная реализация интерпретатора языка является полностью свободной, распространяется с открытыми исходными текстами, возможностью копирования и модификации. Последней является версия 1.8.5, вышедшая 28 августа 2006.
Язык программирования JavaScript разработан фирмой Netscape для создания интерактивных HTML-документов. Это объектно-ориентированный язык разработки встраиваемых приложений, выполняющихся как на стороне клиента, так и на стороне сервера. Основные области применения JavaScript делятся на следующие категории:
динамическое создание документа с помощью сценария;оперативная проверка достоверности заполняемых пользователем полей
7
форм HTML до передачи их на сервер;создание динамических HTML-страниц совместно с каскадными
таблицами стилей и объектной моделью документа;взаимодействие с пользователем при решении "локальных" задач,
решаемых приложением JavaScript, встроенном в HTML-страницу.Наиболее широко Perl используется для разработки инструментов
системного администрирования, однако в последнее время он получил огромную популярность в области разработки Интернет-приложений: CGI-сценариев, систем автоматической обработки электронной почты и поддержки узлов Web.
Вот некоторые примеры задач, которые можно решать с помощью Perl:проверка пользователей Windows NT на несоответствие их статуса и
возможностей;управление NT-сервисами из командной строки и дистанционно с
локальной машины получение статистических данных на отдельной машине;может работать и с протоколом FTP;системная поддержка UNIX и Windows.размещали контейнеры, боковые панели, навигационное меню и многое
другое.
8
2. Информация о базах данных
2.1 Общие сведения о базах данных
База данных - набор сведений, хранящихся некоторым упорядоченным способом. Можно сравнить базу данных со шкафом, в котором хранятся документы. Иными словами, база данных - это хранилище данных. Сами по себе базы данных не представляли бы интереса, если бы не было систем управления базами данных (СУБД).
Система управления базами данных - это совокупность языковых и программных средств, которая осуществляет доступ к данным, позволяет их создавать, менять и удалять, обеспечивает безопасность данных и т.д. В общем СУБД - это система, позволяющая создавать базы данных и манипулировать сведениями из них. А осуществляет этот доступ к данным СУБД посредством специального языка - SQL.
SQL - язык структурированных запросов, основной задачей которого является предоставление простого способа считывания и записи информации в базу данных.
Рисунок 1 – Схема работы с базой данных
По характеру использования СУБД делят на однопользовательские (предназначенные для создания и использования БД на персональном компьютере) и многопользовательские (предназначенные для работы с единой БД нескольких компьютеров, объединенных в локальные сети).
9
Рисунок 2 – Деление по характеру использования БД
На сегодняшний день число используемых СУБД исчисляется десятками. Наиболее известные однопользовательские СУБД - Microsoft Visual FoxPro и Access, многопользовательские - MS SQL Server, Oracle и MySQL.
Типы таблиц и ключей в реляционных базах данных. Реляционные базы данных характеризуются наличием некоторых типов таблиц и ключей, позволяющих определить отношения между таблицами. Для того, чтобы понять принципы разработки реляционных баз данных, требуется дать определения различных типов реляционных ключей и таблиц:
Базовая таблица. В реляционной базе данных базовой таблицей называется таблица, которая включает один или несколько столбцов свойств объекта и содержит первичный ключ, который однозначно определяет этот объект. Более того, базовая таблица должна содержать первичный ключ. Базовые таблицы часто называют первичными, поскольку они имеют первичный ключ.
Промежуточная таблица. Таблица, не являющаяся базовой (т. к. она не объединяет свойства объекта или не содержит поле первичного ключа), которая используется для обеспечения связей между другими таблицами, называется таблицей отношений. Ключевые поля в таблицах отношений должны быть внешними ключами, связанными с первичными ключами базовой таблицы. Проще говоря, таблица отношений состоит только из внешних ключей и не содержит независимых элементов данных.
Первичный ключ. Первичный ключ состоит из набора значений, которые однозначно определяют запись базовой таблицы. Любому значению первичного ключа должна соответствовать одна и только одна строка таблицы. Первичный ключ включает одно поле только в том случае, если это поле не содержит повторяющихся значений.Составные ключи. Если для выполнения условий, накладываемых на значения первичного ключа, заданный ключ включает несколько полей таблицы, то
10
тогда он называется составным.Внешние ключи. Внешний ключ — это столбец, значения которого
соответствуют значениям первичного ключа другой связанной таблицы.
2.2 Пособие по работе с базой данных DL.GSU.BY
Для редактирования базы можно использовать Enterprise Manager, Query Analyzer или проект MS Access.
Всем разработчикам настоятельно рекомендуется обновлять историю изменений структуры базы данных .
В разделе "Полезная литература" доступна документация по SQL .Много полезной информации можно узнать также, нажав F1 и введя
интересующие слова в Query Analyzer.
Описания полей. Очень удобным средством само документирования базы данных служат описания полей таблиц БД. Их правильное использования позволяет любому разработчику быстро узнать назначение интересующего его поля. Смотреть описания полей позволяют Enterprise Manager и MS Access в режиме конструктора таблиц.
Программно редактировать описания можно с помощью хранимых процедур sp_addextendedproperty и sp_updateextendedproperty.
Например, следующий вызов создаст описание для поля AutoRestartable таблицы Checkers.
exec sp_addextendedproperty \-\- сохраняем описание для поля 'MS_Description', 'подлежит ли Дельта автоперезапуску', 'user', 'dbo', 'table', 'Checkers', 'column', 'AutoRestartable'
Null. По умолчанию в SQL любая операция сравнения с null (в т.ч. с переменной равной null) дает ложь. Поэтому можно получить довольно неожиданные результаты простенького запроса
select t1.* from t1 inner join t2 on t1.name=t2.name
В результат такого запроса не попадут записи с совпадающими, но равными null полями.
С этой особенностью при необходимости можно бороться, вводя дополнительные проверки на null. Или можно использовать оператор SET ANSI_NULLS OFF, пример:
SET ANSI_NULLS ON \-\- этот режим включен по умолчанию11
select case when null=null then 1 else 0 end \-\- 0select case when 'null'<>null then 1 else 0 end \-\- 0SET ANSI_NULLS OFFselect case when null=null then 1 else 0 end \-\- 1select case when 'null'<>null then 1 else 0 end \-\- 1
Внимание: оператор SET ANSI_NULLS OFF игнорируется внутри хранимых процедур и триггеров. При их работе используется то состояние опции ANSI_NULLS, которое было установлено момент создания хранимой процедуры или триггера.
Следующий пример иллюстрирует правильное использование:
SET ANSI_NULLS OFFgocreate procedure sp_test_nullsas select case when 'null'<>null then 1 else 0 end -- 1goexec sp_test_nullsdrop procedure sp_test_nullsGO
Вот еще один пример, объяснение работы которого остается на совести MS SQL Server:
CREATE TABLE t1 (a int null)INSERT INTO t1 values (NULL)INSERT INTO t1 values (0)INSERT INTO t1 values (1)
SET ANSI_NULLS OFF SELECT t1.a, t2.a, case when t1.a=t2.a then 1 else 0 end FROM t1 as t1 left join t1 as t2 on t1.a=t2.aDROP TABLE t1GO
Collations (порядок сортировки строк). Трудно переводимое слово Collation означает порядок сортировки строковых данных.
MS SQL Server с помощью оператора COLLATE позволяет задавать этот порядок на уровне базы данных, отдельных таблиц и отдельных выражений. Причем для dldb по умолчанию принят порядок, не различающий регистр символов. С другой стороны, часто бывает необходимо при обработке различать регистр.
Изменить это поведение на уровне БД или отдельных таблиц проблематично из-за сложившихся зависимостей. Остается только выкручиваться путем применения оператора collate Cyrillic_General_CS_AI к каждой операции сравнения, пример:
use dldb\--alter database dldb collate Cyrillic_General_CS_AI \-\- не пройдет
12
select DATABASEPROPERTYEX('dldb', 'Collation') \-\- выдаст Cyrillic_General_CI_ASselect case when 'тест'='ТесТ' then 1 else 0 end \-\- 1select case when 'тест'='ТесТ' collate Cyrillic_General_CS_AI then 1 else 0 end \-\- 0\--SELECT * FROM ::fn_helpcollations() where name like '%cyr%' \-\- можно посмотреть возможные варианты
Расшифровка: CS/CI - регистро-зависимость/независимость, AS/AI - зависимость от знаков ударения (для русского языка не актуально).
2.3 Содержание базы данных DL.GSU.BY
В таблицах и хранимых процедурах приняты следующие обозначения и сокращения:CourseID, CrsID, CID
идентификатор курса
UserID, UsrID, UID
идентификатор пользователя
NodeID, NID идентификатор узла задачи
TaskID, TID идентификатор задачи
QueueID идентификатор решения в очереди
LangID идентификатор языка пользователя (1 - русский, 2 --английский)
TLID идентификатор записи в протоколе тестирования
DBSID идентификатор записи в протоколе тестирования по шагам (Detail By Steps ID)
DBTID идентификатор записи в протоколе тестирования по тестам (Detail By Tests ID)
Префикс "E" строка на английском (например EName)
Описание таблиц и представлений13
Таблицы информации о пользователях Таблицы информации о курсах Справочники Таблицы, связанные с тестированием Таблицы, содержащие статистику результатов тестирования Таблицы используемы для хранения результатов Таблицы для протоколирования событий Остальные таблицы
Описание хранимых процедур и функций :
Общего назначения Работа с деревьями Работа с группами Тестирование Работа с таблицами результатов (новые таблицы, на Java) Работа с таблицами результатов (старые таблицы, на ASP)
3 Подробное описание таблиц и полей базы данных DL.GSU.BY
3.1 Таблицы информации о пользователях
14
Таблица 3.1.1 – Информация о пользователях (Pupils)
Атрибут Тип Описание
ID Int Уникальный идентификатор пользователя
Last, ELast Varchar(50) Фамилия
First, EFirst Varchar(50) Имя
Middle, EMiddle
Varchar(50) Отчество
Country Int Идентификатор страны пользователя из справочника стран
City Int Город
Region Int Область
SubRegion Int Район
School Varchar(50) Место учебы
Form Int Класс
Address Varchar(255) Адрес
Birth Datetime Дата рождения
Password Varchar(50) Пароль для входа в систему DL
Email Varchar(50) Электронный адрес почты
Phone Varchar(50) Телефон
Joined Datetime Дата/время регистрации
Question Varchar(50) «Секретный» вопрос, используется если пользователь забыл пароль
Answer Varchar(50) «Секретный» ответ
Subscribed Bit Подписан ли пользователь на список рассылки
PublicInfo Bit Публиковать личную информацию на сайте
PublicScores Bit Публиковать результаты успеваемости
AdditionalInfo Text Дополнительная информация
15
Teacher Varchar(80) Учитель
Nick Char (10) Альтернатива для входа на сервер (не используется)
GroupMaskId Int Идентификатор маски группы
GroupId Вычислимое поле: [dbo].[fn_getGroupId]([form], [GroupMaskId])
Идентификатор группы
Groupname Вычислимое поле: [dbo].[fn_replaceGroupMask]([form], [groupmaskid], 0)
Имя группы на русском языке
Таблица 3.1.2 – Информация о командах (Teams)
Название поля Тип Назначение
ID INT Код команды
Name, EName Varchar (255)
Название команды
TFirst, ETFirst Varchar (255)
Имя капитана
TMiddle, ETMiddle Varchar (255)
Отчество капитана
TLast, ETLast Varchar (255)
Фамилия капитана
TOrg Varchar (255)
Название организации
TTitle Varchar (255)
Должность
Phone Varchar (255)
Телефон для связи
Email Varchar (255)
Электронный адрес
Representing, ERepresenting
Varchar (255)
Контактное лицо?
AdditionalInfo Varchar (255)
Дополнительная информация
Password Varchar (255)
Пароль
16
City int Код города
Country int Страна
Address Varchar (255)
Адрес
Question Varchar (255)
«Секретный» вопрос
Answer Varchar (255)
Ответ на секретный вопрос
Joined Datetime Дата добавления команды
Subscribed bit Подписан ли пользователь
PublicInfo bit Публиковать личные данные или нет
PublicScores bit Публиковать результаты соревнований
Region int Область
Subregion int Район области
Nick Char(10) Кодовое имя
SchoolID int Код Школы
SchoolNo int Номер школы
SchoolKind int Тип школы
SendPasswordOnEmail bit Высылать пароль на электронный адрес или нет
Таблица 3.1.3 – Информация о соответствии учеников и команд (PupilsTeams)
Название поля
Тип Назначение
PupilID INT Код пользователя
TeamID INT Код команды
Таблица 3.1.4 – Связь между пользователями и курсами (UsersCourses)
Название поля Тип Назначение
17
UserID int Код участника
CourseID int Код соревнования (курса)
Rating int Рейтинг
PublicScores int Публиковать результаты по данному соревнования или нет
TheoryLevel int Теоретический уровень
TaskLoLevel int Просто уровень задачи
TaskHiLevel int Сложный уровень задачи
RatingUpdateTime
datetime Время обновления рейтинга
LogViewedID int Код просматриваемого лога
Subscribed datetime Дата создания записи
TasksViewType int Тип вида задач
Language int Компилятор по умолчанию
TheoryViewType int Тип вида теории
ShowRules bit Показать правила
Таблица UsersCourses хранит информацию о том, на какие соревнования «подписан» участник или команда.
Таблица 3.1.5 – Связь между пользователями и курсами (Editors)
Название поля
Тип Назначение
UserID int ID участника, который есть редактор курса (из таблицы Pupils)
CourseID int ID курса, у котрого участник будет редактором (из таблицы Courses)
Owner bit Флаг, признак, является ли редактор владельцем курса
Tutor bit Флаг, признак, является ли редактор владельцем курса
18
Таблица Editors хранит информацию о редакторах курсов. Курсу может соответствовать более 1 редактора.
Таблица 3.1.6 – Привилегии пользователей (UsersPriveleges)
Название поля Тип Назначение
UserID int ID участника, которому дали прав больше обычного (из таблицы Pupils)
CanCreateGroup bit Флаг - может ли пользователь создавать группы
CanCreateCourse
bit Флаг - может пользователь создавать курсы
CanCreateSchool bit Флаг - может ли пользователь вносить записи в справочник школ
isAdmin bit Пользователь - администратор
isDeveloper bit Пользователь - разработчик
isOLAdmin bit Пользователь может редактировать сайт Олимп
В таблице UsersPriveleges хранится информация о правах и возможностях предоставленных пользователю.
Таблица 3.1.7 – Информация по общим группам объектов (Groups)
Атрибут Тип Описание
Id Int Идентификатор группы
type Int Тип группы
Name Varchar(255) Название группы на рус языке
Ename Varchar(255) Название группы на анг языке
PublicGroup bit Публиковать группу или нет
OwnerUserID Int Код командира редактора курса
OwnerSchoolID Int Код командира школы
year varchar(5) Текущий учебный год
isArchive bit Бит информации, архивная ли группа
GroupNamesID Int Код названия группы
19
Таблица 3.1.8 – Информация по группам (GroupNames)
Атрибут Тип Описание
Id Int Идентификатор группы
SchoolTypeId Int Идентификатор типа школы
GroupMaskId Int Идентификатор маски
FormId Int Идентификатор из таблицы Forms
SchoolId Int Идентификатор школы
isArchive Int Бит информации, архивная ли группа
Year Varchar(255) Текущий учебный год
PupilsCount Int Количество пользователей в группе
Name Varchar(255) Название группы на русском языке
EName Varchar(255) Название группы на английском языке
Таблица 3.1.9 – Информация по маскам групп (GroupMaskNames)
Атрибут Тип Описание
Id Int Идентификатор маски
Mask Varchar(50) Имя маски на русском языке
eMask Varchar(50) Имя маски на английском языке
Таблица 3.1.10 – Связь между группами и объектами (ObjectsGroups)
Атрибут
Тип Описание
ObjectID Int Код объекта группы
GroupID Int Код группы
Num Int Номер объекта
Таблица 3.1.11 – Атрибуты пользователей для групп-фильтров (GroupConditions)
Атрибут Тип Описание
GroupID Int Код группы
Condition varchar(255)
Условие участия группы
20
Таблица 3.1.12 – История изменения атрибутов пользователя (UsersHistory)
Название поля Тип Назначение
ID Int ID участника или команды
Date datetime Дата, на которую было внесено изменение
Name, EName Varchar(50) Имя и фамилия
Middle, EMiddle Varchar(50) Отчество
Form Int Код класса
Country Int Код страны
City Int Код города
School, ESchool Varchar(50) Школа
Teacher, ETeacher Varchar(50) Учитель
Region Int Область
SubRegion Int Район
Таблица хранит в себе всю информацию об изменении данных о команде или участнике в хронологическом порядке. Использование данной таблицы позволяет корректно отображать, например, класс участника в зависимости от года, в котором проходило соревнование.
3.2 Таблицы информации о курсах
Таблица 3.2.1 – Информация о курсах (Courses)
Атрибут Тип Описание
ID Int Уникальный идентификатор курса
Name, EName Varchar(100) Название курса
Active Bit Активен ли курс (скрывает курс для всех см. поле Hidden)
Type Smallint Тип курса (1 - учебный, 2 - личное соревнование или 3 - командное соревнование)
Accept Smallint Доступен 1 - инд. Пользователям, 2 -
21
командам или 3 - и тем и другим
DesktopURL Varchar(80) Альтернативная начальная страница курса (не используется)
TimeBegin Datetime Время начала курса
TimeEnd Datetime Время закрытия курса
Description, Edescription
Text Описание курса
BriefDesc, EBriefDesc
Varchar(8000) Краткое описание курса
TasksRoot Int Идентификатор узла дерева задач, который является корневым для данного курса
TheoryRoot Int Аналогично для теории
DefaultTaskHiLevel Int «Верхний» уровень доступа к дереву задач, устанавливаемый по умолчанию
DefaultTaskLoLevel Int «Нижний» уровень доступа к дереву задач, устанавливаемый по умолчанию
DefaultTheoryLevel Int Уровень доступа к дереву теории, устанавливаемый по умолчанию
ResultsType Int Способ отображения результатов (таблица, список таблиц, таблица таблиц) (не используется)
ResultsID Int Идентификатор таблицы таблиц (не используется)
ProcessedLogID Int Последняя обработанная при построении таблиц результатов запись протокола (не используется)
RealtimeResult Bit Показывать текущие результаты во время соревнования
MaxAttempts Int Максимальное количество попыток сдачи одной и той же задачи
Hidden Bit Курс скрыт для не-редакторов
TableType smallint Тип таблицы 1, 2, 3 - старые типы таблиц 5 - таблица на java
ParentID Int Курс - родитель (организация дерева)
22
Num Int Порядок сортировки (организация дерева)
TasksViewType int Способ предоставления теории
CanGetSolution bit Пользователь может брать свое решение обратно
CanNotHideResults bit Пользователь не может скрыть свои результаты из таблицы результатов
IsPermanent bit Курс должен отображатся и как обычный и как архивный курс
CheckerID int ID чекера (Дельты), которым будут проверяться задачи. Если null или 0, берется любой
CanShowAnswers bit Пользователь может подсмотреть правильные ответы на интерактивные задачи
Language int Компилятор по умолчанию
BLog bit Если 1, то дополнительный протокол будет показываться
CanDeleteTSolution bit Может ли пользователь удалять из очереди свои уже тестирующиеся решения
ShowTaskCfg bit Показывать в условиях задач информацию из task.cfg
CanGetMathTest bit Пользователь может взять математичесткий тест (тот где его решение неверно)
CanGetStrangerLog smallint Пользователь может взять чужой тест
LoginUser varchar(20) Имя пользователя
Control bit Проверка
ForumID int Код индикатора форума
AwardType int Тип решения
AutoLoadTask bit Автоматическая загрузка вопроса
HideNonCompetitionTasks
bit Скрыть не конкурсные задачи
CanGetOnlyOddTest int Только случайные тесты
23
s
WasCopiedFromCourseID
int Был скопирован индикатор курса
HrefStatForDay varchar(1024) Статистика за день
SrcTasksRoot int Задачи root
ForbidToEndCompetition
bit Запрет на окончание курса
CanGetLastTest int Можно получить последний тест
ShowNumberAcceptedSolutions
bit Показать выбранные решения
ShowTruancy bit Показывать прогулы
UrlToFirstTruancyForumMessage
varchar(255) Сообщение о первом кто прошёл курс
Таблица 3.2.2 – Дерево задач (TaskTrees)
Атрибут Тип Назначение
ID int Уникальный идентификатор узла
Deep int Вложенность узла
Num int Номер узла в порядке обхода
Title varchar(100) Название задачи на рус
ETitle varchar(100) Название задачи на анг
TaskID int Код задачи
CostFactor
float Фактор затрат задачи
Attribute smallint Свойство задачи
ParentID int Исходный код задачи
Таблица 3.2.3 – Информация по типам задач (TaskTypes)
Атрибут Тип Назначение
ID int Уникальный идентификатор типа задачи
Name varchar(50) Имя типа задачи
MaxChekingTime
int Максимальное время проверки задачи
24
Automatic bit Подлежит ли данный тип автоматическому тестированию
Checker varchar(200) Определить тип в шахматном порядке
Таблица 3.2.4 – Информация по задачам (Tasks)
Атрибут Тип Назначение
ID int Уникальный идентификатор задачи
Name varchar(100) Название задачи на рус
Ename varchar(100) Название задачи на анг
Author varchar(150) Автор задачи
TipeID smallint Код типа задачи
Date datetime Дата создания задачи
Source varchar(50) Исходная задача
Cost int Ценна в баллах за задачу
Description text Описание задачи на рус
Edescription text Описание задачи на анг
NoTests bit Тестировалась ли задача
NoShowInOutFile bit Не показывать входной и выходной файлы
TopicID int Код названия задачи
AuthorID int Код автора задачи
NumberAcceptedSolutions
int Число принятых решений задачи
Таблица 3.2.5 – Даты открытия и закрытия задач (TasksHiLoDate)
Атрибут Тип Назначение
CourseID int Код курса
NodeID int Код узла
HiLevelDate datetime Максимальное врема открытия/закрытия задачи
LoLevelDate
datetime Минимальное врема открытия/закрытия задачи
25
Таблица 3.2.6 – Допустимые типы решений для каждого типа задач (TaskSubTypes)
Название поля
Тип Назначение
ID Int Уникальный идентификатор типа решения
Name varchar(50) Название типа решения
TaskType Int Тип решения задачи
Additional varchar(50) Дополнительный тип
Таблица 3.2.7 – Допустимые типы решений для курса (CoursesSubTypes)
Название поля
Тип Назначение
CourseID Int Код курса
SubTypeID Int Типа решения
В таблице (Theory) храниться информация про всю теорию
Таблица 3.2.8 – Информация по теории (Theory)
Название поля
Тип Назначение
ID Int Уникальный идентификатор
Name varchar(200) Название теории
eName varchar(200) Название теории на ангийском языке(в настоящий момент не ипользуется)
Link Int Ссылка на другой идентификатор
Add varchar(50) Добавка к ссылке(используется если Link<>0)
Что такое ссылка на другой идентификатор
В некоторых случаях возникает следующая проблема: файл с теорией один, а ссылок на файл несколько (отличаются они только добавкой #[число]).
В таких случаях уникальных идентификаторов под этот файл будет выделено несколько, а сам файл будет перенесен только в один из каталогов ID.th(ID - это один из выделенных идентификаторов). Для остальных идентификаторов в таблице будет храниться ссылка на ID (т.е. Link=ID), а в поле Add будет храниться, что именно необходимо добавить к ссылке на файл при обращении к нему. Например, есть две ссылки: index.htm и index.htm#1. Запись в таблице для этих файлов может выглядеть так:
26
ID
Name EName Link
Add
1 Теория 1 NULL 0 NULL
2 Теория 2 NULL 1 #1
В таблице (TheoryTrees) храниться дерево всей теории
Таблица 3.2.9 – Информация о дереве теории (TheoryTrees)
Название поля
Тип Назначение
ID Int Уникальный идентификатор
Deep Int Глубина в дереве
Num Int Порыдковый номер в дереве
Title Varchar(100) Название узла (если TheoryID<>0, то к названию прибавляется название теории)
eTitle Varchar(100)
TheoryID Int Идентификатор теории(0 - если это просто узел дерева, а не ссылка на теорию)
Link Varchar(100) Не используется
В этой таблице специально создан узел с Deep=-1 и Num?2000000000. Это самый последний узел в дереве. Значение Num не должно стать меньше 2*109
Для каждого курса в таблице Courses храниться корень дерева теории (для каждого свой). Иногда разные курсы могут ссылаться на один и тот же узел. В этом случае, если изменить поддерево этого узла, то дерево теории измениться во всех курсах, которые ссылались на него.
3.3 Таблицы Справочники
Таблица 3.3.1 – Справочник стран (Countries)
Название поля Тип Назначение
ID Int Уникальный идентификатор станы
27
CountryName varchar(50) Название страны
CountryCode varchar(50) Код или краткое обозначение страны на русс
ECountryCode varchar(255) Код или краткое обозначение страны на англ
isChecked bit Проверка (существует ли)
Таблица 3.3.2 – Справочник городов (Cities)
Название поля Тип Назначение
ID Int Уникальный идентификатор города
CityName varchar(50) Название города на русс
EcityCode varchar(255) Название города на англ
CountryID int Код страны
isChecked bit Проверка (существует ли)
RegionID int Код района
Таблица 3.3.3 – Справочник районов (Regions)
Название поля Тип Назначение
ID Int Уникальный идентификатор района
RegionName varchar(50) Название района на русс
EregionName varchar(50) Название района на англ
Таблица 3.3.4 – Справочник классов и групп (Forms)
Название поля Тип Назначение
ID Int Уникальный идентификатор класс/курса
FormName Varchar(50) Название класса по-русски
EFormName Varchar(50) Английское название
BreifFormName Varchar(50) Краткое название по-русски
EBreifFormNam Varchar(50) Краткое английское название28
e
NextFormID Int Код следующего класса/курса
PrevFormID Int Код предыдущего класса/курса
Таблица 3.3.5 – Справочник областей (SubRegions)
Название поля Тип Назначение
ID Int Уникальный идентификатор области
SubRegionName varchar(50) Название области на русс
EsubregionName varchar(50) Название области на англ
Таблица 3.3.6 – Справочник соответствий между родительскими и дочерними таблицами (PupilInfoField)
Название поля Тип Назначение
ID Int Уникальный код записи
fieldName Varchar(50) Название поля в таблице Pupils или Teams, для которого необходимо выполнить связывание при отображении результатов
rusPupilFieldName Varchar(50) Названия полей на русском
engPupilFieldName Varchar(50) Названия полей на англ
rusTeamFieldName Varchar(50) Названия полей на русском
engTeamFieldName
Varchar(50) Названия полей на англ
rusTitle Varchar(50) Названия полей на русском
engTitle Varchar(50) Названия полей на англ
dictionaryTable Varchar(50) Имя таблицы в которой хранятся «связанные» поля
pkFieldName Varchar(50) Первичный ключ в таблице dictionaryTable
fkFieldName Varchar(50) Имя поля из таблицы dictionaryTable, которое будет отображено вместо поля fieldName
isHistorical Bit Требуется ли учитывать историю изменения этого поля, в зависимости от даты соревнования
29
3.4 Таблицы связанные с тестированием
Таблица 3.4.1 – Основной протокол тестирования (TestingLog)
Название поля Тип Назначение
ID Int Уникальный идентификатор
QueueID Int Уникальный идентификатор решения в очереди
SubmitTime DateTime Время отправки на тестирование
CourseID Int Уникальный идентификатор курса
NodeID Int Идентификатор узла задачи
UserID Int Уникальный идентификатор пользователя
Result Float Текущий результат тестирования
SolutionFileName Varchar(255) Имя файла
PhysicalName Varchar(1000) Имя файла
CheckerName Int Имя пользователя, который тестировал. См. Checkers
SolutionFileOldName
Varchar(255) Имя файла, который отсылал пользователь. Используется для отображения в протоколе
DBS__ID int Код DBS
Comment__ Varchar(400) Комментарий на русс
Ecomment__ Varchar(400) Комментарий на англ
ProcessedTime__ datetime Время обработки
CountingResult bit Вычисление результата
Таблица 3.4.2 – Сообщения из протокола тестирования (TLMessages)
Название поля Тип Назначение
ID Int Уникальный идентификатор сообщения
Message Varchar(8000) Сообщение на русс
Emessage Varchar(8000) Сообщение на англ
Message_hash Хеш сообщений на русс
Emessage_hash Хеш сообщений на англ30
Таблица 3.4.3 – Очередь на тестирование (TestingQueue)
Название поля Тип Назначение
ID Int Уникальный идентификатор решения в очереди
UserID Int Уникальный идентификатор пользователя
CourseID Int Уникальный идентификатор курса
NodeID Int Идентификатор узла задачи
SolutionFileExt Varchar(10) Расширение файла
SubmitTime DateTime Время отправки на тестирование
CurTaskType Int Тип задачи
Result Float Текущий результат тестирования
StartTesting DateTime Время начала тестирования
SolutionFileName Varchar(255) Имя файла
Delayed Bit 1-если решение заморожено
TestBy Int ID Дельты, которая взяла тестировать. ID берется из Checkers
ContinueFromQID Int Продолжение тестирования по коду
SolutionFileOldName
Varchar(255) Имя файла, который отсылал пользователь. Используется для отображения в протоколе
ManuallyDelayed Bit Тестирование вручную
Priority int Приоритет тестирования
mode Bit Модификация теста
В таблице регистрируются все, могущие проверять отсылки на тестирование.В зависимости от поля Automatic, проверяющим может быть либо человек (ручная проверка), либо программа (т.е. Дельта).
Таблица 3.4.4 – Информация о проверяющих (Checkers)
Название поля Тип Назначение
ID Int Уникальный идентификатор
UserName Varchar(50) Имя пользователя
DisplayName Varchar(50) Имя для ототбражения (например, в
31
протоколе)
Password Varchar(50) Пароль
Automatic Bit Программа/Человек
IP char Информация для перезапуска (имя компьютера Дельты)
ActAsAny Bit Берет ли задания для ЛЮБАЯ
LastContact DateTime Время последнего обращения к БД (для программ)
LastRestart DateTime Время последнего перезапуска (для программ)
AutoRestartable Bit Подлежит ли автоперезапуску (для программ)
factor float Множитель, на который множится таймлимит из task.cfg при тестировании этой Дельтой.
Status4restarter int Статус для финала теста
Path4specialrestart varchar(255) Путь для специального перезапуска
RestartTimeoutSec
int Перезапустить (тайм аут в секундах)
HardwareInfo varchar(max) Информация об оборудовании
Таблица 3.4.5 – Связь между о проверяющими и типами задач (CheckersTypes)
Название поля Тип Назначение
CheckerID Int Код checkers
TypeID Int Код типа задач
ExcludeExtensions
varchar(256) Исключённые расширешия
Таблица 3.4.6 – Протокол тестирования по шагам (DetailBySteps)
Название поля
Тип Назначение
ID Int Уникальный идентификатор тестирования по шагам
QueueID Int Код решения в очереди
TaskTypeID int Код типа задачи
Result float Результат тестирования
MessageID Int Код сообщения
32
ProcessedTime datetime Время процесса тестирования
CheckerID Int Код chekers
FailedTestNo Int Проверка были ли ошибки во время теста
Таблица 3.4.7 – Протокол тестирования по тестам (DetailByTests)
Название поля
Тип Назначение
StepID int Уникальный идентификатор тестирования по тестам
TestNo int Тестировалась ли задача
Result float Результат протокола тестирования
MessageID int Код собщения
WorkTime int Время работы протокола тестирования
ExitCode int Исходный код протокола тестирования
Таблица 3.4.8 – Информация по составным типам задач (CombineTypes)
Название поля Тип Назначение
TypeID int Код типа задач
CombineTypeID
int Код комбинированного типа задач
Num smallint Номер составной задачи
Таблица 3.4.9 – Таблица для временного хранения результатов тестирования (TemporaryDBS)
Название поля Тип Назначение
QueueID Int Код решения в очереди
TaskTypeID int Код типа задачи
Result float Результат тестирования
MessageID Int Код сообщения
ProcessedTime datetime
Время процесса тестирования
CheckerID Int Код chekers
FailedTestNo Int Проверка были ли ошибки во время теста
33
Таблица 3.4.10 – Таблица для временного хранения результатов тестирования (TemporaryDBT)
Название поля
Тип Назначение
QueueID int Код решения в очереди
TypeID int Код типа задач
TestNo int Тестировалась ли задача
Result float Результат протокола тестирования
MessageID int Код собщения
WorkTime int Время работы протокола тестирования
ExitCode int Исходный код протокола тестирования
Для правильной регистрации новой Дельты нужно добавить запись в данную таблицу, а также прописать типы задач, которые она умеет тестировать в таблице CheckersTypes.
Рекомендуется использовать для создания новых дельт хранимую процедуру spCreateDelTA, которая проделывает эти процедуры автоматически.
3.5 Таблицы, содержащие статистику результатов тестирования
Таблица 3.5.1 – Описание таблиц результатов (ResultTables)
Атрибут Тип Описание
ID Int Уникальный идентификатор описания таблиц результатов
CourseID Int Идентификатор курса
VGroupID Int Идентификатор гуппы
HGroupID Int Идентификатор гуппы
Title varchar(100)
Название таблицы результатов на русс
ETitle varchar(100)
Название таблицы результатов на англ
AddInfoID Int Идентификатор добавления информации
ParentID Int Идентификатор родительской таблицы
34
ProsessedLogID Int Идентификатор отработанного журнала
OpenDate datetime Дата получения результата
CollapseDate datetime Дата уничтожения результата
TasksRoot Int Корень задачи
URL varchar(500)
Адресс описания результата на русс
EURL varchar(500)
Адресс описания результата на англ
Таблица 3.5.2 – Информация о группировке таблиц результатов (ResultGrids)
Атрибут Тип Описание
ID Int Уникальный идентификатор группировки таблиц результатов
Title varchar(255) Название груп таблицы результатов на русс
ETitle varchar(255) Название груп таблицы результатов на англ
VGroupID Int Идентификатор гуппы
HGroupID Int Идентификатор гуппы
DefVGroupID
Int Идентификатор защищённой гуппы
DefHGroupID
Int Идентификатор защищённой гуппы
Таблица 3.5.3 – Шапки таблиц результатов (ResultHeaders)
Атрибут Тип Описание
CourseID Int Идентификатор курса
NodeID Int Идентификатор узла
Line smallint Линия таблицы результатов
Num smallint Номер таблицы результатов
Width smallint Ширина таблицы результатов
Title varchar(100) Название шапки таблиц результатов на русс
ETitle varchar(100) Название шапки таблиц результатов на англ
Height int Высота таблицы результатов
35
OpenDate datetime Дата создания шапки результата
CollapseDate
datetime Дата изминения\удаления шапки результата
DeepView Int Глубина таблицы результатов
ParentID Int Идентификатор родительской таблицы
Attribue smallint Свойсвто шапки
Таблица 3.5.4 – Места участников из таблиц результатов (ResultPlaces)
Атрибут Тип Описание
TableID Int Идентификатор таблицы
UserID Int Идентификатор пользователя
Place Int Место участника из таблицы результатов
PlaceCout
Int Среднее место участника из таблицы резултатов
Таблица 3.5.5 – Содержимое таблиц результатов (ResultTableContent)
Атрибут Тип Описание
CourseID
Int Идентификатор курса
UserID Int Идентификатор пользователя
NodeID Int Идентификатор узла
Score float Результат
3.6 Описание таблиц, используемых для хранения результатов соревновани
Таблица (dl2ResultsCell) используется для хранения информации по результатам соревнований. Каждая запись в таблице описывает одну клеточку таблицы результатов. Для указания, какие данные хранятся в данной клеточке (ячейке) используется поле "type".
Таблица 3.6.1 – Описание таблиц результатов (dl2ResultCell)
Название Тип Назначение
36
поля
headerItemId Int Код соревнования из таблицы dl2ResultsHeaderItem
userId Int Код участника соревнования (Pupils/Teams)
[value] float Значение в ячейке рузльтата
typeId int Тип ячейки (dl2ResultsCellType)
ts timestamp "Слепок" времени внесения результатов
Таблица 3.6.2 – Справочник типов ячеек (dl2ResultsCellType)
Название поля
Тип Назначение
ID Int Уникальный идентификатор ячейки
rusTitle Varchar(20) Название ячейки по-русски, которое будет использоваться при выводе ячейки данного в таблице результатов
engTitle Varchar(20) Аналогично rusTitle
rusDescription Varchar(255) Кометарий к названию ячейки по-русски
engDescription Varchar(255) Комментарий к названии ячейки по-английски
leafOnly Bit Битовый флаг, указывает, может ли данная ячейка быть итоговой или же она является только промежуточной. (???)
descOrder bit Указывает на порядок сортировки по данному полю (прямой/обратный)
className Varchar(255) Имя класса, который отвечает за преобразование и вывод значения, находящегося в ячейке.
Таблица (dl2ResultsHeaderMapping) используется для связывания между собой элементов шапки соревнований из таблицы Courses. Значения полей openDate и coolapseDate должны совпадать с датами открытия закрытия курса из таблицы Courses или же, если есть ограничения на даты открытия (часть задач открывается в один день, часть в другой), тогда даты должны совпадать с датами из таблицы TasksHiLoDates.
Таблица 3.6.3 – Связь элементов шапки из таблицы (dl2ResultsHeaderMapping)
Название поля
Тип Назначение
37
headerItemId Int Уникальный идентификатор элемента шапки
courseId Int Код соревнования, с которым свызан элемент шапки
nodeId int Код узла в дереве задач.
openDate datetime Дата начала соревнования
collapseDate datetime Дата завершения соревнования
Таблица (dl2ResultsHeaderItem) используется для хранения шапки таблиц результатов. Шапка хранится в виде иерархической структуры.
Таблица 3.6.4 – Хранение шапки таблиц результатов (dl2ResultsHeaderItem)
Название поля
Тип Назначение
itemId Int Уникальный идентификатор элемента шапки
parentItemId Int Код элемента-родителя
childIndex int Номер элемента в порядке его отображения в таблице результатов
rusTitle Varchar(255) Название элемента шапки по-русски
engTitle Varchar(255) Название элемента шапки по-английски
tmp Int Значение до конца не выяснено
tmpParent Int Используется для отладки
deep Int Уровень вложенности элемента шапки (глубина)
tmp2 Int Используется для отладки
RootItemID Int Код корневого элемента в шапке
3.7 Таблицы для протоколирования событий
Таблица 3.7.1 – Протокол работы с системой (EventLog)
Атрибут Тип Описание
ID Int Уникальный идентификатор протокола работы с
38
системой
DateTime datetime Время работы с системой
OwnerID Int Идентификатор источника
MessageID
Int Идентификатор сообщения
UserID Int Иидентификатор пользователя
Details varchar(255) Детали протокола работы
IP char(15) Адресс работы протокола
Account char(20) Отчёт работы протокола
Таблица 3.7.2 – Справочник сообщений (EventMessages)
Атрибут Тип Описание
ID Int Уникальный идентификатор справочника сообщений
MessageText
varchar(255) Текст сообщения справочника
EventType smallint Тип события
Таблица 3.7.3 – Справочник источников (EventOwners)
Атрибут
Тип Описание
ID Int Уникальный идентификатор источника
Name varchar(50) Имя источника справочника
Таблица 3.7.4 – Справочник типов сообщений (EventTypes)
Атрибут Тип Описание
ID Int Уникальный идентификатор типа сообщений справочника
EventType
varchar(50) Тип события
Таблица 3.7.5 – Протокол подписки на курсы (SubscriptionLog)
Атрибут Тип Описание
ID Int Уникальный идентификатор протокола подписки на курсы
39
DateTime datetime Время подписки
UserID Int Иидентификатор пользователя
CourseID Int Идентификатор курса
Subscribe bit Подписан ли пользователь
PublicScores
bit Показать оценку
3.8 Остальные таблицы
Таблица 3.8.1 – Внутренняя почта DLB (DlMail)
Название поля
Тип Назначение
ID int Уникальный идентификатор внутренней почты DL
UserID int Идентификатор пользователя
Message varchar(8000) Текст сообщения
FromUser int Отправитель сообщения
Subj varchar(150) Тема сообщения
Type tinyint Тип сообщения
CourseID int Идентификтор курса
NodeID int Идентификтор узла
TheoryNodeID int Идентификтор теоритического узла
ForumID int Идентификтор дерева форумов
ForumMailID int Идентификтор сообщений форума
date datetime дата отправлки\получения
read bit Прочитано ли сообщение
know bit Уведомлён ли пользователь о сообщении
Таблица 3.8.2 – Основная статистика по системе (DlStatistic)
Название поля Тип Назначение
Year int Статистика за год40
Week int Статистика за неделю
pwUsersJoined int Присоединившийся пользователь
pwSolutionsProcessed int Обработанные решения
pwLogins int Входившие в систему
pwMessagesProcessed int Обработанные сообщения
pwFailedLogins int Недопустимые логины
tUsersJoined int Присоединившийся пользователь
tSolutionsProcessed int Обработанные решения
Таблица (Properties) используется для хранения одиночных параметров работы DL.
Таблица 3.8.3 – Основная статистика по системе (Properties)
Название поля Тип Назначение
PropertyName varchar(50) Имя параметра
PropertyValue varchar(255)
Значение параметра
PropertyIntValue int Целочисленное значение
Назначение конкретных параметров:
Параметр Назначение
uncArchives, uncQueue, uncTasks, uncTested, uncTheory
Сетевые пути к каталогам тестов задач, очереди отсылок, условий задач, протестированных решений и теории, соответственно. Эти параметры используются дельтами.
ProcessedLogID, java.ProcessedLogId
ID последней записи в протоколе тестирования, которая была обработана и внесена в таблицы результатов.
EnableRecheckBadSol Разрешено ли тестировать решения, которые по крайней мере один раз "повесили" тестирующую программу. См. повторное тестирование.
JavaExec Путь к javaw.exe
JavaClassPath Путь к dl2-web\WEB-INF\classes
41
Таблица 3.8.4 – Текущие сессии пользователей (Sessions)
Название поля
Тип Назначение
ID uniqueidentifier
Уникальный идентификатор текущей сессии
UserID int Идентификатор пользователя
LoginTime datetime Время входа в систему
CourseID int Идентификтор курса
NodeID int Идентификтор узла
TheoryNodeID int Идентификтор теоритического узла
LanguageID smallint Идентификтор языка
LastContact datetime Последняя связь с сессией
paramS int Параметры сессии
IP varchar(15) Адресс текущей сессии
Statistic varchar(70) Статистика данной сессии
LoginUser varchar(20) Имя пользователя под которым работает сессия
Таблица 3.8.5 – Дерево форумов (Forums)
Название поля
Тип Назначение
ID int Уникальный идентификатор форума
ReplyTo int Ссылка на корневой форум
Name varchar(50) Имя форума на русс
EName varchar(50) Имя форума на англ
Description varchar(150) Описание на русс
EDescription varchar(150) Описание на англ
CreateDate datetime Дата создания форума
CourseID int Идентификатор курса
NodeID int Идентификатор узла
TeoryNode int Идентификатор теоретического узла
Таблица 3.8.6 – Сообщения форума (ForumMessages)
42
Название поля
Тип Назначение
ID int Уникальный идентификатор сообщения форума
ReplyTo int Ссылка на корневой форум
Subject varchar(50) Тема сообщения на русс
ESubject varchar(50) Тема сообщения на англ
fromUser int Сообщение от пользователя
toUser int Сообщение для пользователя
Prioriry int Приоритет сообщения
Text varchar(8000) Текст сообщения на русс
EText varchar(8000) Текст сообщения на англ
ForumID int Идентификатор форума
CreateDate datetime Дата создания\отправки сообщения
Всю информацию по хранимым процедурам базы данных DL.GSU.BY, можно узнать здесь - http://confluence.newit.gsu.by/pages/viewpage.action?pageId=32866348
4. Разработка интерактивного справочника
43
4.1 Работа с базами данных DL.GSU.BY
Для работы с базами данных потребудется виртуальная машина DL на которой уже установлены все необходимые программы для работы с базами данных, инструкцю по установке можно найти по ссылке : http://confluence.newit.gsu.by/display/dldev/DLVM
Запускаем установленую виртуальную машину с помощью VMware Workstation (рисунок 3)
Рисунко 3 – Запущеная виртульаня машина DL
Нажимаем Пуск (Start) и открываем SQL Server Management Studio. Подтверждаем администратора и пароль (рисунок 4).
44
Рисунок 4 – Окно подключения SQL Server Management Studio
Переходим по пути DL\Databases\dldb\Tables и получаем список таблиц базы данных (рисунок 5)
Рисунок 5 – Список таблиц базы данных dldb
4.2 Создание процедур для работы с табилцами базы данных
Эти процедуры упрощают работу с табилцами базы данных, тем самым не нужно открывать каждую таблицу и вручную добавлять новую информацию.
Первая процедура (sp_set_table_description) предназначена для добавления описания в таблицах базы данных. В параметрах процедуры указываются директория (откуда берётся информация), название таблицы и следом её описание (рисунок 6).
45
Рисунок 6 – Добавление описания таблицы
Вторая процедура (sp_set_column_description) предназначена для обновления и добавления описания полей таблиц. В параметрах указываются директория, название таблицы, обновляемое поле, имя обновляемого поля. Если имя поля уже существует, то процедура меняет на новое.
Для добавления описания таблицы или поля, нужно выполнить SQL запрос и указанные поля таблицы будут обновлены (рисунок 7).
Рисунок 7 – Обновление полей в таблице Courses
46
Рисунок 8 – Результат добавление описания поля Name
4.3 Выбор и обоснование способа создания справочника
Целью данного дипломного проекта является разработка интерактивного справочника по базам данных DL.GSU.BY.
За основу справочника был взят сайт http://confluence.newit.gsu.by , который в свою очередь работает по принципу самодокументирвоания Wiki (рисунок 9).
Любой студент или пользователь сайта, может найти нужную ему информацию имеющуюся на сайте, а так же просмотреть историю изменений той или иной страницы сайта.
47
Рисунок 9 – Общий вид сайта
4.4 Структура интерактивного справочника
Структура данного справочника нелинейная, с небольшим количеством разветвлений и основываться на «ручной» навигации. В справочнике присутствуют ссылки на информацию, расположенную в самом справочнике, и на другие ресурсы, срабатывающие, когда пользователь выполняет клик мышью на соответствующем объекте.
Интерфейс справочника весьма простой. Сверху располагается постоянно доступное меню, в котором можно просмотреть страницу, редактировать страницу и просмотреть истоию изминения страницы (рисунок 10).
Рисунок 10 – Меню страницы
48
Рисунок 11 – Просмотр измимений старницы
В любой момент можно вернуться к предыдущей версии страницы сохранив её (рисунок 11). Такая структура является интуитивно понятной и приятной для пользователя.
Все данные из справочника внесены на рабочую машину DL, поэтому справочник соответствует данным приведённым на сайте в данном разделе : http://confluence.newit.gsu.by/display/dldev/dldb
Для того, что бы изминения были внесены на реальную машину DL, нужно обратиться к разработчикам сайта DL.GSU.BY, у которых есть доступ, предоставив все материалы и документацию для изменений.
5 Взаимодействия пользователя со справочником
Для того, что бы пользователь легко и удобно мог найти нужную ему информацию по базам данных DL.GSU.BY есть меню навигации по разделам (рисунок 12).
49
Рисунок 12 – Меню навигации справочника
Каждый раздел имеет гиперссылку на новую страницу, где расположена информация о базах данных. Внизу имеются подчинённые страницы, которые так же переадресовывают на нужную страницу справочника.
В самом низу любой страницы, можно оставлять комментарий по любым вопросам, которые связаны с данным разделом (рисунок 13).
Рисунок 13 – Добавление комментариев
Раздел «Описание таблиц и представлений» полностью соответствует данным, которые находятся по адресу DL\Databases\dldb\Tables – реальной машине DL.
Раздел «Описание хранимых процедур и функций» так же соответствует данным находящимся по адресу DL\Databases\dldb\Programmability\Stored Procedures и DL\Databases\dldb\Programmability\Functions (рисунок 14).
50
Рисунок 14 - Содержание базы данных процедур и функций
Заключение
В результате выполнения дипломной работы был реализован интерактивный справочник по базам данных DL.GSU.BY.
Было изменено и описано более пятидесяти таблиц и пяти сотент полей
51
базы данных DL.GSU.BY. Были составлены таблицы с изменёнными полями, в которых хранится информация о их назначений, так же относящимися к другим таблицам.
С помощью этих данных был создан интерактивный справочник, на базе сайта http://confluence.newit.gsu.by – где всё подробно описано.
Данный справочник разрабатывался для ознакомления и обучения использования такого объекта базы данных как таблицы и функции. В результате проделанной работы были созданы процедуры по добавлению описания готовых таблиц и полей которые упростят работу с базой данных.
Были выполнены поставленные задачи:− изучены таблицы и функции базы данных DL.GSU.BY;− реализованы скрипты по добавлению описания таблиц и полей;− создан интерактивный справочник со всей актуальной информацией;− написан отчет о проделанной работе.
Список использованных источников
1 Грубер, М. Понимание SQL / М. Грубер; пер. с англ. В.Н. Лебедева.; под ред. В.Н. Булычева. Москва: 1993. – 518с.: ил.
2 Грофф , Р. SQL. Полное руководство / Р. Грофф, Н. Вайнберг, Дж.Оппель; пер. с англ.; под ред. И. В. Красиков. – И.: Вильямс, 2016. – 960 с.
52
3 Титтел, Э. HTML, XHTML и CSS / Э. Титтел. – М.: Диалектика, 2011. – 400 с.
4 Фримен, Э. Изучаем HTML, XHTML и CSS / Э. Фримен. – П.: Питер, 2010. – 636 с.
5 Шафер, С. HTML, XHTML и CSS. Библия пользователя издание / С. Шафер. – М.: Диалектика, 2010. – 656 с.
6 Муссиано, Ч. HTML и XHTML. Подробное руководство / Ч. Муссиано. – И.: Символ-Плюс, 2008. – 467 с.
7 Мейер, А. CSS. Каскадные таблицы стилей / А. Майер. – И.: Символ-Плюс, 2008. – 511 с.
8 Комолова, Н. Самоучитель по HTML / Н. Комолова. – И.: Питер, 2011. – 370 с.
9 Документация сайта dl.gsu.by [Электронныйресурс] // URL: http :// dl . gsu . by / doc / dev / db / db . htm . – Дата обращения: 22.04.2017.
10 Google – поисковая система. [Электронный ресурс]. – Режим доступа: http :// google . com – Дата доступа: 15.05.2017.
Приложение АКод процедур (описание полей и таблиц)
CREATE PROCEDURE sp_set_column_description ( @schema varchar(256), @table varchar(256), @column varchar(256), @description varchar(256))
53
asBEGIN if exists ( select p.* from sys.extended_properties p, sys.columns c, sys.tables t, sys.schemas s where t.schema_id = s.schema_id and c.object_id = t.object_id and p.major_id = t.object_id and p.minor_id = c.column_id and p.name = N'MS_Description' and s.name = @schema and t.name = @table and c.name = @column ) exec sys.sp_updateextendedproperty @level0type=N'SCHEMA', @level0name=@schema, @level1type=N'TABLE', @level1name=@table, @level2type=N'COLUMN', @level2name=@column, @name=N'MS_Description', @value=@description else exec sys.sp_addextendedproperty @level0type=N'SCHEMA', @level0name=@schema, @level1type=N'TABLE', @level1name=@table, @level2type=N'COLUMN', @level2name=@column, @name=N'MS_Description', @value=@descriptionEND GO
CREATE PROCEDURE sp_set_table_description ( @schema varchar(256), @table varchar(256), @description varchar(256)) asBEGIN if exists ( select p.* from sys.extended_properties p, sys.tables t, sys.schemas s where t.schema_id = s.schema_id and c.object_id = t.object_id and p.major_id = t.object_id and p.minor_id = 0 and p.name = N'MS_Description' and s.name = @schema and t.name = @table ) exec sys.sp_updateextendedproperty @level0type=N'SCHEMA', @level0name=@schema,
54
@level1type=N'TABLE', @level1name=@table, @name=N'MS_Description', @value=@description else exec sys.sp_addextendedproperty @level0type=N'SCHEMA', @level0name=@schema, @level1type=N'TABLE', @level1name=@table, @name=N'MS_Description', @value=@descriptionENDGO
Приложение BКод запроса (запрос на обновление таблицы)
USE [dldb]
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'ID', N'Уникальный идентификатор
55
пользователя'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Last', N'Фамилия'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'First', N'Имя'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Middle', N'Отчество'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'ELast', N'Surname'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'EFirst', N'Name'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'EMiddle', N'Middle name'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Country', N'Идентификатор страны пользователя из справочника стран'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'City', N'Город'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Region', N'Область'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'SubRegion', N'Район'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'School', N'Место учебы'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Form', N'Класс'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Address', N'Адрес'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Birth', N'Дата рождения'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Password', N'Пароль для входа в систему DL'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Email', N'Электронный адрес почты'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Phone', N'Телефон'
56
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Joined', N'Дата/время регистрации'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Question', N'<Секретный> вопрос, используется если пользователь забыл пароль'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Answer', N'<Секретный> ответ'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Subscribed', N'Подписан ли пользователь на список рассылки'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'PublicInfo', N'Публиковать личную информацию на сайте'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'PublicScores', N'Публиковать результаты успеваемости'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'AdditionalInfo', N'Дополнительная информация'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Teacher', N'Учитель'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Nick', N'Альтернатива для входа на сервер (не используется)'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'GroupMaskId', N'Идентификатор маски группы'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'GroupId', N'Идентификатор группы'
GOEXEC sp_set_column_description 'dbo', 'Pupils', 'Groupname', N'Имя группы на русском языке'
GOEXEC sp_set_table_description 'dbo', 'Pupils', N'Информация по пользователям'
57