You are on page 1of 17

ЗМІСТ

1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ .................................................................. 7


2 РОЗРОБЛЕННЯ БАЗИ ДАНИХ ЗАСОБАМИ СКБД POSTGRESQL .......... 8
2.1 Створення таблиць .................................................................................... 8
2.2 Створення запитів ......................... Ошибка! Закладка не определена.
2.6 Тестування бази даних ........................................................................... 14
Додатки………………………………………………………………………...…0
Висновки .............................................................................................................. 20
Список використаних джерел ............................................................................ 21

КП.ПІ-20-01.05.01.00.000 ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Вовчук С.С. Літ. Арк. Аркушів
Розробка бази даних з предметної
Перевір. Левицький І.В області “Косметика ” 21 21

Пояснювальна записка
Н. контр. ВСП ФКЕП ІФНТУНГ, ПІ-20-01
Вступ
Бази даних – це логічно модельовані кластери інформації або даних. З іншого
боку, СКБД (Система керування базами даних) – це програмне забезпечення, яке
використовується для зберігання та доступу до даних простим та ефективним
способом. СКБД надає інтерфейс для виконання різних операцій, таких як
створення бази, зберігання та оновлення даних, створення таблиці та багато іншого,
також завжди забезпечує незалежність даних.
Метою курсового проєкту є проєктування і реалізація бази даних з
предметної області «ІТ-компанії». Її розробку було виконано у двох СКБД:
PostgreSQL та MySQL.
MySQL – це система керування реляційними базами даних з відкритим
кодом. MySQL – крос-платформенна система. Її можна використовувати практично
у всіх сучасних операційних системах, в тому числі Windows, Linux, Mac OS,
Solaris, HP-UX та ін. Вона використовується, в першу чергу, для створення
динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних мов
програмування. MySQL використовують такі компанії, як: GitHub, NASA, Tesla,
Netflix, Facebook, Twitter, YouTube, Spotify
SQL (Structured Query Language) – основний інтерфейс роботи з реляційними
БД. SQL став стандартом Національного інституту стандартів США (ANSI) в 1986
році. Стандарт ANSI SQL підтримується всіма популярними ядрами реляційних
БД. SQL використовується для додавання, оновлення та видалення даних,
вилучення наборів даних для обробки транзакцій і аналітичних програм, а також
для управління всіма аспектами роботи бази даних.
MySQL має підтримку не всіх функцій і можливостей SQL. Це зроблено для
того, щоб працювати з MySQL було просто і зручно. Але якщо для проєкту
необхідно якесь розширення, розробники його можуть додати не на шкоду.

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
6
Змн. Арк. № докум. Підпис Дата
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ
Косме́тика — загальна назва засобів і речовин, що застосовують для
поліпшення зовнішнього вигляду або запаху людського тіла. До косметики
входять: креми для тіла, лосьйони, порошки, парфуми, помади, лаки для нігтів, тіні
для повік, туш для вій, хімічна завивка, кольорові контактні лінзи, фарби для
волосся, лак і гелі для волосся, дезодоранти, дитячі продукти, олії, солі для ванн та
багато інших виробів. Їхнє використання має значне поширення, особливо серед
жінок західних країн. Багато виробників розрізняють прикрашальну косметику та
косметику для догляду за шкірою тіла. Більший попит має саме декоративна
косметика. У XX столітті виникло багато компаній і підприємств, що виробляють
продукти для прикрашання і поліпшення запаху тіла людини. Деякі з них стали
транснаціональними корпораціями[1].
Існує кілька класифікацій косметичних засобів декоративного призначення.
Щодо місця застосування:
- З догляду за нігтями – лаки, емалі;
- Для піклування за волоссям (естетичного призначення) – засоби для
зміни форми волосся (препарати для хімічної завивки); засоби для укладання
волосся і закріплення зачіски (муси, піни, лаки); засоби для зміни кольору волосся
(фарби, відтінкові шампуні, освітлювачі волосся).
- Стосовно догляду за обличчям: повіки (тіні для вік, контурні олівці,
каяли, підводки, лайнери); вії (туш для вій); брови (олівці, туш для брів); щоки
(рум'яна); червона облямівка губ (губні помади, блиск для губ, контурні олівці) ;
обличчя в цілому (пудра, тональні креми, ґрунтовка).
Згідно природи дисперсної системи:
- Гомогенні системи (лаки для нігтів)
- Гетерогенні системи (порошки, суспензії, аерозолі, гелі)
Згідно складом:

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
7
Змн. Арк. № докум. Підпис Дата
- Органічні та природні компоненти
- Емульгатори
- Консерватори
- Барвники
- Продукти нафтохіміїДля всіх, хто продовжить свій доступ - ми будемо
дуже
тісно займатись з Вами для того, щоб довести до конкретних результатів у роботі з
фріланс клієнтами чи роботі на закордонні компанії

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


деякі з них: L'Oréal, Christian Dior та інші.
2 РОЗРОБЛЕННЯ БАЗИ ДАНИХ ЗАСОБАМИ СКБД PostgresSQL
Система управління об'єктно-реляційною базою даних, відома зараз як
PostgreSQL, походить від пакету POSTGRES, написаного в Каліфорнійському
університеті в Берклі. З більш ніж двома десятиліттями розвитку позаду нього
PostgreSQL – це найдосконаліша база даних з відкритим кодом, доступна в будь-
якому місці.
Таблиця в реляційній базі даних схожа на таблицю на папері: вона так само
складається з рядків і стовпців. Число і порядок стовпців фіксовані, а кожен
стовпець має ім'я.
Кожному стовпцю присвоюється певний тип даних. Тип даних обмежує набір
допустимих значень, які можуть міститись в полі і визначає смислове значення
даних для обчислень.

2.1 Створення таблиць


Data Definition Language (DDL) – це група операторів визначення даних.
Іншими словами, за допомогою операторів, що входять в цю групу, відбувається

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
8
Змн. Арк. № докум. Підпис Дата
визначення структури бази даних та робота з об'єктами цієї бази, тобто
створюється, змінюється і видаляється їх. В цю групу входять такі оператори:
CREATE – використовується для стовення об’єктів БД, ALTER – для модифікації
об’єктів БД та DROP – для видалення об’єктів БД.
Таблиця в реляційній базі даних схожа на таблицю на папері: вона так само
складається з рядків і стовпців. Число і порядок стовпців фіксовані, а кожен
стовпець має ім'я.
Кожному стовпцю присвоюється певний тип даних. Тип даних обмежує набір
допустимих значень, які можуть міститись в полі і визначає смислове значення
даних для обчислень.
Для створення таблиці використовується команда CREATE TABLЕ:
Кожному стовпцю присвоюється певний тип даних. Тип даних обмежує набір
допустимих значень, які можуть міститись в полі і визначає смислове значення
даних для обчислень.
Отже створімо код створення наших таблиць:

CREATE TABLE ResourceTypes (


ResourceTypeId SERIAL PRIMARY KEY NOT NULL,
Name VARCHAR(100) NOT NULL UNIQUE,
Description VARCHAR(400) NOT NULL);

CREATE TABLE Resource (


ResourceId SERIAL NOT NULL PRIMARY KEY NOT NULL,
Name VARCHAR(100) NOT NULL,
ResourceTypeId SERIAL NOT NULL,
Description VARCHAR(400) NOT NULL,
FOREIGN KEY (ResourceTypeId) REFERENCES ResourceTypes(ResourceTypeId));

CREATE TABLE CosmeticTool (


CosmeticToolId SERIAL PRIMARY KEY NOT NULL,
Name VARCHAR(100) NOT NULL,
Description VARCHAR(400) NOT NULL);

CREATE TABLE Producers (


ProducerId SERIAL PRIMARY KEY NOT NULL,
Name VARCHAR(100) NOT NULL,
Phone VARCHAR(13) NOT NULL,
Description VARCHAR(400) NOT NULL,
StartProduce TIMESTAMP NOT NULL);

CREATE TABLE Cosmetics (

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
9
Змн. Арк. № докум. Підпис Дата
CosmeticId SERIAL PRIMARY KEY NOT NULL,
ProducerId SERIAL NOT NULL ,
CosmeticToolId SERIAL NOT NULL,
Name VARCHAR(100) NOT NULL,
Description VARCHAR(400) NOT NULL,
StartProduce TIMESTAMP NOT NULL,
FOREIGN KEY (ProducerId) REFERENCES Producers(ProducerId),
FOREIGN KEY (CosmeticToolId) REFERENCES CosmeticTool(CosmeticToolId)
);

CREATE TABLE ChemicalCompositions (


ResourceId SERIAL NOT NULL,
CosmeticId SERIAL NOT NULL,
ConsistenceProcent float NOT NULL CHECK (ConsistenceProcent > 0 AND
ConsistenceProcent < 100),
FOREIGN KEY (ResourceId) REFERENCES Resource(ResourceId),
FOREIGN KEY (CosmeticId) REFERENCES Cosmetics(CosmeticId),
PRIMARY KEY (ResourceId,CosmeticId));

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

Тип даних Опис


Serial чотирибайтне ціле число з автоінкрементацією
Int чотирибайтне ціле число
Float число одинарної точності з плаваючою точкою
Varchar символьний рядок змінної довжини
Timestamp Дата та час
Таблиця 1 – Типи даних

Варто зазначити також, що при створенні бази даних використовувалися


наступні обмеження, а саме:
- Foreign Key: посилання на запис у іншій таблиці
- Primary Key: унікальне значення у таблиці
- NOT NULL: значення не має дорівнювати NULL
- CHECK (ConsistenceProcent > 0 AND ConsistenceProcent < 100):
перевіряє чи входить консистенція у заданий відсотковий діапазон

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
10
Змн. Арк. № докум. Підпис Дата
- UNIQUE: вимагає мати унікальне значення для кожного запису у базі
даних
Тепер створімо запити та View до нашої бази даних. Представлення (View) –
це віртуальна таблиця, вміст якої визначається запитом. Як і таблиця,
представлення складається з ряду іменованих стовпців і рядків даних. Рядки і
стовпці даних беруться з таблиць, зазначених у запиті і динамічно створюваних при
зверненнях до представлення. Представлення виконує функцію фільтру базових
таблиць, на які воно посилається, нижче наведено код запитів:

CREATE OR REPLACE VIEW FullCosmeticInformation AS


select cos.cosmeticid, cos."name", cos.Description, prod.Name Producer,
ct.Name ToolType
FROM COSMETICS cos
inner JOIN Producers prod ON prod.ProducerId = cos.ProducerId
inner JOIN cosmetictool ct ON ct.CosmeticToolId = cos.CosmeticToolId;

CREATE OR REPLACE VIEW GetProducerCosmetics AS


Select p.ProducerId, p."name", Count(cos) total
From Cosmetics cos
Inner Join Producers p ON p.ProducerId = cos.ProducerId
Group by p.ProducerId, p.Name
Order by total DESC;

CREATE OR REPLACE VIEW FullResourceInformation AS


select res.Name, rt.Name ResourceType
FROM Resource res
inner join ResourceTypes rt ON rt.ResourceTypeId = res.ResourceTypeId;

CREATE OR REPLACE VIEW GetProductResourceCount AS


select cc.CosmeticId, Count(cc.resourceid)
FROM ChemicalCompositions cc
Group by cc.CosmeticId;

CREATE OR REPLACE VIEW GetInvalidConsistenceProcent AS


select cc.CosmeticId, Sum(cc.ConsistenceProcent)
FROM ChemicalCompositions cc
Group by cc.CosmeticId
having Sum(cc.ConsistenceProcent) > 100;

Перегляньмо що виконує кожен із запитів:


- FullCosmeticInformation виводить повну інформацію про косметику
- GetProducerCosmetics виводить інформацію про виробника, та його
кількість косметики

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
11
Змн. Арк. № докум. Підпис Дата
- FullResourceInformation виводить повну інформацію про компоненти
косметики
- GetProductResourceCount виводить повну інформацію про кількість
задіяних ресурсів у косметиці
- GetInvalidConsistenceProcent виводить інформацію для косметики в якій
невірно заповнена консистенція.
Тепер створімо наші функції. Функція – це об'єкт бази даних. В
основному це набір операторів SQL, які приймають лише вхідні параметри,
виконують дії та повертають результат. Функція може повернути лише одне
значення або таблицю, код наведено нижче:
CREATE OR REPLACE FUNCTION GetCosmeticAfter (ryear TIMESTAMP)
RETURNS TABLE(cosmeticid int, name varchar(100))
AS $$
BEGIN
return query
select cos.cosmeticid, cos."name"
From Cosmetics cos
Where cos.StartProduce > ryear;
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION GetCosmeticResources (rcosmeticId int)


RETURNS TABLE("name" varchar, ConsistenceProcent float)
AS $$
BEGIN
return query
select res.Name, cc.ConsistenceProcent
FROM ChemicalCompositions cc
inner join Resource res ON res.ResourceId = cc.ResourceId
WHERE cc.CosmeticId = rcosmeticId;
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION GetProducerAfter (ryear TIMESTAMP)


RETURNS TABLE(producerid int, "name" varchar(100))

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
12
Змн. Арк. № докум. Підпис Дата
AS $$
BEGIN
return query
select p.producerid, p.name
From Producers p
Where p.StartProduce > ryear;
END
$$ LANGUAGE plpgsql;

create OR REPLACE function IsUniqResourceType (rname varchar(100))


RETURNS BOOLEAN
AS $$
BEGIN
RETURN NOT EXISTS (
SELECT 1
FROM ResourceTypes rt
WHERE rt."name" = rname
);
END
$$ LANGUAGE plpgsql;

Тепер опишемо що виконує кожна функція:


- GetCosmeticAfter: повертає косметику яка випускалась після переданої
дати.
- GetCosmeticResources: повертає склад косметики за її ID.
- GetProducerAfter: повертає компанії, які були засновані після переданої
дати.
- IsUniqResourceType: повертає false якщо ім’я зайняте та true, якщо ім’я
вільне.
Тепер створімо збережені процедури. Збережена процедура являє собою
підпрограму мовою SQL. Збережені процедури дозволяють підвищити
продуктивність, розширюють можливості програмування і підтримують функції
безпеки, недоступні при використанні команд SQL, відправлених для обробки на

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
13
Змн. Арк. № докум. Підпис Дата
сервер. Підвищується продуктивність – за рахунок локального (по відношенню до
бази даних) зберігання та прекомпиляции вихідного тексту процедури.
Можливості програмування розширюються завдяки застосуванню таких
поширених засобів програмування, як використання вхідних і вихідних параметрів,
а також підтримки багаторазового використання вже створених збережених
процедур, код наведено нижче:

create OR REPLACE PROCEDURE InserResourceType(rname varchar(100), rdescription


varchar(100))
LANGUAGE SQL
AS $$
INSERT INTO ResourceTypes ("name", description)
VALUES (rname, rdescription)
$$;

create OR REPLACE PROCEDURE UpdateResourceType(rId int, rname varchar(100),


rdescription varchar(100))
LANGUAGE SQL
AS $$
UPDATE resourcetypes
SET "name" = rname, description = rdescription
WHERE resourceTypeId = rId
$$;

Перша процедура відповідає за створення нового типу ресурсу, а друга за


обновлення за певним типом ID.

2.6 Тестування бази даних


Для розробки та тестування використовувалась pgAdmin4. Перш за все
потрібно додати будь-які записи у відповідні таблиці. Нижче наведено приклад
доданих записів у таблицю.

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
14
Змн. Арк. № докум. Підпис Дата
Рисунок 2 – Запит на отримання 100 записів

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


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

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
15
Змн. Арк. № докум. Підпис Дата
Рисунок 3 – Передання ім’я яке відсутнє у таблиці ResourceType

Тепер використаймо нашу процедуру для створення нового запису у таблиці


ResourceType.

Рисунок 4 – Створення нового запису у таблиці

Тепер перевіримо ще раз за допомогою нашої функції, чи існує тепер запис з


таким ім’ям у таблиці.

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
16
Змн. Арк. № докум. Підпис Дата
Рисунок 5 – Перевірка функції

Тепер для 100% впевненості перевіримо чи з’явився наш запис у нашій


таблиці, для цього виконаймо наступний запит.

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
17
Змн. Арк. № докум. Підпис Дата
Рисунок 6 – Перевірка запису

Як можна побачити тип ресурсу був успішно додан. Тепер перегляньмо


повну інформацію про косметику, викликавши View fullcosmeticinformation, як
зображено нижче.

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
18
Змн. Арк. № докум. Підпис Дата
Рисунок 7 – Результат виклику View

Як можна побачити виведена назва також виробника яка зберігається в


окремій таблиці та назва типу застосування. Перегляньмо, ще одне View
getinvalidconsistenceprocent, яка виводить тільки ті косметичні продукти, зміст яких
перевищує 100 відсотків, що саме по собі неможливе.

Рисунок 8 – Перегляд невалідної косметики за складом

Отже у нас невідповідність у двох записах таблиці косметики

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
19
Змн. Арк. № докум. Підпис Дата
Висновки
В даному курсовому проекті була створена база даних, яка реалізує базові
дані які зберігаються про косметику. Було проаналізовано багато нюансів,
пов’язаних як з предметною областю, так і з областю баз даних. З метою спрощення
реалізації задачі було вирішено пропустити такі етапи реалізації предметної
області, можливість виробникам створювати спільний парфюм, вважається, що
кожена косметика, може мати лише одного виробника, ще одним мінусом
вважається що один і той же косметичний засіб, може мати лише один інтерфейс
використання (або тільки порошок, або тільки гель).
До позитивних моментів роботи – була розроблена система яка може бути
використана для обліку наявних косметичних засобів. Також система може бути
легко розширена у майбутньому.
Серед негативних моментів – так як предметна область дуже обширна, було
опущено деякі моменти, наприклад те, що різниця між органічною та натуральною
косметикою є фактично лише юридична. Тим не менш, після її реалізації можна
отримати продукт, який принесе користь для компаній які займаються продажем
косметики, значно спростять пошук косметики за певними параметрами та
дозволяє легко фільтрувати дані.

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
20
Змн. Арк. № докум. Підпис Дата
Список використаних джерел
1. Конспект лекцій з дисципліни «Бази даних (Частина ІІ)» для спеціаль-
ності 121 «Інженерія програмного забезпечення». Укладач: Левицький І.В. – викла-
дач ВСП «Фаховий коледж електронних приладів ІФНТУНГу».
2. Методичні вказівки до виконання курсового проєкту з дисципліни
«Бази даних (Частина ІІ)» для спеціальності 121 «Інженерія програмного забезпе-
чення». Розробник: Левицький І.В. – викладач ВСП «Фаховий коледж електронних
приладів ІФНТУНГу».
3. Освітньо-професійна програма «Інженерія програмного забезпечення»
спеціальності 121 Інженерія програмного забезпечення ВСП «Фаховий коледж еле-
ктронних приладів ІФНТУНГу».
4. Положення про курсові та дипломні роботи у ВСП «Фаховий коледж
електронних приладів ІФНТУНГу» введені в дію наказом директора №96 від 31
серпня 2021 року.
5. Косметика — Вікіпедія (wikipedia.org)
6. PostgreSQL: Documentation
7. Бондарєв А. В., Удалова В. К. Грамотна побудова Use-Case-діаграм: навч.
посіб. — Київ: ITbooks, 2008. — 123 с.
8. Download (pgadmin.org)
9. pgAdmin 4 — pgAdmin 4 6.15 documentation

Арк.
КП.ПІ-20-01.05.02.00.000 ПЗ
21
Змн. Арк. № докум. Підпис Дата

You might also like