You are on page 1of 56

4

ЗМІСТ

ВСТУП 6
1 ТЕОРЕТИЧНА ЧАСТИНА 8
1.1 Аналіз та опис предметної області 8
1.1.1 Опис предметної області 8
1.1.2 Опис вхідних даних 9
1.1.3 Опис вихідних даних 9
1.2 Проектування бази даних 10
1.2.1 Інфологічна модель бази даних 10
1.2.1.1 Опис сутностей 11
1.2.1.2. Опис атрибутів 11
1.2.1.3 Опис зв'язків 14
1.2.1.4 Діаграма "сутність-зв'язок" 15
1.2.2 Нормалізація таблиць при проектуванні бази даних 16
1.2.3 Даталогічна модель бази даних 17
2 ПРАКТИЧНА ЧАСТИНА 22
2.1 Створення бази даних за допомогою MS SQL Server 22
2.1.1 Створення бази даних 22
2.1.2 Створення таблиць бази даних 24
2.1.3 Створення діаграми бази даних 27
2.1.4 Заповнення таблиць бази даних даними 28
2.1.5 Створення збережених процедур 30
2.1.6 Створення тригерів 32
2.1.7 Створення представлень 33
2.2 Організація вибірки інформації з бази даних 35
2.2.1 Проста вибірка даних 35

4
5

2.2.2 Вибірка обчислюваних значень 36


2.2.3 Вибірка значень з діапазону 37
2.2.4 Вибірка з використанням шаблонів 38
2.2.5 Угруповання даних при організації запитів 39
2.2.6 Об’єднання таблиць 40
ВИСНОВКИ 42
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ 43
ДОДАТКИ
Додаток А. Заповнення таблиць реляційної бази даних 44
Додаток Б. Створення збережених процедур 54
Додаток В. Створення тригерів 56
Додаток Г. Створення представлень 57

5
6

ВСТУП

Системи баз даних містять множину даних, які необхідні для


розв’язання конкретних завдань користувачів системи, враховуючи їх
інформаційні потреби; мають структуровані і пов’язані між собою
інформаційні елементи (дані), які не залежать від особливостей програм
управління базами даних; представляють дані у формі, яка придатна для їх
використання із застосуванням систем управління базами даних (СУБД).
Крім того, БД має оперативний доступ до інформації, яка доступна для
використання; можливість змінювати склад та форму даних, що цікавлять
користувача; засоби, що забезпечують захист даних БД від
несанкціонованого доступу, видалення і зміни; можливість оновлення і
мінімізації даних.

Бази даних – іменована сукупність даних, яка відображає стан об’єктів


та їх відносин у певній предметній області. В загальному випадку база даних
містить схеми, таблиці, подання, збережені процедури та інші об'єкти. З
початку цього сторіччя, популярності набули реляційні бази даних. У таких
базах даних зв’язок між таблицями здійснюється за допомогою однакових
полів.

Реляційна база даних - сукупність елементів даних, організованих у


вигляді набору формально описаних таблиць, з яких дані можуть бути
доступними або повторно зібрані багатьма різними способами без
необхідності реорганізації таблиць бази даних. Така база даних сприймається
користувачем як набір нормалізованих відношень різного ступеня.

Система управління базами даних – набір програм доступу до баз


даних, що надає можливість взаємодіяти з базами даних, а саме: створювати,
оновлювати, зберігати, змінювати та шукати інформацію у базах даних. У
розподілених системах управління базами даних кожен вузол мережі містить
свою базу даних, однак вони розглядаються як одна єдина база даних, а не
сукупність розкиданих файлів. Усі файли в розділених системах є
взаємозалежними. В однорідних розділених системах бази даних на всіх
вузлах мають бути однотипні систему управлення. В даний час більшість

6
7

розподілених СУБД базується на реляційній моделі даних і розрахована на


використання в локальних мережах.

Основні функції SQL Server:

 створення та редагування об’єктів бази даних


 збереження даних
 модифікація даних
 надання даних на запит від інших застосунків

SQL Server використовується для створення самої бази даних та її


складових, здійснює перевірку цілісності бази даних і виконує безпекові
функції для бази даних також підтримує реляційну модель баз даних.

У середовищі SQL Server доступ до баз даних здійснюється з локального


персонального комп’ютера. При цьому створюються відповідні додатки, що
дозволяють виконувати операції над даними.

У курсовій роботі була розроблена реляційна база даних «Система


збереження документів» у середовищі Microsoft SQL Server 2018, в якій
необхідно було вирішити наступні завдання:

 провести аналіз предметної області з описом вхідних і вихідних


даних;
 побудувати інфологічну модель даних з описами сутностей
атрибутів і зв’язків;
 провести нормалізацію таблиць;
 створити даталогічну модель бази даних;
 за допомогою MS SQL Server створити базу даних;
 заповнити таблиці даними;
 виконати вибірки даних з бази даних

7
8

1 ТЕОРЕТИЧНА ЧАСТИНА

1.1 Аналіз предметної області

1.1.1 Опис предметної області

Інформаційні системи були створені для надання користувачам даних як


відповіді на поставлені ним запитання. Основні запитання до інформаційної
системи дозволяють виділити глобальну тему, інформація якої знаходиться у
інформаційній системі – предметну область. Предметна область - частина
реального світу, для якої здійснюється концептуальне моделювання.

Дані інформаційної системи зазвичай подаються у формі, яку складно


інтерпретувати, але вона задає сенс для подання подальшої інформації у
інформаційній системі. Такі дані утворюють інформаційну модель
предметної області. Сукупність таких даних разом зі зв’язками, якими вони
пов’язані, та діями над ними поєднуються у функціональну модель
предметної області. Разом інформаційна і функціональна моделі предметної
області є вхідними даними для процесу створення баз даних.

Якщо певній групі людей потрібно швидко отримати певну інформацію з


певної предметної області вони можуть створити базу даних. Бази даних
забезпечують збереження інформації у структурованому вигляді, доступ до
неї та блокує доступ до неї небажаним користувачам.

Зараз усі компанії мають свою базу даних для зберігання та


адміністрування певних даних тому сучасні підприємствам дуже складно
працювати без їх використання. При чому розмір бізнесу не впливає на
потрібність бази даних.

При розробці реляційної бази даних «Система збереження документів»


було проведено дослідження предметної області. Основними операціями у
досліджуваній області є складання отримання різних документів за номером
картки платника податків [1-3].

У сучасному світі діджиталізація є одним з основних бажань багатьох


країн. Основною метою даної курсової роботи є прототипування бази даних,
8
9

використовуючи яку люди зможуть швидко отримувати електронний доступ


до їх документів та оплати податків.

1.1.2 Опис вхідних даних

Вхідні дані - інформація, передана системі. Для вхідних даних вказується


джерело виникнення, періодичність, форма подання.

При розробці бази даних «Система збереження документів» були виділені


такі вхідні дані:

 Інформація з картки платника податків;


 Персональна інформація людини;
 Інформація про штрафи людини;
 Інформація про причини штрафів людини;
 Інформація з паспорту;
 Інформація з закордонного паспорту;
 Інформація про надання даних для отримання VISA.

1.1.3 Опис вихідних даних

Вихідні дані - повідомлення і результати, що видаються системою. Вони,


як правило, беруться з постійних даних, але їх не можна розглядати як
частину БД.

Вихідними даними для бази даних «Система збереження документів» є


вихідні запити.

1.2 Проектування бази даних

1.2.1 Інфологічна модель бази даних

Інфологічна модель — представлення майбутньої інформації у базі даних


найбільш широкого змісту. Інфологічна модель має бути побудована таким
чином, що б будь-яка людина змогла зрозуміти про що буде інформація у
базі даних. Зазвичай інфологічні моделі подають за допомогою таблиць,
зображень, діаграм та інших засобів, які будуть зрозумілими не тільки

9
10

розробникам баз даних, а і звичайним користувачам. Такі моделі


створюються для опису процесів, функцій системи та інформаційних потоків
таким чином, що б це змогла зрозуміти будь-яка людина. Якщо інформація
буде подана загальнодоступною мовою, то розробник зможе отримувати
відгуки або ідеї для покращення своєї бази даних не тільки від експертів, а і
від звичайних користувачів [4, 7]. Основними елементами інфологічної
моделі є сутності, зв’язки та тип зв’язків.

Створення інфологічної моделі бази даних є наступним кроком після


дослідження предметної області. Вона показує майбутню базу даних з точки
зору розробника та дозволяє іншим людям обговорювати її та вносити в неї
виправлення. Зрозумілість інфологічної моделі може вплинути на якість
майбутнього проекту.

Інфологічна модель не є фізичним втіленням бази даних, а скоріше її


візуалізацією, яка може зберігатися як на папері так і на електронних
ресурсах.

Інфологічну модель можна описати декількома способами, але


найпопулярнішим з них є спосіб описання діаграм «Сутність – зв’язок». У
такому способі сематично описуються усі сутності предметної області та
зв’язки між ними.

Через легкість створення інфологічної моделі та її інформативність


розробник може одразу обговорювати роботу з користувачами його бази
даних. Така розробка є творчим процесом ще до створення самої бази даних,
тому не існує певного стандартизованого алгоритму її створення, але
реляційна модель обов’язково повинна складатися з сутностей, атрибутів і
зв’язків.

1.2.1.1 Опис сутностей

Сутність – базова частина інфологічної моделі, яка представляє собою


сукупність об’єктів, які володіють атрибутами. Сутності мають бути описані

10
11

як типи не конкретизованих об’єктів, тобто, для прикладу, ім’я сутності має


бути «Університет», а не «Київський університет культури».

Сутність має бути узагальнюючим об’єктом з загальною назвою. Таке


найменування збільшить зрозумілість інфологічної моделі. Сутність
описується атрибутами та може мати безліч зв’язків з іншими сутностями.

Відповідно до вибраної предметної області було отримано такі сутності:

1. «Картка платника податків» - зберігає інформацію про власника та


унікальний номер його картки платника податків.
2. «Штрафи» - зберігає інформацію про причину штрафу та вартість
сплати.
3. «Причина штрафів» - зберігає інформація про уточнення причини
штрафу
4. «Персональна інформація» - зберігає персональну інформація про
людину.
5. «Паспорт» - зберігає інформацію з паспорту людини
6. «Закордонний паспорт» - зберігає інформацію із закордонного
паспорту людини
7. «Запит на VISA» - зберігає інформацію про подання документів на
отримання VISA.

1.2.1.2 Опис атрибутів

Атрибут – будь-яка характеристика сутності, яку варто розглянути для


предметної області і що використовується для ідентифікації, класифікації або
вираження стану певної сутності. На діаграмі «Сутність – Зв’язок» атрибути
є пов’язані з сутностями, до яких вони відносяться.

Екземпляр атрибута - певна характеристика сутності, що описує її.


Атрибут може описувати кількість, клас, вартість, стан, модель сутності або
будь-що інше. Оскільки реляційна модель баз даних передбачає пов’язання

11
12

таблиць одна з одною за допомогою однакових полів, то деякі екземпляри


атрибути можуть мати однакову назву та формат у різних таблицях.

Відповідно до вибраної предметної області було отримано такі


атрибути для певних сутностей:

«Картка платника податків» - зберігає інформацію про власника та


унікальний номер його картки платника податків.

1. Таблиця «Картка платника податків» містить:


 Унікальний номер картки платника податків
 Унікальний ідентифікаційний номер людини
 Заборгованість
2. Таблиця «Штрафи» містить:
 Вартість штрафу
 Номер причини штрафу
 Унікальний номер картки платника податків
 Унікальний індекс оплати штрафу
3. Таблиця «Причина штрафів» містить:
 Унікальний номер причини штрафу
 Унікальна назву причини штрафу
4. Таблиця «Персональна інформація» містить:
 Унікальний ідентифікаційний номер людини
 Ім’я власника
 Дату народження власника
 Стать власника
 Адреса проживання власника
5. Таблиця «Паспорт» містить:
 Унікальний номер паспорту
 Дату закінчення дійсності
 Унікальний ідентифікаційний номер людини
6. Таблиця «Закордонний паспорт» містить:
 Унікальний номер закордонного паспорту
 Унікальний ідентифікаційний номер людини
 Дату закінчення дійсності
12
13

 Національність власника
 Ім’я власника англійською мовою
7. Таблиця «Запит на VISA» містить:
 Унікальний номер запиту
 Унікальний номер закордонного паспорту
 Унікальний номер паспорту
 Ціну оформлення запиту
 Причину для отримання VISA
 Тривалість активності VISA

1.2.1.3 Опис зв’язків

Зв'язки між таблицями – це основа для забезпечення цілісності даних,


що дає змогу запобігти виникненню в базі даних відірваних записів. Без
пов’язування таблиць між собою база даних була б дуже проста і не могла б
дати більш конкретну інформацію. База даних має бути побудована таким
чином, що б за однією сутністю можна було потрапити до будь-якою іншої,
для цього встановлюються зв’язки.

У MS SQL Server є три типи зв’язків: «один-до-багатьох», «один-до-


одного» та «багато-до-багатьох». Усі зв’язки мають позначатись на ER-
діаграмі з’єднуючи сутності. Для кожного типу зв’язків є своє позначення у
діаграмі.

Зв’язок «один-до-багатьох» частіше за все поєднує ключове поле


таблиці з додатковим полем іншої таблиці. Як приклад можна навести
людину, у якої є багато банківських карток. У такому випадку на стороні
«багато» будуть номера карток, а на стороні «один» - номер картки платника
податків, або інший документ, що підтверджує особу.

Зв’язок «один-до-одного» означає що одному атрибуту однієї таблиці


відповідає один атрибут іншої таблиці. Цей зв’язок не є дуже поширеним,
оскільки зазвичай такі дані будуть зберігатись в одній таблиці. Такий зв’язок

13
14

можна використати для розділення однієї великої таблиці на декілька частин


з метою полегшення зберігання даних.

Зв’язок «багато-до-багатьох» означає що багатьом записам однієї


таблиці може відповідати багато записів інших таблиць. MS SQL Server не
може створювати такий зв’язок одразу, тому для її створення вводять
додаткову таблицю. Таким чином створюється два зв’язка «один-до-
багатьох», які об’єднуються у додатковій таблиці.

У курсовій роботі були використані такі типи зв’язків між таблицями


реляційної бази даних «Система збереження документів»

Таблиця 1.1 - Типи зв’язків

Номер Головна таблиця Дочірня таблиця Тип зв’язку

1 «Штрафи»(Bills) «Картка платника «багато-до-


податків» одного»
(Tax_Payer_Card)

2 «Персональна «Картка платника «Один-до-


інформація» податків» одного»
(Personal_Info) (Tax_Payer_Card)

3 «Паспорт» «Персональна «Один-до-


інформація» одного»
(Passport)
(Personal_Info)

4 «Закордонний «Персональна «Один-до-


паспорт» інформація» одного»
(Personal_Info)
(Foreign_Passport)

5 «Закордонний «Запит на VISA» «Один-до-


паспорт» багатьох»
(Ask_For_Visa)
(Foreign_Passport)

6 «Паспорт» «Запит на VISA» «Один-до-

14
15

(Passport) (Ask_For_Visa) багатьох»

7 «Причини «Штрафи» «Один-до-


штрафів» одного»
(Bills)
(Bills_Reason)

1.2.1.4 Діаграма «Сутність-зв’язок»

На рисунку 1.1 представлена ER-діаграма для бази даних «Система


збереження документів», де відображено усі її сутності, зв’язки та атрибути.

Рисунок 1.1 – ER-діаграма бази даних «Система збереження


документів»

1.2.2 Нормалізація таблиць при проектуванні бази даних

15
16

Нормалізація – процес розбиття таблиці, що володіють більш


конкретними властивостями.

Усього є п’ять нормальних форм для таблиць. Для переходу між


формами умови усіх минулих форм мать бути виконані так само як і форма у
яку переходить таблиця.

Перша нормальна форма полягає у тому, що кожне поле було неділиме


або атомарне.

Друга нормальна форма полягає у тому, що кожен атрибут має


залежати від ключового поля таблиці.

Третя нормальна форма означає що у таблиці не має полів, які залежать


від інших неключових полів. Ця форма частіше за все є кінцевою формою у
створенні бази даних, вона вважається достатньою.

Проведемо нормалізацію таблиць бази даних:

1) Поле «Ім’я» у таблиці «Персональна інформація» можна


розбити на поля «Ім’я», «Прізвище» та «По батькові».
2) Поле «Ім’я власника англійською мовою» у таблиці
«Закордонний паспорт» можна розбити на поля «Ім’я
англійською», «Прізвище англійською».
3) Поле «Адреса проживання» у таблиці «Персональна
інформація» можна розбити на поля «Місто проживання»,
«Вулиця проживання» та «Номер будинку проживання».

Визначимо ключові поля для кожної з таблиць:

 Для таблиці «Персональна інформація» ключовим буде


поле «Ідентифікаційний номер людини»
 Для таблиці «Штрафи» ключовим буде поле «Індекс
оплати штрафу»
 Для таблиці «Причини штрафів» ключовим буде поле
«Номер причини штрафу»

16
17

 Для таблиці «Картка платника податків» ключовим буде


поле «Номер картки платника податків»
 Для таблиці «Паспорт» ключовим буде поле «Номер
паспорту»
 Для таблиці «Закордонний паспорт» ключовим буде поле
«Номер закордонного паспорту»
 Для таблиці «Запит на VISA» ключовим буде поле «Номер
запиту»

1.2.3 Даталогічна модель бази даних

Логічне (даталогічне) проектування – відображення інфологічної моделі


на модель даних, що використовується в конкретній СУБД, наприклад, на
реляційну модель даних. Для реляційних СУБД даталогічна модель – набір
таблиць, зазвичай із зазначенням ключових полів, зв'язків між
таблицями. Якщо інфологічна модель побудована у вигляді ER-діаграм (або
інших формалізованих засобів), то даталогічне проектування є побудова
таблиць за певними формалізованими правилами, а також нормалізацію цих
таблиць.

Логічні моделі даних відображають концептуальні класи даних на


технічні структури даних. Вони дають більш детальну інформацію про
концепції даних та їх складні відносини, які були визначені в концептуальній
моделі даних, наприклад:

 Типи даних різних атрибутів (наприклад, рядок чи число)


 Взаємозв'язок між об'єктами даних
 Первинні атрибути або ключові поля даних

Архітектори даних та аналітики спільно працюють над створенням


логічної моделі. Вони випливають однією з кількох формальних систем
моделювання даних для створення уявлення. Іноді гнучкі команди можуть
пропустити цей крок та перейти від концептуальних до фізичних моделей
безпосередньо. Однак ці моделі корисні для проектування великих баз даних,

17
18

які називаються сховищами даних, і для проектування систем автоматичної


звітності.
Для предметної області «Система збереження документів» було
створено таку інфологічну модель:

Таблиця 1.2 – Таблиця «Персональна інформація»

Назви атрибутів Тип поля Обмеження

Ідентифікаційни Person_Id Bigint Not null


й номер

Прізвище Surname Varchar(40)

Ім’я Name Varchar(20)

По батькові Parent_Name Varchar(40)

Стать людини Sex Varbinary(1)

Місто City Varchar(30)


проживання

Вулиця Street Varchar(40)


проживання

Номер будинку Home_Number Int

Таблиця 1.3 – Таблиця «Штрафи»

Назви атрибутів Тип поля Обмеження

Індекс оплати Bill_Id Bigint Not null


штрафу

Номер причини Reason_Number Bigint Not null


штрафу

Вартість штрафу Bill_Value Float

Номер картки Tax_Payer_Card Bigint Not null


18
19

платника
податків

Таблиця 1.4 – Таблиця «Причини штрафів»

Назви атрибутів Тип поля Обмеження

Номер причини Reason_Number Bigint Not null


штрафу

Назва причини Reason_Name Varchar(100) Not null, unique


штрафу

Таблиця 1.5 – Таблиця «Картка платника податків»

Назви атрибутів Тип поля Обмеження

Номер картки Tax_Payer_Card Bigint Not null


платника
податків

Заборгованість Dept Float

Ідентифікаційни Person_Id Bigint Not null


й номер

Таблиця 1.6 – Таблиця «Паспорт»

Назви атрибутів Тип поля Обмеження

Номер паспорту Passport_Number Bigint Not null

Дата закінчення Valid_Until Date


дії

Ідентифікаційни Person_Id Bigint Not null


й номер

19
20

Таблиця 1.7 – Таблиця «Закордонний паспорт»

Назви атрибутів Тип Обмеженн


поля я

Номер Foreign_Passport_Number Bigint Not null


закордонного
паспорту

Ім’я англійською Eng_Name Varchar


(20)

Прізвище Eng_Surname Varchar


англійською (40)

Національність Nationality Varchar


(20)

Дата закінчення Valid_Until Date


дії

Ідентифікаційний Person_Id Bigint Not null


номер

Таблиця 1.8 – Таблиця «Запит на VISA»

Назви атрибутів Тип Обмеженн


поля я

Номер запиту VISA_Index Bigint Not null

Номер Foreign_Passport_Number Bigint Not null


закордонного
паспорту

Номер паспорту Passport_Number Bigint Not null

20
21

Ціна VISA_Value Float


оформлення

Причина для VISA_Reason Varchar


отримання (200)

21
22

2 ПРАКТИЧНА ЧАСТИНА

2.1 Створення бази даних за допомогою MS SQL Server

2.1.1 Створення бази даних

Для запуску MS SQL Server 2018 відкриваємо застосунок Microsoft Server


Management Studio та підключаємось до вибраного серверу

Якщо ви не бачите свого серверу, виберіть пошук усіх серверів та


перевірте його наявність там

22
23

Підключення до серверу встановлено

Для створення бази даних використовуємо команду «CREATE


