Автор: Пользователь скрыл имя, 15 Сентября 2013 в 14:28, курсовая работа
Рассмотрим возможности прогнозирования с позиций логики. Для исследования любого явления требуется знать: исходные, конкретные (например, исходные условия существования некоторого процесса); конечные, конкретные условия (например, результаты исследуемого процесса); универсально верные обобщения (например, фундаментальные законы). Комбинация набора обобщений с известными исходными условиями дает прогноз. Комбинируя прогноз с известными конечными условиями, получаем объяснения (или результаты анализа). Сопоставление известных исходных условий с известными конечными условиями дает возможность провести тестирование соответствующих обобщений. Легко заметить, что существует симметрия между прогнозами и объяснениями. Эти понятия можно логически переставить местами.
Связь - это некоторая ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собою.
При разработке ER-моделей мы должны получить следующую информацию о предметной области:
- список сущностей предметной области;
- список атрибутов сущностей;
- описание взаимосвязей между сущностями.
ER-диаграммы удобны тем, что процесс выделения сущностей, атрибутов и связей является итерационным. Разработав первый приближенный вариант диаграмм, мы уточняем их, опрашивая экспертов предметной области. При этом документацией, в которой фиксируются результаты бесед, являются сами ER-диаграммы.
1.3.2 Выбор первичного ключа
Хорошая модель и правильный проект базы данных формируют основу информационной системы. Построение слоя данных - часто первый критичный шаг в направлении создания новой системы, который правомерно требует внимания к деталям и тщательного планирования. База данных, как и любая компьютерная система, является моделью небольшой части реального мира. И, как любая модель, это - узкое представление, которое значительно упрощает сложность реальной вещи. Современные системы баз данных основываются на реляционной модели хранения и извлечения данных.
В проектировании базы данных,
в качестве первичного ключа,
принято использовать
Существует ряд требований, которым должен удовлетворять первичный ключ:
- уникальные значения: первичный ключ должен уникально
идентифицировать каждую
- неинтеллектуальный: первичный ключ не должен иметь смыслового содержания.
- неизменяемость во времени: значение первичного ключа никогда не должно меняться;
- одноатрибутность: первичный ключ должен состоять из минимально возможного числа атрибутов;
- числовой: легче управлять уникальными значениями, если они являются числовыми.
Как основа многих информационных систем, проект базы данных должен тщательно планироваться и должным образом реализовываться. Выбор правильного первичного ключа - критический момент в моделировании реляционных данных. Если возможно, сущности должны иметь уникальный идентификатор, который имеет смысл, а не просто некое последовательное целое число.
1.3.3 Анализ целостности реляционных данных
В этой части моделирования данных
определяются два ограничения, которые
должны выполняться в любой
- целостность сущностей;
- целостность внешних ключей.
Так как потенциальные ключи
фактически служат
Так как внешние ключи фактически служат ссылками на кортежи в другом (или в том же самом) отношении, то эти ссылки не должны указывать на несуществующие объекты. Это определяет следующее правило целостности внешних ключей: внешние ключи не должны быть несогласованными, т.е. для каждого значения внешнего ключа должно существовать соответствующее значение первичного ключа в родительском отношении.
1.4 Сравнение Borland InterBase 4.x, Sybase SQL Server и Microsoft SQL Server
1.4.1 Сравнение по механизму блокировок
Для того, чтобы гарантировать целостность данных, архитектура SQL Server использует механизм блокировок страниц данных. Страница данных это набор записей, хранимых в некоторой области жесткого диска на сервере. Все страницы имеют один и тот-же размер, который определяется конфигурацией сервера и базы данных. В зависимости от длины записей и размера страницы, страница может содержать определенное количество записей. Записи в большинстве случаев добавляются в конец таблицы. Базовый размер страницы в SQL Server равен 2K, и это является минимальной единицей блокировки.
Индексы SQL Server блокируются точно так-же, как и страницы данных соответствующих таблиц, однако эффект блокировки страницы индекса значительно шире.
Целостностное представление базы данных иногда требует уровня изоляции "воспроизводимое чтение". "Воспроизводимое чтение" гарантирует неизменность видимых данных на время действия транзакции.
InterBase обеспечивает оптимистические
блокировки при помощи
1.4.2 Сравнение по механизму двухфазного подтверждения транзакций
Это механизм, который применяет
к изменениям в обоих базах
данных свойства ACID. Двухфазное подтверждение
транзакций имеет две
Atomicity (атомарность) - "все или ничего". Либо вся транзакция завершается, либо ни одна из ее частей. Если транзакция не может быть завершена, то все операции, произведенные внутри транзакции, отменяются.
Consistency (целостность) - Транзакция
должна переводить базу данных
из одного целостного
Isolation (изоляция, изолированность) - Поскольку
может возникать множество
Durability (прочность)- Изменения, подтвержденные транзакцией, обязаны вступить в силу.
Архитектура SQL Server позволяет программировать 2PC используя Координатор Распределенных Транзакций (Microsoft Distributed Transaction Coordinator [MSDTC]). MSDTC требует чтобы разработчик создавал объекты транзакций используя OLE. Если меняется приложение, то код 2PC должен быть повторно протестирован и сопровождаться все время жизни приложения. При этом сопровождаться должны не только клиентское приложение и база данных, но и объекты MSDTC также должны сопровождаться и координироваться с остальными частями системы. Это ухудшает переносимость, и требует дополнительных затрат на разработку и сопровождение.
InterBase обеспечивает автоматическую
обработку 2PC в соответствии со
всеми требованиями ACID без дополнительного
программирования на любых
В Sybase SQL Server, разработчики должны использовать 2PC для обеспечения целостности транзакций, производимых над разными БД. В двадцатитомной документации на Sybase System 10 есть только одно упоминание 2PC. Конечно, на WEB-сервере Sybase есть некоторое количество документов, поясняющее как обработку 2PC можно писать на C , FORTRAN , Pascal и COBOL . Каждый из этих примеров содержит более чем 100 строк кода. В результате разработчикам приходится создавать сложные внешние процедуры, недокументированные Sybase, и использовать другие языки программирования вместо использования естественных возможностей RDBMS. Переход на другую платформу может потребовать перекомпиляцию или переписывание кода. Как и в случае Microsoft SQL Server, необходимо сопровождать и синхронизировать внешние (по отношению к БД) объекты, что увеличивает стоимость разработки и усложняет сопровождение.
1.5 Обзор конкурентных систем
Продукт не имеет аналогов в своей сфере, ближайшим аналогом могут считаться анализаторы вероятностей покера, однако они работают на других принципах и неприменимы в любой другой среде.
Таким образом проект является уникальным, и не имеет конкурентов с воём секторе рынка.
2. Описание методов, алгоритмов и базы данных, сравнение разных подходов в проектировании баз данных
2.1 Описание методов и алгоритмов системы
2.1.1 Маржа
Важную роль при поиске ставок с перевесом играет умение оценивать маржу или комиссию букмекерской конторы. Неформально под маржой обычно понимают ту часть принятых в качестве ставок денег, которую контора фактически оставляет себе. В качестве примера приведем классическую ситуацию, цитируемую во многих американских руководствах по ставкам на спорт. Предположим, что два игрока сделали две ставки на противоположные события по линии -110 (американский формат линий). Это означает, что они поставили 110 рублей, чтобы попытаться выиграть 100 рублей в случае успеха. То есть, контора приняла в качестве ставок 220 рублей, а выплатит в качестве выигрыша, только 110 (первоначальная ставка) + 100 (выигрыш) и только одному из игроков. То есть контора оставит себе 10 рублей из 220. Это означает, что она взяла 4.545% комиссионных. Здесь коэффициенты выплат были -110, по американскому формату представления линий, или 1.91, по европейскому, десятичному формату. Общую формулу комиссии конторы обычно дают как :
m = 1-K1*K2/(K1+K2)
Подставляя сюда K1=K2=1.91, мы получаем m = 0.0455, как и должно быть.
Что будет, если загруз, т.е. сумма ставок на каждый исход не будет равномерным. Изменится ли значение комиссии букмекерской конторы? Допустим, что второй игрок поставил не 110 рублей, а 55 рублей, чтобы выиграть 50 рублей. В этом случае контора будет каждый раз принимать 165 рублей, а вот отдавать будет в зависимости от исхода либо 210 рублей, либо 105 рублей. Поскольку мы рассматриваем равновероятные исходы, то в среднем контора будет отдавать (210+105)/2 = 157.25 и оставлять себе 165 - 157.25 = 7.25 рублей. То есть комиссия конторы будет равна 7.25/165 = 4.54% как и в предыдущем случае.
В случае, если маржа конторы положительная, означает ли это, что букмекерская контора будет всегда или хотя бы только в среднем получать прибыль. Ни то, ни другое. Положительность маржи конторы это только необходимое, но не достаточное условие. Поскольку до сих пор для определения комиссии мы рассматривали специфический вариант с равными шансами (безубыточный коэффициент равен 2), то возникает вопрос - при каких условиях верна формула комиссии контора приведенная выше. Рассмотрим это вопрос подробнее.
Контора обычно не получает прибыль на любой игре и при любом исходе. Это невозможно гарантировать с помощью положительной маржи. Да контора и не стремится обязательно выигрывать на каждой игре. Она должна выигрывать в среднем.
Если обозначить истинные вероятности исходов 1 и 2 как P1 и P2, а суммы ставок V1 и V2, то средний выигрыш конторы будет равен:
P1*(V2-(K1-1)*V1) + P2*(V1-(K2-1)*V2)
То есть, V2-(K1-1)*V1 - это проигрыш тех, кто поставил на вторую команду минус, то, что было выплачено в качестве прибыли, тем, кто поставил на первую команду. То есть, это то, что получит контора в случае, если выиграет команда 1. Аналогично. V1-(K2-1)*V2 - это проигрыш тех, кто поставил на первую команду минус, то, что было выплачено в качестве прибыли, тем, кто поставил на вторую команду. То есть, это то, что получит контора в случае, если выиграет команда 2.
Условие прибыльности конторы в среднем на двух исходах.
P1*(V2-(K1-1)*V1) + P2*(V1-(K2-1)*V2) > 0
Здесь рассматривается простейшая модель, когда коэффициенты на исходы не меняются.
Перегруппируем члены
V1*(P2-P1*(K1-1))+V2*(P1-P2*(K
Далее:
P2-P1*(K1-1) = 1-P1-P1*K1+ P1 = 1-P1*K1
P1-P2*(K2-1) = 1-P2*K2
Обозначим
m1 = 1-P1*K1
m2 = 1-P2*K2
m1 и m2 это 'частные' комиссии букмекерской конторы по каждому из исходов. Для того, чтобы их найти нужно знать истинные вероятности исходов, что практически невозможно. Предположим, что частные комиссии на оба исхода одинаковы. То есть:
m1= m2
Тогда
1-P1*K1 = 1-P2*K2
P1*K1 = P2*K2 = (1- P1)*K2
P1*(K1+ K2) = K2
P1 = K2/(K1+ K2)
Отсюда
m1= m2 = 1-P1*K1= 1-K1*K2(K1+K2)
Мы получили классическую формулу
маржи приведенную в начале раздела.
Таким образом эта формула
справедлива для любых
Для того, что бы прибыльность была при любом загрузе (то есть при любых V1 и V2) необходимо и достаточно, чтобы выполнялись два соотношения: