Перелік позначень та скорочень 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перелік позначень та скорочень



ПЕРЕЛІК ПОЗНАЧЕНЬ ТА СКОРОЧЕНЬ

 

БД – база даних;

ПрО – предметна область;

СБП – система бізнес правил;

СУБД – система управління базами даних;

DDL (англ. Data Definition Language) – мова опису даних;

DML (англ. Data Manipulation Language) – мова керування даними;

ER (англ. Entity Relationship) – сутність-зв’язок;

SQL (англ. Structured Query Language) – структурована мова запитів;

UDF (англ. User Defined Function) – визначена користувачем функція.


ВСТУП

 

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

Завдяки сучасним технологіям, є можливість зберігати і обробляли велику кількість інформації. Для роботи будемо використовувати СУБД SQL (Structured query language), що дозволяє навчитися і практикувати роботу з базами даних, а саме: зберігати, редагувати, виконувати пошук, сортирувати та багато чого іншого. А також дає змогу розробляти свої процедури, що є дуже важливим, так як це значно спростовує та оптимізує роботу бази даних.

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

Моєю задачею є створити базу даних, оснастити її функціональністю та довести її до такого виду, щоб нею можна будо користуватися.
1 ОСНОВНІ ПРОБЛЕМИ РОЗРОБКИ СУЧАСНИХ БАЗ ДАНИХ. АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА ЗАДАЧІ КУРСОВОЇ РОБОТИ

 

Актуальність розробки баз даних

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

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

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

Історично системи управління базами даних орієнтувалися на вирішення завдань, пов'язаних у першу чергу з транзакційною обробкою структурованої інформації. Безумовно, найкращим, перевіреним часом рішенням тут була і залишається реляційна модель СУБД. Однак в останні роки область застосування баз даних незмінно розширювалася. З одного боку, потрібно керувати більш широким набором форматів даних, переходячи до вирішення спільних проблем управління корпоративною інформацією. З іншого ­ саме СУБД беруть на себе основні функції інтеграції даних і додатків корпоративних систем. Саме цим пояснюється активний інтерес до обговорення архітектурних принципів і можливостей реалізації баз даних різних моделей ­ постреляційних, об'єктно-реляційних, XML. Останнім часом утворилися нові важливі області застосування баз даних, і кожна з них представляє принципово нове середовище, до якого необхідно адаптувати технології СУБД. Ці області отримали на ринку назви інтелектуально аналізу даних (data mining), сховищ даних (data warehousing), репозиторіїв даних (data repository).

 

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

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

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

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

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

 

Система бізнес-правил

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

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

Система бізнес-правил для предметної області «Мобільний оператор»:

1. Створений абонент складається з номеру, рахунку, тарифу.

2. Кожен абонент може мати тільки один підключений тариф або не мати зовсім.

3. У тарифа має бути мінімум одна услуга.

4. Одна услуга може бути у декількох тарифах.

5. Номера контактів повинні бути унікальними.

6. Один тариф може бути у багатьох абонентів.

7. Абонент не може подзвонити чи відправити смс самому собі.

 

Глосарій проекту

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

Глосарій може бути двомовним та основним. Двомовний глосарій — список понять однією мовою, який визначається через іншу мову або за допомогою синонімів іншої мови. У загальнішому розумінні глосарій містить пояснення понять, доречних для певної області вивчення або дії. Основний глосарій — простий глосарій або термінологічний словник, який пояснює визначення нових понять, особливо для неологізмів.

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

1) Абонент – користувач мобільно оператора.

2) Атрибут – характеристика об’єкта, його властивість.

3) Тариф – сукупність услуг.

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

5) СМС – текстове повідомлення.

6) Дзвінок – звукова трансляція між двома абонентами.

 

Реалізація бази даних

У процесі реалізації бази даних «Мобільний оператор» було створено п’ять таблиць, які повністю характеризують обрану предметну область. Головна таблиця має назву «abonent» і включає до себе усі абоненти, тобто усіх людей, котрі додані до бази. Ключовим полем є поле «id», котре автоматично збільшується на один з додаванням нового абонента. Щодо інших полей таблиці «abonent», то кожна людина (абонент) має:

1) tarrif_id (тариф) – айді поточного тарифа (якщо нема -1);

2) balance (баланс) – баланс;

3) nomer (номер) – номер;

4) activation_time_tariff (час) – час, коли абонент активував тариф;

У кожного абонента підключений тариф або його немає. Тариф представлений у вигляді окремої сутності.

Усі поля таблиці «tariff» зазначені у таблиці 3.1.

 

Таблиця 3.1 – Таблиця «tariff» бази даних «Мобільний оператор»

Ім’я поля Тип даних Опис
id Integer Номер типа, ключ
price Float Ціна за підключення

 

Якщо є тарифи, то повинні бути услуги, які входят до тарифу. Услуга представлена сутністю «service».

Усі поля таблиці «service» зазначені у таблиці 3.2.

 

 

Таблиця 3.2 – Таблиця «service» бази даних «Мобільний оператор»

Ім’я поля Тип даних Опис
id Integer Номер услуги, ключ
name Varchar Назва услуги

 

У різних тарифах можуть бути однакові услуги. Для цього була створена таблиця «tariff_service», в якій зберігається сукупність зав’язків тарифів і услуг. Ця сутність зображена у таблиці 3.3.

 

Таблиця 3.3 – Таблиця «tariff_service» бази даних «Мобільний оператор»

Ім’я поля Тип даних Опис
tariff_id Integer Номер тарифу
service_id Integer Номер услуги
price Float Ціна за використання одиниці услуги

 

Кожен абонент моє можливість відправляти смс повідомлення іншим абонентам. Це реалізовано в сутності «sms».

Усі поля таблиці «sms» зазначені у таблиці 3.4.

 

Таблиця 3.4 – Таблиця «User-person» бази даних «Мобільний оператор»

Ім’я поля Тип даних Опис
id Integer Номер sms, ключ
abonent_id Integer Номер відправника
text Text Текст повідомлення
abonent_to Integer Номер отримувача
time Timestamp Час відправлення

 

Основною можливістю мобільно оператора - це дзвонити іншим абонентам. Всі дзвінки зберігаються в історії. Для зберігання була творена таблиця «history».

Усі поля таблиці «history» зазначені у таблиці 3.5.

 

Таблиця 3.5 – Таблиця «history» бази даних «Мобільний оператор»

Ім’я поля Тип даних Опис
id Integer Номер дзвінка, ключ
abonent_id Integer Номер того, хто телефонує
duration Integer Тривалість дзвінка (секунди)
abonent_to Integer Номер приймаючого
time Timestamp Час дзвінка

 

Створені таблиці повністю відображають функціонування бази даних «Мобільний оператор» та відповідають усім бізнес-правилам. Наступним етапом виконання курсового проекту була генерація SQL-коду відповідної моделі даних, який викладений в додатку A. Також створена візуальна схема БД, яку показано в додатку Б.

 

Creating of queries

SQL is a special-purpose programming language designed for creating, modifying and managing data. SQL query is a call to a database, which executes the modifying, eliminating, sorting, receipt the data based on a special criteria and other manipulations with data. There are such SQL statements as ‘CREATE’, ‘INSERT’, ‘UPDATE’, ‘DELETE’ and others, but the most common operation in SQL is the query which is performed with the ‘SELECT’ statement. ‘SELECT’ retrieves data from one or more tables and it is the most complex statement in SQL, which includes such optional keywords and clauses as ‘FROM’, ‘WHERE’, ‘JOIN’, ‘GROUP BY’, ‘HAVING’, ‘ORDER BY’ and others.

The next step of completing my academic year project is creating queries for the considered application domain “Address book”.

The following query is an example of an‘INSERT’ query that adds data in the table “Person”.

 

INSERT INTO `person` (`Person_ID`, `Name`, `Surname`, `MiddleName`, `Email`, `Address`, `Mobile`, `Type_ID`) VALUES

(0,'Dmitriy','Andreychuk','Alekseevich','dima.andr@gmail.com','Traktorostroiteley str, 140A, 128','0995674409',0),