DATABASE» та дописуємо назву бази даних. Для мови SQL не важливий
реєстр букв, тому ми можемо писати як великими так і маленькими літерами

23
24

Рисунок 2.1 – Створення реляційної бази даних «Система збереження


документів»

create database doc_saver

Для перевірки правильності виконання команди можемо відкрити папку


«Databases» серверу та знайти там нашу базу даних.

2.1.2 Створення таблиць бази даних

У створеній в пункті 2.1.1 базі даних створюємо таблиці з пункту 1.2.3 .


Для цього застосовуємо команду «CREATE TABLE» додавши назву таблиці
у кінці.

/*Створюємо таблицю "Персональна інформація"*/


create table Personal_Info
(
Person_Id bigint primary key,
Surname varchar(40),
Name varchar(20),
Parent_Name varchar(40),
Sex varbinary(1),
City varchar(30),
Street varchar(40),
24
25

Home_Number int
);

/*Створюємо таблицю "Картка платника податків"*/


create table Tax_Payer_Info
(
Tax_Payer_Card bigint primary key,
Dept float,
Person_Id bigint foreign key references Personal_Info(Person_Id),
);

/*Створюємо таблицю "Причини штрафів"*/


create table Bills_Reason
(
Reason_Number bigint primary key,
Reason_Name varchar(100) not null unique
);

/*Створюємо таблицю "Штрафи"*/


create table Bills
(
Bill_Id bigint primary key,
Reason_Number bigint foreign key references Bills_Reason(Reason_Number),
Bill_Value float,
Tax_Payer_Card bigint foreign key references Tax_Payer_Info(Tax_Payer_Card)
);

/*Створюємо таблицю "Паспорт"*/


create table Passport
(
Passport_Number bigint primary key,
Valid_Until date,
Person_Id bigint foreign key references Personal_Info(Person_Id)
);

/*Створюємо таблицю "Закордонний паспорт"*/


create table Foreign_Passport
(
Foreign_Passport_Number bigint primary key,
Eng_Name varchar(20),
25
26

Eng_Surname varchar(40),
Nationality varchar(20),
Valid_Until date,
Person_Id bigint foreign key references Personal_Info(Person_Id)
);

/*Створюємо таблицю "Запит на VISA"*/


create table Ask_For_VISA
(
VISA_Index bigint primary key,
VISA_Value float,
VISA_Reason varchar(200),
Foreign_Passport_Number bigint foreign key references
Foreign_Passport(Foreign_Passport_Number),
Passport_Number bigint foreign key references Passport(Passport_Number)
);

Перевіряємо що таблиці створені відкривши папку «Tables» у базі даних та


знайшовши назви новостворених таблиць

Рисунок 2.2 – Створення таблиць реляційної бази даних «Система


збереження документів»

26
27

2.1.3 Створення діаграми бази даних

Для створення діаграм для певної бази даних потрібно у меню бази даних
виділити папку «Database Diagrams» та, натиснувши правою кнопкою
миші на неї, вибрати «New Database Diagram».

Після цього, у вікні що з’явилося потрібно вибрати усі таблиці та


натиснути «Add»

27
28

Рисунок 2.3 – Діаграма для реляційної бази даних «Система збереження


документів»

2.1.4 Заповнення таблиць бази даних даними

Заповнимо таблицю «Персональна інформація»:

insert into Personal_Info values


(1,'Маковецький', 'Сергій','Олександрович',1,'Київ','Василя Стуса', 28),
(2,'Мечник', 'Єлизаветта','Тарасівна',0,'Львів','Мала', 18),
(3,'Чепуренко', 'Микита','Олександрович',1,'Харків','Олександра Матросова',
10),
(4,'Курінна', 'Світлана','Василівна',0,'Одеса','Тролейбусна', 29),
(5,'Мельниченко', 'Григорій','Дмитрович',1,'Дніпро','Стартова', 15),
(6,'Ткач', 'Маргарита','Олексіївна',0,'Кривий Ріг','Мала', 18),
(7,'Ярмоленко', 'Карина','Степанівна',0,'Тернопіль','Шпитальна', 28),
(8,'Північний', 'Кирило','Костянтинович',1,'Київ','Патріотів', 53),
(9,'Литовко', 'Віктор','Сергійович',1,'Житомир','Гончарна', 12),
(10,'Чмут', 'Анастасія','Олегівна',0,'Вінниця','Короленка', 32),

28
29

(11,'Левченко', 'Артем','Ярославович',1,'Львів','Яцика', 4),


(12,'Коротенко', 'Оксана','Вікторівна',0,'Луганськ','Звейнека', 5),
(13,'Ярова', 'Вікторія','Єгорвіна',0,'Донецьк','Набережна', 29),
(14,'Омельченко', 'Олексій','Романович',1,'Луцьк','Пушкіна', 3),
(15,'Ташинський', 'Олександр','Миколайович',1,'Маріуполь','Італійська', 60)

Рисунок 2.4 – вставка даних до таблиці «Персональна інформація»


(Personal_Info)

Перевіряємо результат:

select * from Personal_Info

29
30

Заповнення інших таблиць винесено у Додаток А - Заповнення таблиць


реляційної бази даних

2.1.5 Створення збережених процедур

Збережена процедура - підпрограма, доступна застосункам, які мають


