- •Перелік позначень та скорочень
- •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.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 */;