(2,'Roman','Bezruchko','Jurievich','romab10@gmail.com','Konoplyana str, 76, 23','0673440945',0),

COMMIT;

 

The next ‘INSERT’ query fills data in the table “Role”.

 

INSERT INTO `role` (`Role_ID`, `RoleName`) VALUES

(0,'Guest'),

(1,'User'),

(2,'Admin');

COMMIT;

 

There were the simplest examples of an ‘INSERT’ query. With the statement ‘INSERT’ it is also possible to build more difficult queries, for example to use INSERT INTO <target_table> SELECT <columns> FROM <source_table> to efficiently transfer a large number of rows from one table, such as a staging table, to another table with minimal logging.

This type of query was used to create a backup table of table “User”.

 

INSERT INTO `Users_backup` (`User_ID`, `UserName`, `UserSurname`, `UserEmail`, `Password`, `Role_ID`)

SELECT *

FROM `Users`

COMMIT;

 

This type of ‘INSERT’ query is also used with the certain restriction which can be defined by the ‘WHERE’ clause. The following query will create a new table “Users_names”, which will contain names of all users, where ‘User_ID’ is more then ‘5’.

 

INSERT INTO `Users_names` (`User_ID`, `UserName`)

SELECT (`User_ID`, `UserName`)

FROM `Users`

WHERE `User_ID`>5

COMMIT;

 

The next SQL statement we will consider is ‘UPDATE’. The following ‘UPDATE’ query changes the value of ‘UserName’ field in the table “User_names”, where `User_ID` is ‘4’.

 

UPDATE `User_names`

set UserName = 'Anton'

WHERE User_ID = '4';

 

An ‘UPDATE’ query can be also used to change all values of ‘UserName’ field in this table, but without any restrictions.

 

UPDATE `User_names`

set UserName = 'Victor'

With the statement ‘UPDATE’ it is possible to use such clauses, as ‘WHERE EXISTS’, ‘SELECT’ and even more difficult operators like ‘INNER JOIN’. The following ‘UPDATE’ query changes all values of ‘UserName’ field in the table ‘User’ if ‘User_ID’ column from table ‘User’ corresponds with the ‘User_ID’ column from table ‘User’.

 

UPDATE `user`

SET UserName='Alex'

WHERE EXISTS (SELECT * FROM user_person

WHERE user.`User_ID` = user_person.`User_ID`)

 

An ‘UPDATE’ query can also be used to change more then one field. The following query changes values of several fields in the table ‘Person’.

 

UPDATE person

SET Mobile='0674558204', Email='bakhaaddini@gmail.com'

WHERE Person_ID = 1

 

The next SQL statement we will consider is ‘DELETE’. This type of query removes a record from any table you want. The following ‘DELETE’ query removes the value of the ‘Address’ column, where ‘Person_ID’ = ‘10’.

 

DELETE Address FROM `person`

WHERE Person_ID = 10

 

The WHERE clause specifies which record or records that should be deleted. If you omit the WHERE clause, all records will be deleted like in the following example.

 

DELETE FROM `user_person`

But this operation (deleting all rows) can be performed more quickly by using the special command ‘TRUNCATE TABLE’. If the table contains an identity column, the counter for that column is reset to the seed value defined for the column. If no seed was defined, the default value ‘1’ is used. ‘TRUNCATE TABLE’ removes all rows from a table, but the table structure and its columns, constraints, indexes, and so on remain. The following query removes all records from the ‘User_Person’ table.

 

TRUNCATE table `user_person`

 

The syntax of using ‘DELETE’ statement allows to include in query such clauses as ‘LIMIT’. In this case the delete operation is performed on a deletion of all rows defined with values in the ‘WHERE’ and ‘LIMIT’ constructions. The following example deletes 11 rows from the ‘User’ table beginning with the row where ‘User_ID’ value is ‘6’.

 

DELETE FROM `user`

WHERE User_ID > 5

LIMIT 11

 

The next SQL statement we will consider is ‘SELECT’. SQL ‘SELECT’ statement is used to fetch the data from a database table which returns data in the form of result table. These result tables are called result-sets. ‘SELECT’ is the mostly used SQL command. This type of query has many optional clauses:

1) WHERE, that specifies which rows to retrieve.

2) GROUP BY, which groups rows sharing a property so that an aggregate function can be applied to each group.

3) HAVING, that selects among the groups defined by the ‘GROUP BY’ clause.

4) ORDER BY, which specifies an order in which to return the rows.

5) AS, which provides an alias which can be used to temporarily rename tables or columns.

The following query selects all fields from the table ‘Person’ and sorts this records by surname. This query has one restriction: a name of existing persons must be ‘Vladislav’.

 

SELECT *

FROM person

WHERE Name='Vladislav'

ORDER BY Surname;

 

The next query selects all records from the table ‘Person’ who has ‘Kyivstar’ as a mobile operator.

 

SELECT *

from person

WHERE Mobile LIKE '067%' OR Mobile LIKE '097%'

OR Mobile LIKE '098%' OR Mobile LIKE '096%'

ORDER BY Name

 

The result of this query is shown in a figure 3.1.

 

 

Figure 3.1 – The result of ‘SELECT’ query

The next ‘SELECT’ query contains a ‘COUNT AS’ construction. This query selects those names from the table ‘Person’ which meet more then once.

 

SELECT Name, COUNT(Name) AS 'Amount'

FROM person

GROUP BY Name

HAVING Amount > 1;

 

With the ‘SELECT’ statement it is also possible to use a ‘JOIN’ construction. The following query joins two tables – ‘User_Person’ and ‘User’. The new table consisting of rows of the first and second tables will be the result of this query.

 

SELECT user.`UserName`, `user`.`UserSurname`,

MAX(`user_person`.`MeetingDate`) AS LastDate

FROM user

JOIN user_person ON user.`User_ID`=user_person.`User_ID`

GROUP BY user.`UserName`, user.`UserSurname`

ORDER BY LastDate

 

The next type of queries we will consider is nested queries. Nested queries are queries which are contained in a body of other query. The following nested query consists of the ‘SELECT IN SELECT’ construction.

 

SELECT UserName, UserSurname

FROM user

WHERE User_ID IN

(SELECT User_ID

FROM user_person

WHERE Person_ID = 3)

The result of this query is shown on a figure 3.2.

 

 

Figure 3.2 – The result of the first nested query

 

It is possible to use more than one ‘SELECT IN SELECT’ construction if you need to use three or more tables to get a necessary data. The following example selects the type of person, which was created by user with value of the identifier equally ‘4’.

 

SELECT Value FROM type

WHERE Type_ID IN

(SELECT Type_ID

FROM person

WHERE Person_ID IN

(SELECT Person_ID

FROM user_person

WHERE User_ID = 4));

 

The result of this nested query is shown on a figure 3.3.

 

 

Figure 3.3 – The result of the second nested query

 

Syntax of nested queries allows to use even 'JOIN' constructions. The following example of nested queries connects three tables to obtain the necessary data – a name and a surname of the user and a name and a surname of the created person.

 

SELECT user.`UserName`, `user`.`UserSurname`,

MAX(user_person.`MeetingDate`) AS LastDate,

person.Name, person.`Surname`

FROM `user`

JOIN user_person ON user.User_ID = user_person.`User_ID`

JOIN person ON `user_person`.`Person_ID` = person.`Person_ID`

 

The result of this query is shown in a figure 3.4.

 

 

Figure 3.4 – The result of the third nested query

 

In conclusion we will consider the ‘JOIN’ queries. ‘JOIN’ constructions were used in the previous queries, but there were no examples of using ‘FULL OUTER JOIN’, ‘LEFT OUTER JOIN’ or ‘RIGHT OUTER JOIN’ statements. The following query is an example of ‘LEFT OUTER JOIN’ query, which connects two tables – ‘User’ and ‘Role’ to check which user has not a role.

 

SELECT * from user

LEFT OUTER JOIN role

ON user.`Role_ID`=role.`Role_ID`

WHERE RoleName IS NULL

 

There is not any user without a role in created tables, so the result of this query will be an empty table. This result is shown on a figure 3.5.

 

 