доступ до системи управління базами даних. Такі процедури
зберігаються у словнику даних бази і представляє собою окремий
об’єкт, що існує незалежно від таблиць або інших об’єктів бази даних.
Збережена процедура може бути викликана іншоб збереженою
процедурою або тригером.
До типових застосувань збережених процедур належать валідація
даних та механізми контролю доступу. Крім того, збережені процедури
можуть збирати та централізувати логіку, яку спочатку було
реалізовано в застосунках. Для збереження часу та пам'яті, об'ємні чи
складні обробки, що вимагають виконання декількох операторів SQL,
може бути зібрано до збережених процедур, і усі застосунки можуть
викликати ці процедури. Можна використовувати вкладені збережені
процедури шляхом виклику одних процедур з інших.

30
31

Розробимо збережену процедуру для отримання імен, прізвищ та імен по-


батькові, кодів внутрішнього і зовнішнього паспортів усіх людей у базі
даних.

create proc GetPassports as


select pers.Name, pers.Surname, pers.Parent_Name, p.Passport_Number,
fp.Foreign_Passport_Number
from Foreign_Passport as fp, Passport as p, Personal_Info as pers
where fp.Person_Id = pers.Person_Id and pers.Person_Id = p.Person_Id

Рисунок 2.5 – створення збереженої процедури для отримування ПІБ та


номерів внутрішнього та зовнішнього паспортів людини

Звертаємось до збереженої процедури за допомогою команди

exec GetPassports

31
32

Створимо іншу збережену процедуру для реляційної таблиці «Система


збереження документів» у Додатку Б

2.1.6 Створення тригерів

Тригер - це спеціальний вид збереженої процедури, яку сервер БД


автоматично викликає при виконанні певних операцій модифікації
таблиць. Тригери прив’язуються до певних таблиць для яких при
виконанні команд модифікації створюються дві таблиці: inserted і deleted,
де зберігаються списки вставлених і видалених рядків. Тригери, що не
створювали ці таблиці не мають до них доступу.

Створимо тригер, який надавав би автоматично задавав би дату дійсності


закордонного паспорта як дата, що буде після чотирьох років після
сьогоднішньої.

create trigger RefreshForeignPassport


on Foreign_Passport after insert
as update dbo.Foreign_Passport
set Valid_Until = DATEADD(YY,4,GetDate())
where Foreign_Passport_Number in (select Foreign_Passport_Number from
Inserted)

Рисунок 2.6 – Тригер, що при вставці рядку змінює дату валідності


закордонного паспорту на дату, що буде через 4 роки від сьогоднішньої

32
33

Спробуємо додати закордонний паспорт

Insert into Foreign_Passport values


(311, 'Elizavetta', 'Mechnik', 'Polish', '2020-06-13', 2)

Створимо інший тригер для реляційної таблиці «Система збереження


документів» у Додатку В.

2.1.7 Створення представлень

33
34

Представлення – віртуальна таблиця, що є результатом запиту. Значення


представлення оновлюються автоматично зі зміною даних таблиць до
яких вони прив’язані. З представленням можна виконувати такі ж функції
як і зі звичайною таблицею. Дані для створення представлення можуть
братись з інших представлень, однієї або двох таблиць.

Створимо представлення для бази даних «Система збереження


документів»

create view PersonBills as


select pers.Person_Id, tp.Tax_Payer_Card, tp.Dept, b.Bill_Id, b.Bill_Value,
b.Reason_Number
from Personal_Info as pers, Tax_Payer_Info as tp, Bills as b
where pers.Person_Id = tp.Person_Id and tp.Tax_Payer_Card = b.Tax_Payer_Card

Рисунок 2.7 – представлення таблиці бази даних «Система збереження


документів»

Звернемось до створеного представлення

select * from PersonBills

34
35

Створимо представлення іншої таблиці бази даних «Система збереження


документів» у Додатку Г

2.2 Організація вибірки інформації з бази даних

Найпопулярнішим способом для вибірки даних є використання SQL-


запитів. Рядки для SQL-запитів вибираються командою Select, таблиці з яких
беруться рядки – командую From, а умови, за якими беруться рядки -
командою Where.

У запитах допускається використання модифікаторів All/Distinct. All


використовується за замовчуванням навіть якщо нічого не вписано як
модифікатор та означає що запити можуть повторюватись, Distinct означає
що рядки в запиту мають бути унікальні.

2.2.1 Проста вибірка даних

Створимо запит, що видав би усі дані таблиці «Персональна інформація»

select * from Personal_Info

35
36

Створимо запит, що визначав би ім’я, прізвище, по-батькові людини та місце


її проживання

select Name as Імя, Surname as Прізвище, Parent_Name as Побатькові, City as


Місто_проживання, Street as вулиця, Home_Number as Номер_будинку
from Personal_Info

2.2.2 Вибірка обчислювальних значень

Написати запит для визначення кількості запитів для отримання VISA

36
37

select count(*) as Кількість_запитів_VISA from Ask_For_VISA

Написати запит для отримання суми штрафів для усіх людей

select SUM(Bill_Value) as Сума_Штрафів from Bills

2.2.3 Вибірка значень з діапазону

Визначити людей, заборгованість яких складає від 250 до 750 гривень

select Tax_Payer_Card as Картка_платника_податків, Person_Id as


Номер_людини, Dept as Заборгованість
37
38

from Tax_Payer_Info
where Dept between 250 and 750

Визначити людей, чий паспорт закінчиться між 1.01.2019 та 1.01.2021

select Passport_Number as Номер_паспорту, Valid_Until as Дійсний_до,


Person_Id as Належить_людині
from Passport
where Valid_Until between '2019-01-01' and '2021-01-01'

2.2.4 Вибірка з використанням шаблонів

Визначити причини штрафів, що починаються за слова «Порушення»

select Reason_Name as Причина_штрафу, Reason_Number as Номер_штрафу

