- •Перелік позначень та скорочень
- •1 Основні проблеми розробки сучасних баз даних. Аналіз предметної області та постановка задачі курсової роботи
- •1.1 Актуальність розробки баз даних
- •1.2 Аналіз наданої предметної області
- •1.2.1 Система бізнес-правил
- •1.2.2 Глосарій проекту
- •1.3 Постановка задачі дослідження
- •2 Моделювання даних предметної області
- •2.1 Розробка концептуальної моделі даних
- •2.2 Проектування логічної моделі бази даних
- •2.3 Аналіз бізнес-логіки обробки даних у предметній області та визначення основних типів запитів у системі
- •3 Реалізація моделі бази даних "адресна книга" у mysql 5.5. Інструментальні засоби
- •3.1 Мотивований вибір субд для реалізації проекту
- •3.2 Реалізація бази даних
- •3.3.2 Розробка уявлень для відображення результатів вибірки
- •3.3.3 Проектування збережених процедур
- •3.3.4 Розробка механізмів управління даними в базі за допомогою тригерів
- •Висновки
- •Список інформаційних джерел
- •Додаток а
- •Додаток б
Додаток а
SQL-скрипт бази даних «Адресна книга»
# SQL Manager for MySQL 5.5.1.45563
# ---------------------------------------
# Host : localhost
# Port : 3306
# Database : AddressBook
/*!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 `AddressBook`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
USE `addressbook`;
#
# Структура для таблицы `type`:
#
CREATE TABLE `type` (
`Type_ID` INTEGER(11) NOT NULL DEFAULT 0,
`Value` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`Type_ID`) USING BTREE,
UNIQUE KEY `XPKType` (`Type_ID`) USING BTREE
) ENGINE=InnoDB
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
#
# Структура для таблицы `operatormts`:
#
CREATE TABLE `operatormts` (
`Person_ID` INTEGER(11) NOT NULL DEFAULT 0,
`Name` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Surname` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`MiddleName` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Email` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Address` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Mobile` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Type_ID` INTEGER(11) NOT NULL,
PRIMARY KEY (`Person_ID`) USING BTREE,
UNIQUE KEY `XPKPerson` (`Person_ID`) USING BTREE,
KEY `XIF1Person` (`Type_ID`) USING BTREE,
CONSTRAINT `operatorMTS_ibfk_1` FOREIGN KEY (`Type_ID`) REFERENCES `type` (`Type_ID`)
) ENGINE=InnoDB
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
#
# Структура для таблицы `person`:
#
CREATE TABLE `person` (
`Person_ID` INTEGER(11) NOT NULL DEFAULT 0,
`Name` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Surname` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`MiddleName` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Email` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Address` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Mobile` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Type_ID` INTEGER(11) NOT NULL,
PRIMARY KEY (`Person_ID`) USING BTREE,
UNIQUE KEY `XPKPerson` (`Person_ID`) USING BTREE,
KEY `XIF1Person` (`Type_ID`) USING BTREE,
CONSTRAINT `person_ibfk_1` FOREIGN KEY (`Type_ID`) REFERENCES `type` (`Type_ID`)
) ENGINE=InnoDB
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
#
# Структура для таблицы `role`:
#
CREATE TABLE `role` (
`Role_ID` INTEGER(11) NOT NULL DEFAULT 0,
`RoleName` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`Role_ID`) USING BTREE,
UNIQUE KEY `XPKRole` (`Role_ID`) USING BTREE
) ENGINE=InnoDB
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
#
# Структура для таблицы `user`:
#
CREATE TABLE `user` (
`User_ID` INTEGER(11) NOT NULL DEFAULT 0,
`UserName` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`UserSurname` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`UserEmail` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Password` VARCHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`Role_ID` INTEGER(11) NOT NULL,
PRIMARY KEY (`User_ID`) USING BTREE,
UNIQUE KEY `XPKUser` (`User_ID`) USING BTREE,
KEY `XIF1User` (`Role_ID`) USING BTREE,
CONSTRAINT `user_ibfk_1` FOREIGN KEY (`Role_ID`) REFERENCES `role` (`Role_ID`)
) ENGINE=InnoDB
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
#
# Структура для таблицы `user_person`:
#
CREATE TABLE `user_person` (
`User_ID` INTEGER(11) NOT NULL,
`Person_ID` INTEGER(11) NOT NULL,
`MeetingDate` DATETIME DEFAULT NULL,
PRIMARY KEY (`User_ID`, `Person_ID`) USING BTREE,
UNIQUE KEY `XPKUser_Person` (`User_ID`, `Person_ID`) USING BTREE,
KEY `XIF1User_Person` (`User_ID`) USING BTREE,
KEY `XIF2User_Person` (`Person_ID`) USING BTREE,
CONSTRAINT `user_person_ibfk_1` FOREIGN KEY (`User_ID`) REFERENCES `user` (`User_ID`),
CONSTRAINT `user_person_ibfk_2` FOREIGN KEY (`Person_ID`) REFERENCES `person` (`Person_ID`)
) ENGINE=InnoDB
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
#
# Определение для процедуры `allActions`:
#
DELIMITER $$
CREATE DEFINER = 'root'@'localhost' PROCEDURE `allActions`(
IN `User` INTEGER(10)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
SELECT * from `person`
WHERE person.`Person_ID` IN
(SELECT Person_ID from `user_person`
WHERE `user_person`.`User_ID`=@User);
END$$
DELIMITER ;
#
# Определение для процедуры `deletePerson`:
#
DELIMITER $$
CREATE DEFINER = 'root'@'localhost' PROCEDURE `deletePerson`(
IN `Person` INTEGER(10)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DELETE from `person`
WHERE person.`Person_ID` = @Person;
DELETE from `user_person`
WHERE `user_person`.`Person_ID` = @Person;
DELETE from `operatormts`
WHERE `operatormts`.`Person_ID` = @Person;
END$$
DELIMITER ;
#
# Определение для представления `person_type`:
#
CREATE ALGORITHM=UNDEFINED DEFINER='root'@'localhost' SQL SECURITY DEFINER VIEW `person_type`
AS
select
`person`.`Name` AS `Name`,
`person`.`Surname` AS `Surname`,
`person`.`Mobile` AS `Mobile`,
`type`.`Value` AS `Value`
from
(`person`
join `type` on ((`person`.`Type_ID` = `type`.`Type_ID`)));
#
# Определение для представления `person_users`:
#
CREATE ALGORITHM=UNDEFINED DEFINER='root'@'localhost' SQL SECURITY DEFINER VIEW `person_users`
AS
select
`user`.`UserName` AS `UserName`,
`user`.`UserSurname` AS `UserSurname`,
`user_person`.`MeetingDate` AS `MeetingDate`,
`person`.`Name` AS `Name`,
`person`.`Surname` AS `Surname`,
`type`.`Value` AS `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`)));
#
# Data for the `type` table (LIMIT 0,500)
#
INSERT INTO `type` (`Type_ID`, `Value`) VALUES
(0,'Colleague'),
(1,'Friend'),
(2,'Relative'),
(3,'Other');
COMMIT;
#
# Data for the `operatormts` table (LIMIT 0,500)
#
INSERT INTO `operatormts` (`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),
(9,'Kirill','Lugovskiy','Andreevich','luga1997@mail.ru','Pushkinska str, 18, 67','0995327855',0),
(11,'Alexandra ','Nikitchuk','Ruslanovna','alexandranikitchuk@gmail.com','Kyivska str, 143, 56','0506742111',0),
(12,'Vladislav ','Oleshko','Nikolaevich','oleshkovladislav@mail.ua','Kvitucha str, 13','0994788321',1),
(16,'Andrey ','Sobol','Aleksandrovich','AndreySoboly@gmail.com','Alekseevska str, 56, 114','0995201247',0),
(18,'Vitaliy','Petrash','Maksimovich','rossoner@gmail.com','Pushkinska str, 140, 53','0951127083',0);
COMMIT;
#
# Data for the `person` table (LIMIT 0,500)
#
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),
(1,'Ruslan','Bakhaaddini','Denisovich','bakhaaddini@gmail.com','Geroiv Pratsi str, 12, 56','0674558204',0),
(2,'Roman','Bezruchko','Jurievich','romab10@gmail.com','Konoplyana str, 76, 23','0673440945',1),
(3,'Vladislav','Bobrovskiy','Viktorovich','v.bobrovskiy@mail.ru','Svitla str, 56, 119','0638129830',0),
(4,'Vladislav','Bondar','Aleksandrovich','s4bvlad@gmail.com','Shironintsiv str, 108, 165','0975912009',2),
(5,'Mihail','Borshev','Alekseevich','misha.bor@gmail.com','Studentska str, 10, 133','0985431445',0),
(6,'Elizaveta','Gusieva','Vjacheslavovna','lizagusieva1997@yandex.ru','Plekhanovska str, 67, 18','0984432317',0),
(7,'Vladislav','Zozulya','Viktorovich','vlad04021997@mail.ru','Uborevicha str, 45, 77','0639085469',0),
(8,'Maksim','Kazmirchuk','Vladimirovich','kazmirchuk2214@gmail.com','Petrovskaya str, 12, 107','0985561232',0),
(9,'Kirill','Lugovskiy','Andreevich','luga1997@mail.ru','Pushkinska str, 18, 67','0995327855',0),
(10,'Nikita','Matushin','Andreevich','KukusterMOP@gmail.com','Shironintsiv str, 125, 170','0673510964',0),
(11,'Alexandra ','Nikitchuk','Ruslanovna','alexandranikitchuk@gmail.com','Kyivska str, 143, 56','0506742111',0),
(12,'Vladislav ','Oleshko','Nikolaevich','oleshkovladislav@mail.ua','Kvitucha str, 13','0994788321',1),
(13,'Vsevolod ','Oleynik','Alekseevich','sevaoleinik@gmail.com','Jukova str, 65, 133','0684560914',0),
(14,'Dmitriy ','Perepechay','Aleksandrovich','Dima-khakerov@yandex.ru','Rogovtsev str, 11, 85','0972331745',0),
(15,'Dmitriy ','Posternak','Igorevich','dmitriy.posternak@yandex.ru','Gradova str, 45, 99','0984329065',1),
(16,'Andrey ','Sobol','Aleksandrovich','AndreySoboly@gmail.com','Alekseevska str, 56, 114','0995201247',0),
(17,'Rostislav','Shuliaev','Ruslanovich','rostik.shuliaev@gmail.com','Uborevicha str, 123, 88','0639082314',0),
(18,'Vitaliy','Petrash','Maksimovich','rossoner@gmail.com','Pushkinska str, 140, 53','0951127083',0);
COMMIT;
#
# Data for the `role` table (LIMIT 0,500)
#
INSERT INTO `role` (`Role_ID`, `RoleName`) VALUES
(0,'Guest'),
(1,'User'),
(2,'Admin');
COMMIT;
#
# Data for the `user` table (LIMIT 0,500)
#
INSERT INTO `user` (`User_ID`, `UserName`, `UserSurname`, `UserEmail`, `Password`, `Role_ID`) VALUES
(0,'Alexey','Mikhailov','sergmikh@ukr.net','tourist2010',1),
(1,'Sergii','Kozynets','alexsplean@mail.ua','splean2011',1),
(2,'Artem','Kolpakov','colspan23@ukr.net','colspan44',1),
(3,'Mikhail','Kolobov','v.lyahov@gmail.com','lyvov2011',1),
(4,'Stepan','Voytenko','denisvoytenko@ukr.net','vovovoo12',1),
(5,'Vladislav','Oleshko','oleshkovlad@gmail.com','qazxsww222',1),
(6,'Anatoliy','Kravets','kravets.viktor43@mail.ua','ukkeeeq',1),
(7,'Roman','Stepanov','stepa1998@ukr.net','steppa11',1),
(8,'Oleg','Polevoy','pole134@ukr.net','wsdeee2',0),
(9,'Andrey','Bobrov','bobrov.pavel@mail.ua','pashaq1',0),
(10,'Alexey','Vlasenko','vlasenkoa19@ukr.net','ujjjnye2',0),
(11,'Vladislav','Bondar','s4bvlad@gmail.com','qwsazx1332',2),
(12,'Vadim','Litvinov','litvinov.tolya@ukr.net','rtebvc55',2);
COMMIT;
#
# Data for the `user_person` table (LIMIT 0,500)
#
INSERT INTO `user_person` (`User_ID`, `Person_ID`, `MeetingDate`) VALUES
(0,2,'2001-09-20 12:00:00'),
(1,4,'2012-10-20 12:00:00'),
(1,5,'2014-01-20 13:00:00'),
(2,6,'2011-09-20 12:00:00'),
(2,13,'2014-09-20 12:00:00'),
(3,2,'2001-09-20 12:00:00'),
(3,8,'2001-11-20 12:00:00'),
(4,15,'2020-12-20 12:00:00'),
(5,1,'2001-09-20 12:00:00'),
(5,7,'2011-09-20 12:00:00'),
(6,3,'2003-09-20 12:00:00'),
(7,17,'2011-11-20 12:00:00'),
(8,10,'2009-05-20 13:00:00'),
(8,11,'2011-04-20 13:00:00'),
(9,4,'2010-12-20 12:00:00'),
(10,9,'2023-11-20 12:00:00'),
(10,16,'2012-06-20 12:00:00'),
(11,0,'2012-09-20 12:00:00'),
(11,6,'2015-08-20 13:00:00'),
(12,8,'2020-11-20 12:00:00'),
(12,11,'2007-11-20 13:00:00'),
(12,14,'2005-09-20 13:00:00');
COMMIT;
DELIMITER $$
CREATE DEFINER = 'root'@'localhost' TRIGGER `savetoMTS` AFTER INSERT ON `person`
FOR EACH ROW
BEGIN
INSERT INTO operatormts (`Person_ID`, `Name`, `Surname`, `MiddleName`,
`Email`, `Address`,`Mobile`, `Type_ID`)
SELECT Person_ID, Name, Surname, MiddleName,
Email, Address, Mobile, Type_ID
from person
WHERE (Mobile LIKE '050%' OR Mobile LIKE '066%'
OR Mobile LIKE '095%' OR Mobile LIKE '099%')
AND Person_ID NOT IN (SELECT Person_ID FROM operatormts);
END$$
CREATE DEFINER = 'root'@'localhost' TRIGGER `updateOperatorMTS` AFTER UPDATE ON `person`
FOR EACH ROW
BEGIN
UPDATE `operatorMTS`
JOIN `person` ON `operatorMTS`.`Person_ID` = `person`.`Person_ID`
SET `operatormts`.`Name` = `person`.`Name`,
`operatormts`.`Surname` = `person`.`Surname`,
`operatormts`.`MiddleName` = `person`.`MiddleName`,
`operatormts`.`Email` = `person`.`Email`,
`operatormts`.`Mobile` = `person`.`Mobile`,
`operatormts`.`Address` = `person`.`Address`
WHERE ( `operatormts`.`Name` <> `person`.`Name`
OR `operatormts`.`Surname` <> `person`.`Surname`
OR `operatormts`.`MiddleName` <> `person`.`MiddleName`
OR `operatormts`.`Email` <> `person`.`Email`
OR `operatormts`.`Mobile` <> `person`.`Mobile`
OR `operatormts`.`Address` <> `person`.`Address` );
END$$
DELIMITER ;
/*!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 */;