Figure 3.5 – The result of the first ‘JOIN’ query

 

The following query uses the ‘RIGHT OUTER JOIN’ statement. The results of this query show which type of person was never used by creating a ‘Person’ table.

 

SELECT Person_ID, Name, Surname, type.`Value`

FROM person

RIGHT OUTER JOIN type

ON person.`Type_ID`=type.`Type_ID`

 

The result of this ‘RIGHT OUTER JOIN’ query is shown on a figure 3.6.

 

 

Figure 3.6 – The result of the second ‘JOIN’ query

The following query selects those people who were created more than one time.

 

SELECT Name, COUNT(user_person.`Person_ID`) AS 'Amount'

FROM person

RIGHT OUTER JOIN user_person

ON person.`Person_ID`=user_person.`Person_ID`

GROUP BY user_person.`Person_ID`

HAVING Amount > 1

 

The result of this query is shown on a figure 3.7.

 

 

Figure 3.7 – The result of the third ‘JOIN’ query

 

3.3.2 Розробка уявлень для відображення результатів вибірки

Під уявленням (View) в базах даних розуміють такий об’єкт, котрий є результатом виконання запиту до бази даних, визначеного за допомогою оператора ‘SELECT’, в момент звернення до уявлення.

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

Переваги використання уявлень:

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

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

3) Зручність у використанні за рахунок автоматичного виконання таких дій, як доступ до певної частини рядків і/або стовпців, отримання даних з декількох таблиць та їх перетворення за допомогою різних функцій.

4) Уявлення приховують від прикладної програми складність запитів і саму структуру таблиць БД. Коли прикладній програмі потрібна таблиця з певним набором даних, вона робить найпростіший запит з підготовленого уявлення.

Наступне уявлення «Person_Type» з’єднує необхідну інформацію із двох таблиць – «Person» і «Type» для зручного перегляду усіх створених контактів та їх типів.

 

CREATE VIEW Person_Type (Name, Surname, Mobile, Type)

AS SELECT Name, Surname, Mobile, type.`Value`

FROM person

JOIN type ON `person`.`Type_ID` = type.`Type_ID`

 

Результат уявлення «Person_Type» зображено на рисунку 3.8.

 

 

Рисунок 3.8 – Результат уявлення «Person_Type»

 

У базі даних існує таблиця «User_Person», котра зберігає ідентифікатор користувача та контактів, котрих він створив, а також дату їх знайомства. Але для зручного використання необхідно також знати хоча б ім’я та прізвище користувача та контакту. Щоб кожного разу для отримання цієї інформації не виконувати команду «SELECT», було створене наступне уявлення «Person_Users».

 

CREATE VIEW Person_Users (UserName, UserSurname, MeetingDate,

PersonName, PersonSurname, Type) AS

SELECT user.UserName, user.UserSurname, user_person.`MeetingDate`,

`person`.`Name`, person.`Surname`, type.`Value`

FROM person

JOIN type ON `person`.`Type_ID` = type.`Type_ID`

JOIN user_person ON person.`Person_ID` = user_person.`Person_ID`

JOIN user ON user_person.`User_ID` = user.`User_ID`

Результат створеного уявлення «Person_Users» зображено на рисунку 3.9.

 

 

Рисунок 3.9 – Результат уявлення «Person_Users»

 

ВИСНОВКИ

 

У процесі виконання курсового проекту була визначена предметна область, основні сутності та зв’язки між ними в межах цієї предметної області. Була визначена система бізнес-правил, відповідно до вимог якої дані і будуть міститися в таблицях БД. Також побудована концептуальна та логічна модель даних. Чимало уваги було приділено вибору СУБД, серед яких для поставленого завдання найбільше підійшла СУБД MySQL.

Далі на основі концептуальної та логічної моделі була створена безпосередньо база даних та наповнена записами для роботи з нею. Дана БД забезпечує надійне зберігання інформації, а також істотну економію часу, що витрачається на пошук, редагування та видалення існуючих даних. Наступним етапом була розробка запитів до бази даних, використовуючи такі SQL-оператори, як ‘INSERT’, ‘UPDATE’, SELECT’, ‘DELETE’ та ‘JOIN’. Також були створені уявлення, збережені процедури та тригери. У процесі виконання курсового проекту було виділено три розділи.

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

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

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

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