38
39

from Bills_Reason
where Reason_Name like 'Порушення%'

Вивести номера закордонних паспортів, чиї імена на англійській мові мають


другу літеру «А».

select Foreign_Passport_Number as Номер_закордонного_паспорту, Eng_Name


as Імя_англійською,
Eng_Surname as Прізвище_англыйською
from Foreign_Passport
where Eng_Name like '_A%'

2.2.5 Угруповання даних при організації запитів

Написати запит, який би визначав номер, назву причини, ціну та номер


отримувача штрафу. Відсортувати за назвою причини штрафу.

39
40

select b.Bill_Id, br.Reason_Name , b.bill_Value, b.Tax_Payer_Card


from Bills as b, Bills_Reason as br
where br.Reason_Number = b.Reason_Number
order by br.Reason_Name

Вивести інформацію про запити на отримання VISA та відсортувати за


назвою причини для її отримання

select VISA_Index, VISA_Reason, VISA_Value, Passport_Number,


Foreign_Passport_Number
from Ask_For_VISA
order by VISA_Reason

40
41

2.2.6 Об’єднання таблиць

Вивести дані паспорта, ПІБ та стать його власника

Select pers.Name, pers.Surname, pers.Parent_Name, pers.Sex,


p.Passport_Number, p.Valid_Until
from Personal_Info as pers join Passport as p on pers.Person_Id = p.Person_Id

41
42

Створити запит на виведення інформації картки платника податків та


штрафів

Select tp.Person_Id, tp.Tax_Payer_Card, tp.Dept,b.Bill_Id,


b.Bill_Value,b.Reason_Number
from Tax_Payer_Info as tp join Bills as b on tp.Tax_Payer_Card =
b.Tax_Payer_Card

42
43

ВИСНОВКИ
Метою курсової роботи було проектування бази даних для
електронного збереження документів. Для виконання курсової роботи було
проведено усі необхідні дослідження в результаті в результаті яких були
надані рішення для доступу до електронних документів та електронного
оформлення певних послуг.

Після цього була створена концептуальна модель та ER-діаграма


предметної області, що базується на концепції опису інформаційної моделі
через опис сутностей, атрибутів і зв’язків. Ця діаграма дозволила візуально
показати концептуальну модель предметної області та отримати перший
зворотній зв’язок для її покращення. При побудові концептуальної моделі
використовувалися теорії нормалізації, остаточне представлення предметної
області було представлено у третій нормальній формі. Використання вищих
нормальних форм не було потрібно.

Логічне та фізичне проектування бази даних полягало у перетворенні


концептуальної моделі у реляційну.

Реляційна база даних була представлена у вигляді SQL-команд для


створення таблиць, їх заповнення та деяких пошукових запитів.

В даній курсовій роботі була створена реляційна база даних «Система


збереження документів» у системі управління базами даних Microsoft SQL
Server 2018.

За необхідності базу даних можна розширити, додаючи таблиці з


іншими документами.

Таким чином, створення бази даних «Система збереження документів»


є актуальною, сучасною і корисною.

43
44

Список використаної літератури


1) Проектирование информационных систем и баз данных - Page 20
Владимир Стасышин · 2022

2) Информационные системы и базы данных: организация и


проектирование- Page 156 Пирогов Владислав Юрьевич 2009

3) Економічна та інформаційна безпека: проблеми та перспективи: Матеріали


міжнародної науково-практичної конференції - А.Є. Фоменко;
Л.Р.Наливайко; О.А. Сидоров; Е.В. Рижков; О.В. Марченко; А.В. Самотуга -
Сторінка 62

4) Теорія та методика навчання математики, фізики, інформатики. Випуск


VIII: Том 3 - Page 106 2010 В. М. Соловйов, М. І. Жалдак, Ю. С. Рамський та
інші.

5) Основи проектування систем штучного інтелекту - О. В. Циганов - стор 32

6) Работа с базами данных в C++ Builder - Хомоненко А. Д. - стор. 23

7) Базы данных. Учебное пособие. Для студентов - Иван Трещев, Екатерина


Кудряшова

8) Основи проектування баз даних - Є. В. Малахов - Page 45

9) Технологии проектирования баз данных – Дмитрий Осипов стор 134

10) SQL Procedures, Triggers, and Functions on IBM DB2 - By Hernando


Bedoya, Jim Bainbridge, Rob Bestgen, Mike Cain, Dan Cruikshank, Jim Denton –
стор 147

11) Code Centric: T-SQL Programming with Stored Procedures and Triggers By
Garth Wells – стор 403

12) The Guru's Guide to SQL Server Stored Procedures, XML, and HTML By Ken
Henderson – стор 37

13) MySQL Stored Procedure Programming By Guy Harrison, Steven Feuerstein –


стор 3

44
45

14) Beginning SQL Queries: From Novice to Professional By Clare Churcher

15) SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulation in
SQL By John L. Viescas

16) T-SQL Querying By Itzik Ben-Gan, Adam Machanic, Dejan Sarka, Kevin
Farlee

45
46

Додаток А. Заповнення таблиць реляційної бази даних

Заповнимо таблицю «Причини штрафів»:

insert into Bills_Reason values


