Вы находитесь на странице: 1из 12

Санкт-Петербургский Политехнический университет имени Петра Великого

Институт прикладной математике и механики


Кафедра «Прикладная математика»

Курсовая работа
Построение базы данных торгово-закупочной фирмы
«CriminalSearch»

Выполнила

Студентка гр. 23631/1 Панзу Л.М.

Преподаватель: к.ф.-м.н. доц. Каф. «Прикладная математика»


С.В.Крашенинников

Санкт-Петербург
2017
Оглавление
1 Задачи ......................................................................................................................................3
2 ER-Схема базы данных ..........................................................................................................3
2.1 Схемы «Сущность-связь» ..............................................................................................3
2.2 Реляционная схема..........................................................................................................4
2.2.1 Схемы и ключи алгебраических отношений ........................................................4
2.2.2 Функциональные зависимости между атрибутами ..............................................5
2.2.3 Нормализованная схема базы данных ...................................................................5
2.3 Предопределенные запросы...........................................................................................5
3 Создание базы данных ...........................................................................................................5
3.1 Создание таблиц..............................................................................................................6
3.2 Создание схемы базы данных ........................................................................................6
3.3 SQL-запросы ....................................................................................................................6
3.3.1 SQL-запросы Оформление задержанного .............................................................6
3.3.2 SQL-запросы Архив (для каждого ID м.б. насколько разных ФИО)………… 7
3.3.3 SQL-запросы Поиск по архиву…………………………………………………….7
4 Программирование внешних представлений Базовых отношений и SQL-запросов.........
4.1 Создание формы «Архив за период времени» ...............................................................
4.1.1 Поведение формы «Архив за период времени» при работе пользователя ...............
5 Программирование статистических запросов, форм и отчетов БД на их основе. ...........8
5.1 SQL-запрос «преступления по сезонам» “ CrimesInPeriod ” ......................................9
5.2 Стат. запрос «Наиболее частые преступления за период»
“MostFastCrimesInPeriod” .........................................................................................................9
5.3 Отчёт по форме на основе SQL-запроса «MostFastCrimesInPeriod»........................10
1 Задачи
Проектирование и программная реализация базы данных с темой «Картотека уголовного
розыска». Создание запросов к этой базе данных.

2 ER-Схема базы данных

2.1 схемы «сущность-связь».

Отпечат Код
No Дата
No зап. ки
записи отпечатк преступ.
соверш.
п
ов
No
паспорт
Дата а
освоб. задер
Дата ареста
ж.
Дата
Commited
суда
Приговор

Дата
заключен CrPersRec
Дата No
ия
выхода
PassNoT
ruth
Crimes Crime Person

FingerPrint

StNo CrimeDescript
FingerPrintCode

No
Patrials Фамилия
паспорта

Имя
Отчество Д. рожд. Место рожд.
Patrials

Crime Person

Commited

Crimes

2.2 Реляционная схема


2.1.1 Схемы и ключи алгебраических отношений
2.1.1 «Partials» = « частичный»
R1= « Partials »
S1= { PassNoTruth, SurName, NameP, Patronimic, YearBorn, PlaceBorn }
K1= { PassNoTruth }
2.1.2 « Crime Person» = «Рецитив»
R2= « Crime Person »
S2= { CrPersRecNo, PassNoTruth, FingerPrint, FingerPrintCode }
K2= { CrPersRecNo }
2.1.3 « Commited» = «связь»
R3= « Commited»
S3= { ComRecNo, CrPersRecNo, FingerPrint, FingerPrintCode, StNo, CrDate, PassNoArested,
ArestDate, FreeDate, JudjDate, JudgeSolution, PrisonDate, PrisonOutDate}
K3= { ComRecNo }
2.1.4«Crimes» = «плеступление»
R4= « Crimes»
S4= { StNo, CrimeDescript }
K4= { StNo }

2.2.2 Функциональные зависимости между атрибутами

F={ K1={ PassNoTruth } S1

K2={ CrPersRecNo} S2

K3={ ComRecNo } S3
K4= { StNo } S}

2.2.3 Нормализованная схема базы данныx

2.3 Предопределенные запросы


. Оформление задержанного
. Сличение по с федеральным розыском и коррекция федерального списка в
Случае успеха
. Архив (для каждого ID м.б. насколько разных ФИО)
. Вынесение приговора (в тюрьму , штраф и на свободу ,расстрел)
. Поиск по архиву
. Отчеты Архив (данные за последний месяц, год); Федеральный розыск
(текущее состояние) Список отпускаемых на свободу (те, у кого в ближайший
месяц закончится срок); статистика преступлений по статьям и сезонам (весна,
лето курортный сезон, новогодние праздники и пр.) за год, за несколько лет ,за
весь период наблюдений.

3 Создание базы данных