СПИСОК ІНФОРМАЦІЙНИХ ДЖЕРЕЛ

 

1 Базы данных – Понятие базы данных // [Електронний ресурс]// Режим доступу: http://www.site-do.ru/db/db1.php

2 База даних // [Електронний ресурс]// Режим доступу: https://ru.wikipedia.org/wiki/База_даних

3 Основні відомості про бази даних // [Електроний ресурс]// Режим доступу: http://office.microsoft.com/uk-ua/access-help/HA010064450.aspx

4 SQL SELECT Statement // [Електронний ресурс]// Режим доступу:

http://www.w3schools.com/sql/sql_select.asp

5 SQL – SELECT Query // [Електронний ресурс]// Режим доступу: http://www.tutorialspoint.com/sql/sql-select-query.htm

6 ELSE (IF…ELSE) (Transact-SQL) // [Електронний ресурс]// Режим доступу: https://msdn.microsoft.com/ru-ru/library/ms182587.aspx

7 Полезные запросы в MySQL // [Електронний ресурс]// Режим доступу: http://plutov.by/post/mysql_useful_queries

8 Запросы MySQL: UPDATE // [Електронний ресурс]// Режим доступу: http://oftob.com/mysql-запросы/629-mysql-update-1

9 MySQL Примеры использования команды JOIN // [Електронний ресурс]// Режим доступу: http://eddnet.org/?p=1580

10 Выборка данных – оператор SELECT // [Електронний ресурс]// Режим доступу: http://www.site-do.ru/db/sql4.php

11 JOIN (SQL) // [Електронний ресурс]// Режим доступу: https://ru.wikipedia.org/wiki/Join_(SQL)

12 SQL и оператор JOIN // [Електронний ресурс]// Режим доступу: http://www.k-press.ru/cs/2009/3/join/join.asp

13 Outer joins // [Електронний ресурс]// Режим доступу: https://msdn.microsoft.com/en-us/library/ms714641(v=vs.85).aspx

14 SELECT Syntax // [Електронний ресурс]// Режим доступу: https://dev.mysql.com/doc/refman/5.0/en/select.html

15 SQL – Вложенные запросы // [Електронний ресурс]// Режим доступу: http://www.site-do.ru/db/sql5.php

16 User – Defined Variables // [Електронний ресурс]// Режим доступу: https://dev.mysql.com/doc/refman/5.0/en/user-variables.html

17 PRINT (Transact – SQL) // [Електронний ресурс]// Режим доступу: https://msdn.microsoft.com/ru-ru/library/ms176047.aspx

18 Вложенные запросы SQL // [Електронний ресурс]// Режим доступу: http://bd-sql-xml.org.ua/index.php/zaprosy-sql/18-slozhnye-zaprosy-sql/60-vlozhennye-zaprosy-sql

19 Создание и уничтожение представлений // [Електронний ресурс]// Режим доступу: http://wm-help.net/books-online/book/83971/83971-44.html

20 Представления (VIEW) в MySQL // [Електронний ресурс]// Режим доступу: http://habrahabr.ru/post/47031/

21 ВВЕДЕНИЕ: ПРЕДСТАВЛЕНИЯ // [Електронний ресурс]// Режим доступу: http://www.mysql.ru/docs/gruber/mg20.html

22 Введение в хранимые процедуры MySQL 5 // [Електронний ресурс]// Режим доступу: http://ruseller.com/lessons.php?rub=28&id=1189

23 Хранимая процедура // [Електронний ресурс]// Режим доступу: https://ru.wikipedia.org/wiki/Хранимая_процедура

24 Хранимые процедуры и триггеры // [Електронний ресурс]// Режим доступу: http://www.zoonman.ru/library/mysql_sr_and_t.htm

25 Триггеры // [Електронний ресурс]// Режим доступу: http://www.rldp.ru/mysql/mysqlpro/triggers.htm