(1, 'за керування автомобілем після того, як суд позбавив водія прав'),
(2, 'за повторне протягом року керування автомобілем без посвідчення
водія'),
(3, 'Непристебнутий ремінь'),
(4, 'Порушення правил проїзду перехресть, обгону, зупинок, проїзд на
червоне світло'),
(5, 'Втеча з місця ДТП'),
(6, 'Створення аварійної ситуації'),
(7, 'Керування ТЗ в нетверезому вигляді'),
(8, 'Перехід в недозволеному місці або на заборонений сигнал світлофора'),
(9, 'Порушення ПДР, що призвело до аварійної ситуації'),
(10, 'Розмови по мобільному телефону без гарнітури')

Перевіряємо результат

select * from Bills_Reason

46
47

Заповнимо таблицю «Картка платника податків»:

insert into Tax_Payer_Info values


(101, 0, 1),
(102, 1000, 2),
(103, 560.5, 3),
(104, 365, 4),
(105, 1543.6, 5),
(106, 0 , 6),
(107, 500 , 7),
(108, 278.4 , 8),
(109, 8420 , 9),
(110, 1500 , 10),
(111, 0 , 11),
(112, 240 , 12),
(113, 750 , 13),
(114, 0 , 14),
(115, 0 , 15)

47
48

Перевіряємо результат

select * from Tax_Payer_Info

48
49

Заповнюємо таблицю «Штрафи»

Insert into Bills values


(1, 6, 1250, 102),
(2, 3, 360, 106),
(3, 8, 250, 104),
(4, 1, 750, 115),
(5, 4, 570, 111),
(6, 1, 950, 103),
(7, 9, 1000, 109),
(8, 5, 590, 107),
(9, 10, 400, 101),
(10, 2, 830, 105)

49
50

Перевіряємо результат:

Select * from Bills

50
51

Заповнюємо таблицю «Паспорт»

insert into Passport values


(201, '2018-06-25', 1),
(202, '2019-01-15',2),
(203, '2020-05-13', 3),
(204, '2021-03-06', 4),
(205, '2022-02-24', 5),
(206, '2018-08-19', 6),
(207, '2019-09-02', 7),
(208, '2020-11-16', 8),
(209, '2021-01-28', 9),
(210, '2018-06-30', 10),
(211, '2019-04-21', 11),
(212, '2020-03-16', 12),
(213, '2021-10-09', 13),
(214, '2019-11-17', 14),
(215, '2020-12-31', 15)

51
52

Перевіряємо результат

select * from Passport

Заповнюємо таблицю «Закордонний паспорт»

Insert into Foreign_Passport values


(301, 'Serhii' , 'Makovetskyi', 'Ukrainian', '2024-05-19', 1),
(302, 'Victor' , 'Litovko', 'Ukrainian', '2024-05-19', 9),
(303, 'Oksana' , 'Korotenko', 'Russian', '2024-05-19', 12),
(304, 'Mykyta' , 'Chepurenko', 'Ukrainian', '2024-05-19', 3),
(305, 'Kirilo' , 'Pivnichnyi', 'Ukrainian', '2024-05-19', 8),
(306, 'Artem' , 'Levchenko', 'Polish', '2024-05-19', 11),
(307, 'Margaret' , 'Tkach', 'Hungarian', '2024-05-19', 6),
(308, 'Oleksiy' , 'Omelchenko', 'Ukrainian', '2024-05-19', 14),
(309, 'Chmut' , 'Anastasia', 'Slovakian', '2024-05-19', 10),
52
53

(310, 'Karina' , 'Yarmolenko', 'Ukrainian', '2024-05-19', 7)

Перевіряємо результат

select * from Foreign_Passport

53
54

Заповнюємо таблицю «Запит на VISA»

insert into Ask_For_VISA values


(401, 50, 'Відвідування родичів', 301, 201),
(402, 70, 'Робота за кордоном', 305, 208),
(403, 20, 'Навчання за кордоном', 307, 206),
(404, 140, 'Переїзд за кордон', 309, 210),
(405, 40, 'Туристична путівка', 304, 203),
(406, 0, 'Гуманітарна процедура за кордоном', 310, 207),
(407, 10, 'Лікування у іноземній клініці', 302, 209),
(408, 50, 'Відвідування родичів', 306, 211),
(409, 0, 'Запрошення на конференцію', 308, 214),
(410, 40, 'Туристична путівка', 303, 212)

54
55

Перевіряємо результат

select * from Ask_For_VISA

55
56

Додаток Б. Створення збережених процедур для


реляційної бази даних

Створимо збережену процедуру для додавання чотирьох років до терміну дії


паспортів людей з номером паспорту від 201 до 203.

create proc RenewDate as


update Passport
set Valid_Until = DATEADD("YEAR",4,Valid_Until)
where Passport.Passport_Number between 201 and 203

Виконуємо процедуру командою “exec RenewDate”.

56
57

Перевіряємо результат ( з лівого боку команда була виконана, з правого – ще


не була виконана)

57
58

Додаток В. Створення тригерів для реляційної бази


даних

Створимо тригер, який би забороняв оновлювати та видаляти рядки таблиці


«Паспорт»

create trigger CancelUpdate


on Passport for update , delete
as print 'Заборонено змінювати/видаляти рядки цієї таблиці!'
rollback tran

Перевіримо тригер на правильність роботи

update Passport
set Person_Id = 5
where Person_Id = 1

58
59

Додаток Г. Створення представлень для реляційної


бази даних
Створимо представлення для таблиці «Запит на VISA».

create view VisaRequest as


select v.VISA_Index, v.VISA_Reason, v.VISA_Value,
fp.Foreign_Passport_Number, p.Passport_Number, fp.Nationality, p.Person_Id
from Ask_For_VISA as v, Foreign_Passport as fp, Passport as p
where fp.Foreign_Passport_Number = v.Foreign_Passport_Number and
p.Passport_Number = v.Passport_Number

Перевіримо результат створеного представлення

59

You might also like