3.1 Создание таблиц
При создании каждой таблицы, должен выделятся первичный ключ, атрибут,
который позволяет однозначно идентифицировать кортеж в таблице. Чтобы
создать связи между таблицами необходимо скопировать ключ из одной
таблицы в другую. Необходимо снять запрет на возможные повторяющиеся
значения. При копировании поля с типом «счетчик», тип поля заменяется на
«числовой». Для предотвращения ссылок на несуществующие значения ключа
другой таблицы, ссылка на ключ программируется как «поле со списком»,
источником возможных значений которого служит ключевое поле, на которое
ссылаются. При необходимости можно задать более одного поля в выпадающем
списке. В дальнейшем тип «поле со списком» наследуется формами на основе
таблиц, содержащих эти «поля со списком».
3.2 Создание схемы базы данных
В схему базы данных входят таблицы и связи между ними. Существует два типа
связи «один-ко-многим» и «один-к-одному». Как правило используется тип
«один-ко-многим». При создании связи целесообразно обеспечивать
целостность данных используя каскадное удаление или обновление связанных
полей. При создании связи «один-ко-многим» необходимо разрешить
повторение значений в таблице.

3.3 SQL-запросы
3.3.1 SQL-запросы Оформление задержанного
INSERT INTO
Commited (StNo, CrDate, ArestDate, FreeDate, JudgeDate, JudgeSolution,
PrisonDate, PrisonOutDate)
VALUES
('1','2017/6/18','2016/11/6','2025/10/17','2017/2/3','в тюрьму','2017/3/10','2020/9/3');

3.3.2 SQL-запросы Архив (для каждого ID м.б. насколько


разных ФИО)

SELECT
Partials.SurName, Partials.NameP, Partials.Patronimic, CrimePersons.PassNoTruth,
CrimePersons.FingerPrint, CrimePersons.FingerPrintCode, Commited.CrPersRecNo,
Commited.ComRecNo
FROM
(Partials
INNER JOIN
CrimePersons
ON Partials.PassNoTruth = CrimePersons.PassNoTruth)
INNER JOIN
Commited
ON CrimePersons.CrPersRecNo = Commited.CrPersRecNo;

3.3.3SQL-запросы Поиск по архиву


SELECT
Partials.SurName, Partials.NameP, Partials.Patronimic, CrimePersons.PassNoTruth,
CrimePersons.FingerPrint, CrimePersons.FingerPrintCode, Commited.CrPersRecNo,
Commited.ComRecNo
FROM
Partials
INNER JOIN
(CrimePersons
INNER JOIN
Commited
ON CrimePersons.CrPersRecNo = Commited.CrPersRecNo)
ON Partials.PassNoTruth = CrimePersons.PassNoTruth
WHERE (((CrimePersons.FingerPrintCode)=[номер]));
4 Программирование внешних представлений Базовых
отношений и SQL-запросов.

4.1 Создание формы «Архив за период времени»


SELECT

Partials.SurName, Partials.NameP, Partials.Patronimic, CrimePersons.PassNoTruth,


CrimePersons.FingerPrint, CrimePersons.FingerPrintCode, Commited.CrPersRecNo,
Commited.ComRecNo, Commited.ArestDate

FROM

(Partials

INNER JOIN

CrimePersons

ON Partials.PassNoTruth = CrimePersons.PassNoTruth)

INNER JOIN

Commited

ON CrimePersons.CrPersRecNo = Commited.CrPersRecNo;

WHERE ArestDate >= Forms! Archive_Period!Dbeg

AND ArestDate <= Forms!Archive_Period!Dend;

Форма создается на основе запроса на выборку (ArestDate). В форме


отображаются все поля, выбранные запросом (Имя, Фамилия, Отчество, No
записи, ArestDate, FingerPrint) и два поля задающие период (элементы
управления).

После создания элементов управления их надо правильно идентифицировать,


присвоив свойству Name объекта значение краткого идентификатора, параметра
отбора, упоминаемого в запросе выборки (Begin, End). Этим достигается
«видимость» элементов управления формы из её запроса-источника данных
“ArestDate”.
Для повторного запуска запроса-источника записей формы создаём кнопку
«Requery» («Обновить») – запуск запроса - источника данных формы,
выполняющую метод Requery – в качестве реакции на событие ‘Click’ этой
кнопки: Private Sub Requery_Click()

Me.Requery

End Sub

4.1.1 Поведение формы «Архив за период времени» при


работе пользователя
При открытии форма “Archive_Period” запускает свой источник данных - запрос
“Archive_Period” с параметрами отбора Forms! Archive_Period!Dbeg,
Forms!CrimesInPeriod!Dend, представленными одноимёнными элементами
управления формы.

При запуске запрос “Archive_Period” ищет свои параметры по их DAO-адресам,


последовательно входя в две коллекции и находя в них объекты: - коллекцию
‘Forms’ открытых форм, содержащую имя формы “Archive_Period”, - её
коллекцию элементов управления ‘Commited’, содержащую имена свободных
полей Arest _Date - параметров запроса “Archive_Period”.

Найдя по именам свободные поля формы “Archive_Period”, представляющие


параметры запроса “Archive_Period”, он читает их свойства Value, сравнивает с
ними значения соответственных атрибутов отбираемых записей соединённых
базовых таблиц, и выдаёт результирующий набор записей для отображения
формой на дисплее.