26 Триггеры в MySQL // [Електронний ресурс]// Режим доступу: http://habrahabr.ru/post/37693/

27 RAISERROR (Transact – SQL) // [Електронний ресурс]// Режим доступу: https://msdn.microsoft.com/ru-ru/library/ms178592.aspx

 


ДОДАТОК А

 

SQL-скрипт бази даних «Мобільний оператор»

 

# SQL Manager for MySQL 5.5.3.46984

# ---------------------------------------

# Host: localhost

# Port: 3306

# Database: project

 

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

 

SET FOREIGN_KEY_CHECKS=0;

 

CREATE DATABASE `project`

CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci';

 

USE `project`;

 

#

# Структура для таблицы `abonent`:

#

 

CREATE TABLE `abonent` (

`id` INTEGER(11) NOT NULL AUTO_INCREMENT,

`balance` FLOAT(11,2) NOT NULL DEFAULT 0.00,

`nomer` INTEGER(13) NOT NULL,

`activation_time_tariff` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

`tariff_id` INTEGER(11) NOT NULL DEFAULT -1,

PRIMARY KEY (`id`) USING BTREE

) ENGINE=InnoDB

AUTO_INCREMENT=12 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

;

 

#

# Структура для таблицы `history`:

#

 

CREATE TABLE `history` (

`id` INTEGER(11) NOT NULL AUTO_INCREMENT,

`abonent_id` INTEGER(11) NOT NULL,

`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

`abonent_to` INTEGER(11) NOT NULL,

`duration` INTEGER(11) NOT NULL,

PRIMARY KEY (`id`) USING BTREE,

KEY `abonent_id` (`abonent_id`) USING BTREE

) ENGINE=InnoDB

AUTO_INCREMENT=18 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

;

 

#

# Структура для таблицы `service`:

#

 

CREATE TABLE `service` (

`id` INTEGER(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(100) COLLATE utf8_general_ci NOT NULL,

PRIMARY KEY (`id`) USING BTREE

) ENGINE=InnoDB

AUTO_INCREMENT=9 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

;

 

#

# Структура для таблицы `sms`:

#

 

CREATE TABLE `sms` (

`id` INTEGER(11) NOT NULL AUTO_INCREMENT,

`abonent_id` INTEGER(11) NOT NULL,

`text` TEXT COLLATE utf8_general_ci NOT NULL,

`abonent_to` INTEGER(11) NOT NULL,

`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`id`) USING BTREE

) ENGINE=InnoDB

AUTO_INCREMENT=2 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

;

 

#

# Структура для таблицы `tariff`:

#

 

CREATE TABLE `tariff` (

`id` INTEGER(11) NOT NULL AUTO_INCREMENT,

`price` FLOAT(11,2) NOT NULL,

`delay` INTEGER(11) NOT NULL,

`name` VARCHAR(100) COLLATE utf8_general_ci NOT NULL,

PRIMARY KEY (`id`) USING BTREE

) ENGINE=InnoDB

AUTO_INCREMENT=5 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

;

 

#

# Структура для таблицы `tariff_service`:

#

 

CREATE TABLE `tariff_service` (

`id` INTEGER(11) NOT NULL AUTO_INCREMENT,

`tariff_id` INTEGER(11) NOT NULL,

`service_id` INTEGER(11) NOT NULL,

`price` FLOAT(11,2) NOT NULL,

PRIMARY KEY (`id`) USING BTREE,

KEY `service_id` (`service_id`) USING BTREE

) ENGINE=InnoDB

AUTO_INCREMENT=10 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

;

 

#

# Определение для представления `abonent_last`:

#

 

CREATE ALGORITHM=UNDEFINED DEFINER='root'@'localhost' SQL SECURITY DEFINER VIEW `abonent_last`

AS

select

`abonent`.`id` AS `id`,

`abonent`.`balance` AS `balance`,

`history`.`abonent_to` AS `abonent_to`,

max(`history`.`time`) AS `last`

from

(`abonent`

join `history` on ((`history`.`abonent_id` = `abonent`.`id`)))

group by

`history`.`time`;

 

#