При начальном запуске запроса “Archive_Period ” открываемой формой


“Archive_Period” его параметры в свободных полях формы имеют пустые
значения (NULL), и результирующий набор записей запроса тоже пуст.

После ввода пользователем параметров отбора в свободные поля заголовка


формы, он нажимает на пусковую кнопку «Обновить». При этом объект-кнопка
генерирует событие Requery_Click. Его действие – запуск метода Requery
формы, упомянутой под именем ‘Me’ – кратким синонимом контекстного
объекта программного модуля (‘CodeContextObject’). В результате выполнения
этого метода обновляется источник данных формы “Archive_Period”, то есть
повторно запускается запрос “Archive_Period”. На этот раз он читает в
свободных полях Arest,формы“Archive_Period” значения своих параметров,
введённые пользователем, и выдаёт в форму соответствующий результат отбора
из записей таблиц Commited, CrimePersons , Partials.
Форма “Archive_Period” отображает результат своего запроса-источника данных
“Archive_Period” на дисплее.

5 Программирование статистических запросов, форм и


отчетов БД на их основе.

5.1 SQL-запрос «преступления по сезонам» “


CrimesInPeriod ”
SELECT
Commited.ArestDate , Commited.ComRecNo, Commited.StNo,
CrimePersons.CrPersRecNo, CrimePersons.FingerPrint,
Partials.SurName, Partials.NameP, Partials.Patronimic
FROM
Partials
INNER JOIN
( CrimePersons
INNER JOIN
Commited
ON Cstr(CrimePersons.FingerPrint)=Cstr(Commited.FingerPrint)
)
ON Partials.PassNoTruth= CrimePersons.PassNoTruth
WHERE ArestDate >= Forms!CrimesInPeriod!Dbeg
AND ArestDate <= Forms!CrimesInPeriod!Dend;
--
5.2 Стат. запрос «Наиболее частые преступления за
период» “MostFastCrimesInPeriod”
«Наиболее частые» - преступления, количество которых не менее заданного
числа Nmin.
SELECT StNo, COUNT(ComRecNo) AS NumCrimes
FROM Commited
WHERE ArestDate >= Forms!MostFastCrimesInPeriod!Dbeg
AND ArestDate <= Forms!MostFastCrimesInPeriod!Dend
GROUP BY StNo
HAVING COUNT(ComRecNo) >= Forms!MostFastCrimesInPeriod!Nmin
ORDER BY COUNT(ComRecNo) DESC;
Конструирование формы “MostFastCrimesInPeriod” на основе
одноимённого статистического запроса.
Опишите создание и поименование свободных полей в заголовке формы – для
интерактивного ввода параметров запроса пользователем.
Реакция формы “MostFastCrimesInPeriod” на событие “Click” кнопки
“ReQueryButton”:
Private Sub ReQueryButton_Click()
Me.Requery
End Sub 'ReQueryButton_Click()
Реакция формы “MostFastCrimesInPeriod” на событие “Click” кнопки
“ReportButton”
Private Sub ReportButton_Click()
Dim sRepName As String
sRepName = "MostFastCrimesInPeriod"
DoCmd.OpenReport sRepName, acViewReport
End Sub 'ReportButton_Click()
Вид отчёта “MostFastCrimesInPeriod”:

5.3 Отчёт по форме на основе SQL-запроса «


MostFastCrimesInPeriod»
5.3 Отчёт по форме на основе SQL-запроса «
MostFastCrimesInPeriod»

Конструирование отчёта “MostFastCrimesInPeriod” на основе одноимённого


статистического запроса.

Источник данных свободного поля Dbeg в заголовке отчёта “MostFastCrimesInPeriod”:


=Forms!MostFastCrimesInPeriod!Dbeg
Источник данных свободного поля Dend в заголовке отчёта “MostFastCrimesInPeriod”:
=Forms!MostFastCrimesInPeriod!Dend
Источник данных свободного поля Nmin в заголовке отчёта “MostFastCrimesInPeriod”:
=Forms!MostFastCrimesInPeriod!Nmin

10.Картотека уголовного розыска


Уголовный кодекс (номер статьи, статья, наказание, наказание в случае рецидива). Рецидив – здесь повторное и более
задержание независимо от статьи.

Список попавшихся в течение дня (ФИО, дата ареста, статья, ID (отпечатки пальцев)). Каждый вечер этот список
«сливается» в архив и становится пустым.

Имеется архив (история «ходок» всех клиентов). Еще один список – федеральный розыск.

Требуется поддержка:

 Оформление задержанного
 Сличение по ID с федеральным розыском и коррекция федерального списка в случае успеха
 Архив (преступники у нас ушлые: для каждого ID м.б. насколько разных ФИО)
 Вынесение приговора (в тюрьму, в федеральную тюрьму (если проходит по федеральным спискам), штраф и
на свободу, расстрел)
 Поиск по архиву (ID, ФИО)
 Запросы и отчеты: Архив (данные за последний месяц, год); Федеральный розыск (текущее состояние); Список
отпускаемых на свободу (те, у кого в ближайший месяц закончится срок); статистика преступлений по статьям.