# Data for the `abonent` table (LIMIT 0,500)

#

 

INSERT INTO `abonent` (`id`, `balance`, `nomer`, `activation_time_tariff`, `tariff_id`) VALUES

(2,24.00,634455999,'2016-03-31 02:21:58',2),

(3,60.00,997744334,'2016-03-31 02:24:31',-1),

(4,-1.00,997746364,'2016-03-31 02:24:57',4),

(5,100.00,777777777,'2016-03-31 02:26:00',-1),

(6,1.00,2123213,'2016-04-11 19:21:26',1),

(10,0.00,213123,'2016-04-11 20:45:45',-1),

(11,0.00,0,'2016-04-21 20:56:22',-1);

COMMIT;

 

#

# Data for the `history` table (LIMIT 0,500)

#

 

INSERT INTO `history` (`id`, `abonent_id`, `time`, `abonent_to`, `duration`) VALUES

(3,2,'2016-03-31 02:26:29',3,60),

(4,3,'2016-03-31 02:27:40',5,120),

(5,5,'2016-03-31 02:27:48',2,10),

(6,4,'2016-03-31 02:27:55',2,30),

(7,3,'2016-04-11 17:41:14',2,123),

(8,1,'2016-04-11 17:41:27',4,456),

(9,1,'2016-04-11 17:42:18',3,456),

(10,2,'2016-04-11 17:42:18',4,456),

(11,4,'2016-04-11 17:42:18',1,456),

(12,3,'2016-04-11 17:42:18',3,456),

(13,2,'2016-04-11 17:42:18',2,456),

(14,3,'2016-04-11 17:42:18',1,456),

(15,1,'2016-04-11 17:42:18',3,456),

(16,2,'2016-04-11 17:42:18',2,456),

(17,4,'2016-04-11 17:42:18',3,456);

COMMIT;

 

#

# Data for the `service` table (LIMIT 0,500)

#

 

INSERT INTO `service` (`id`, `name`) VALUES

(4,'internet'),

(5,'sms'),

(6,'mms'),

(7,'звонки'),

(8,'internet 3G');

COMMIT;

 

#

# Data for the `sms` table (LIMIT 0,500)

#

 

INSERT INTO `sms` (`id`, `abonent_id`, `text`, `abonent_to`, `time`) VALUES

(1,0,'Благодарим вас за покупку сим-карты! Пополните себе счет: #123',2,'2016-04-11 19:47:58');

COMMIT;

 

#

# Data for the `tariff` table (LIMIT 0,500)

#

 

INSERT INTO `tariff` (`id`, `price`, `delay`, `name`) VALUES

(2,20.00,30,'Зашибись'),

(3,40.00,30,'Все, что нужно'),

(4,100.00,30,'Все включено');

COMMIT;

 

#

# Data for the `tariff_service` table (LIMIT 0,500)

#

 

INSERT INTO `tariff_service` (`id`, `tariff_id`, `service_id`, `price`) VALUES

(1,4,3,1.00),

(2,4,5,2.00),

(3,4,5,1.00),

(4,4,7,3.00),

(5,4,7,3.00),

(6,4,8,1.00),

(7,3,7,2.00),

(8,3,8,4.00),

(9,2,8,3.25);

COMMIT;

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


ДОДАТОК Б

 

Візуальна схема бази даних «Мобільний оператор»

 

 

Рисунок Б.1 – Візуальна схема бази даних

 

ПЕРЕЛІК ПОЗНАЧЕНЬ ТА СКОРОЧЕНЬ

 

БД – база даних;

ПрО – предметна область;

СБП – система бізнес правил;

СУБД – система управління базами даних;

DDL (англ. Data Definition Language) – мова опису даних;

DML (англ. Data Manipulation Language) – мова керування даними;

ER (англ. Entity Relationship) – сутність-зв’язок;

SQL (англ. Structured Query Language) – структурована мова запитів;

UDF (англ. User Defined Function) – визначена користувачем функція.


ВСТУП

 



Поделиться:


Последнее изменение этой страницы: 2016-08-06; просмотров: 321; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.119.148 (0.547 с.)