Создание базы данных в ms sql server
Скачать 6.89 Mb.
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Уфимский государственный нефтяной технический университет» Институт нефтегазового бизнеса Кафедра «Цифровые технологии и моделирование» ОТЧЁТ по лабораторной работе на тему: «Создание базы данных в MS SQL Server» Студент гр. БПИз - 20-01 В. Ф. Валеев Преподаватель М. А. Абросимова Уфа 2022 Цель работы: Овладение навыками создания базы данных и ввода данных в таблицы с использованием графических средств и языка Т-SQL. Задачи: 1. Создание базы данных Education. 2. Создание таблицы Students, создание поля с уникальными значениями в таблице Students, уникального индекса из нескольких полей и проверочных ограничений для полей таблицы. 3. Создание таблицы Subjects, создание первичного ключа таблицы и проверочных ограничений для полей таблицы. 4. Создание таблицы Uspev, создание составного ключа таблицы и проверочных ограничений для полей таблицы. 5. Определение пользователя в качестве владельца базы данных 6. Связывание таблиц базы данных. 7. Ввод данных в таблицы базы данных. Выполнение работы. Этап 0. Выполнение инсталляции SQL Server и SQL Server Management Studio. Этап 1. Запуск SQL Server Management Studio. Среда SQL Server Management Studio запускается из кнопки «Пуск» операционной системы. При соединении с сервером появляется диалоговое окно «Соединение с сервером» (рис.1): Рисунок 1 – Соединение с сервером При нажатии кнопки «Соединить» открывается окно SQL Server Management Studio. Этап 2. Просмотр опции меню «Вид» среды SQL Server Management Studio. Главным инструментом SQL Server Management Studio является Обозреватель объектов, который позволяет пользователю просматривать, извлекать объекты сервера, а также управлять ими. Панель «Обозреватель объектов», как правило, находится слева (рис. 2). Ее можно закрыть и снова вывести в окно, используя пункт меню «Вид». Элементы панели содержат в себе список объектов базы данных. Кроме меню в окно программы выведены панели инструментов. Как правило, при первом запуске это панели инструментов «Стандартная», «Конструктор запросов» и «Редактор SQL». Работа с панелями осуществляется типичным для продуктов Microsoft образом. Панель «Обозреватель объектов» представлен на рис. 2. Рисунок 2 – Окно SQL Server Management Studio Этап 3. Создание базы данных Education (Education_Val). База данных в SQL Server состоит из коллекции таблиц. Кроме таблиц в базе данных может содержаться другие объекты (представления, триггеры, хранимые процедуры, индексы и пр.) Группа объектов называется схемой базы данных. Одна база данных может иметь несколько схем. Базы данных SQL Server хранятся в файловой системе в виде файлов. Файлы могут объединяться в группы. Базу данных в MS SQL Server можно создать, используя графические средства Management Studio или используя язык SQL. В качестве графической оболочки в MS SQL Server используется Management Studio или Management Studio Express. Для создания данных в Management Studio нужно: − на панели «Обозреватель объектов» щелкнуть правой кнопкой по «Базы данных» и выбрать «Создать базу данных» (рис. 3): Рисунок 3 – Создание базы данных на панели «Обозреватель объектов» − в окне «Создание базы данных», указать имя создаваемой базы. В базе данных для большего удобства все наименования объектов лучше задавать на латинице и не использовать в именах пробелы (рис. 4): Рисунок 4 – Окно создаваемой базы − нажать «ОК». Этап 4. Установление параметров созданной базы данных. Увидеть, с какими параметрами создалась база, можно, если после создания развернуть узел «Базы данных» и по своей базе щелкнуть правой кнопкой мыши затем «Свойства», где можно увидеть все параметры (рис. 5). Рисунок 5 – Просмотр параметров созданной базы данных (Education_Val) Этап 5. Просмотр SQL инструкции создания базы данных. Как выглядят эти параметры в виде SQL запроса, можно посмотреть, щелкнув правой кнопкой мыши по базе, далее «Создать скрипт для базы данных» – «Используя CREATE» – «Новое окно редактора запросов» (рис. 6): Рисунок 6 – Создание нового окна редактора запросов Можно увидеть, каким запросом создалась базы данных с параметрами по умолчанию (рис. 7). Рисунок 7 – Окно редактора запросов Этап 6. Создание базы данных School. Для создания базы данных с помощью SQL запроса нужно: − щелкнуть кнопку «Создать запрос» на панели инструментов; − в окне Редактора запросов ввести инструкцию: CREATE DATABASE <название базы данных> − щелкнуть кнопку «Выполнить» (рис. 7): Рисунок 7 – Создание базы данных School с помощью SQL запроса Этап 7. Удаление базы данных School. Для удаления базы данных нужно в окне Management Studio: − На панели «Обозреватель объектов» выделить имя базы данных; − Вызвать контекстное меню правой клавишей мыши; − Выбрать «Удалить» (рис. 8). Рисунок 8 – Удаление базы данных School Этап 8. Создание таблицы Students (Students_Val). База данных в SQL Server состоит из коллекции таблиц, в которой хранится особый набор структурированных данных. Таблица содержит коллекцию строк, называемых записями или кортежами, и столбцов, называемых атрибутами. Каждый столбец в таблице предназначен для хранения конкретного типа данных, например, дат, имен, денежных сумм или чисел. Для создания таблицы в Management Studio нужно: − на панели «Обозреватель объектов» развернуть узел базы данных, в которой будет создаваться таблица; − выбрать объект «Таблицы», вызвать контекстное меню и выбрать «Создать», «Таблица»: − в окне Конструктора таблиц ввести имена, типы данных создаваемой таблицы. Задаются свойства как самой таблицы, так и полей таблицы (рис. 9): Рисунок 9 – Окно конструктора таблиц Окно свойств таблицы открывается одноименной кнопкой на Панели инструментов. Имя таблицы вписывается в окне свойств таблицы в строке «Имя». Этап 9. Создание в таблице Students поля «Идентификатор студента» (stud_ID). Определение этого поля в качестве первичного ключа таблицы. Поля создаются в Конструкторе таблиц, Свойства полей определяются в окне «Свойства столбца» в нижней части окна Конструктора таблиц. Например, если создать поле stud_ID с параметрами, представленными в таблице 1, то нужно в окне «Свойства столбца» в Конструкторе таблиц параметры определить следующим образом (рис. 10). Таблица 1 – Параметры поля stud_ID
Рисунок 10 – Окно свойств поля таблицы Примечание. Опцию NOT NULL можно использовать для того, чтобы задать обязательные для заполнения столбцы. Для задания первичного ключа нужно в Конструкторе таблиц выделить строку с характеристиками поля и щелкнуть на панели инструментов кнопку «Задать первичный ключ». Этап 10. Создание в таблице Students поля no_zk со свойством «Уникальное». Поля, которые должны хранить неповторяющиеся значения, имеют создаются с заданием особых свойств. Создадим поле для хранения номеров зачетных книжек. Необходимо: 1. Создать поле «Номер зачетной книжки» (no_zk) аналогично вышеописанному (этап 9) c параметрами: Таблица 2 – Параметры поля no_zk
ПРИМЕЧАНИЕ. Тип данных «char» не позволяет установить поле «Спецификация идентификатора» в положение «Да», 2. Определить для него свойство хранить уникальные значения. Для этого: – вызвать контекстное меню и выбрать «Индексы/ключи» (рис. 11). Рисунок 11 – Открытие окна «Индексы/ключи» – в окне «Индексы/ключи» щелкнуть кнопку «Добавить», появится имя по умолчанию IX_Students (рис. 12): Рисунок 12 – Добавление нового индекса поля no_zk – в списке «Общие» для «Столбцы» щелкнуть кнопку «Выражение»: ● в диалоге «Столбцы индекса» выбрать no_zk (рис. 13): Рисунок 13 – Выбор поля no_zk ● кнопка OK; – в списке «Общие» для «Уникальный» выбрать «Да»; – в списке «Идентификатор» для «Имя» вписать «Unique_no_zk» (рис. 14) Рисунок 14 – Задание имени идентификатора и уникального значения – кнопка «Закрыть». Этап 11. Создание полей, представленных в таблице 3. Таблица 3 – Список полей для создания из них уникального индекса
Необходимо создать поля, представленные в таблице 3 (рис. 15). Рисунок 15 – Создание полейfam, im, ot Этап 12. Создание уникального индекса из полей «Фамилия» (fam), «Имя» (im), «Отчество» (ot). Для создания уникального индекса Unique_fio из полей фамилия (fam), имя (im), отч (ot) необходимо: На панель инструментов щелкнуть кнопку «Управление индексами и ключами» (или на вкладке «Конструктор таблиц» выбрать команду «Индексы и ключи») (рис. 16); Рисунок 16 – Открытие раздела «Управление индексами и ключами» на панели инструментов 2. В окне «Индексы/ключи», кнопка «Добавить», далее новый элемент IX_Students*; 3. На панели «Изменение свойств новых объектов «уникальный ключ или индекс»», в списке «Общие», Столбцы, щелкнуть кнопку «Выражение»: – далее «Столбцы», Имя столбца: выбрать fam; – следующая строка, Имя столбца: выбрать im; – следующая строка, Имя столбца: выбрать ot (рис. 17); – кнопка OK; Рисунок 17 – Добавление нового элемента одновременно для нескольких полей 5. В списке «Общие», Уникальный: выбрать Да; 13 6. В списке «Идентификация», (Имя): Unique_fio (рис. 18); 7. кнопка «Закрыть». Рисунок 18 – Задание имени идентификатора и свойства «Уникальное» для полей fam, im, ot Этап 13. Создание поля «Специальности» (spec) с параметрами, представленными в таблице 4. Таблица 4 – Параметры поля «Специальности» (spec)
Необходимо создать поле с параметрами, представленные в таблице 4 (рис. 19). Рисунок 19 – Создание поля «Специальности» (spec) Этап 14. Создание проверочного ограничения для поля spec для хранения данных в виде символов русского алфавита в верхнем и нижнем регистрах. Для обеспечения целостности данных при создании полей можно ввести ограничения на значения. Создать проверочные ограничения для поля spec: в это поле можно будет вводить символы русского алфавита в верхнем и нижнем регистрах. Для этого необходимо: 1. Выделить имя поля, вызвать контекстное меню, выбрать «Проверочные ограничения» (или на вкладке «Конструктор таблиц» выбрать команду «Проверочные ограничения») (рис. 20); Рисунок 20 – Открытие раздела «Проверочные ограничения» через контекстное меню 2. В форме «Проверочные ограничения» щелкнуть кнопку «Добавить» появится новый элемент CK_Students* (рис. 21); Рисунок 21 – Окно конструктора ограничений 3. В списке «Общие» щелкнуть кнопку «Выражение», – в диалоге «Выражение проверочного ограничения» ввести: ([spec]>=’A’ AND [spec]<=’я') – щелкнуть ОК (рис. 22). Рисунок 22 – Ввод команды в диалоге «Выражение проверочного ограничения» 4. В форме «Проверочные ограничения» в списке «Идентификатор» (Имя) ввести новое имя, например, Russian_spec (рис. 23); Рисунок 23 – Задание имени идентификатора 5. кнопка «Закрыть». Этап 15. Создание полей «Курс» (kurs) и «Группа» (gr), «Дата рождения» (data_r) и «Биография» (biogr) с параметрами, представленными в таблице 5. Таблица 5 – Параметры полей «Курс» (kurs) и «Группа» (gr), «Дата рождения» (data_r) и «Биография» (biogr)
Результат создания полей «Курс» (kurs) и «Группа» (gr), «Дата рождения» (data_r) и «Биография» (biogr) с параметрами (табл. 5), представлен на рис. 24 - 26. Рисунок 24 – Окно конструктора ограничений для поля «Курс» (kurs) Рисунок 25 – Окно конструктора ограничений для поля «Группа» (gr) Рисунок 26 – Итог создания полей «Курс» (kurs) и «Группа» (gr), «Дата рождения» (data_r) и «Биография» (biogr) с параметрами (табл. 5) Этап 16. Сохранить структуру таблицы Students_Val. Сохранить структуру таблицы можно одним из трех способов: – сочетанием клавиш [Ctrl + S]; – меню Файл/Сохранить; – кнопка «Сохранить» на панели инструментов. Этап 17. Создание таблицы «Справочник предметов» (Subjects_Val) 1. Создать таблицу «Справочник предметов» (Subjects_Val) с полями: − идентификатор предмета predm_ID (счетчик, первичный ключ); − название name (название предмета (строковое)); − объем hrs (количество часов (числовое)); − кафедра dept (название кафедры, на которой ведется преподавание предмета (строковое)). 2. Указать первичный ключ таблицы (поле predm_ID). Результат представлен на рисунке 27. Рисунок 27 – Результат заполнения таблицы Subjects_Val с открытым окном свойств поля predm_ID 3. Для каждого из полей таблицы придумать ограничения на значения. Результат представлен на рисунках 28-31 для каждого поля. Рисунок 28 – Окно конструктора ограничений для поля «Идентификатор предмета» predm_ID Рисунок 29 – Окно конструктора ограничений для поля «Название предмета» name Рисунок 30 – Окно конструктора ограничений для поля «Количество часов (объём)» hrs Рисунок 31 – Окно конструктора ограничений для поля «Название кафедры» dept Этап 18. Создание таблицы «Успеваемость» (Uspev_Val). 1. Создать таблицу «Успеваемость» (Uspev_Val) с полями: − student (идентификатор студента (тип такой же, как в таблице Студенты, но не счетчик)); − predmet (идентификатор предмета (тип такой же, как в таблице Предметы, но не счетчик)); − ocenka (оценка (символ)); − data (дата (дата)). 2. Создать составной первичный ключ (поля идентификаторов студента и предмета). Для создания составного ключа нужно на панели Конструктора таблицы Uspev с нажатой клавишей Ctrl щелкнуть на поле Student и поле Predmet. Далее щелкнуть «Ключевое поле». Результат представлен на рисунке 32. Рисунок 32 – Результат создания таблицы «Успеваемость» (Uspev_Val) с полями student, predmet, ocenka, data Для каждого из полей таблицы придумать ограничения на значения Результат представлен на рисунках 33-36 для каждого поля. Рисунок 33 – Окно конструктора ограничений для поля «Идентификатор студента» student Рисунок 34 – Окно конструктора ограничений для поля «Идентификатор предмета» predmet Рисунок 35 – Окно конструктора ограничений для поля «Оценка» ocenka Этап 19. Указать пользователя NT AUTHORITY\SYSTEM в качестве владельца базы данных Education. Для определения пользователя в качестве владельца базы данных нужно: На панели «Обозреватель объектов» выбрать «Базы данных», правая кнопка мыши на Education, «Свойства»; в окне «Свойства базы данных – Education» на странице «Файлы» определить Владельца, для чего: − нажать на кнопке «Выражения»; − в окне «Выбор владельца базы данных» щелкнуть на кнопке «Обзор» (результат выполнения представлен на рисунке 36); Рисунок 36 – Окно выбора владельца базы данных ● в окне «Поиск объектов», выбрать [NT AUTHORITY\SYSTEM] (рис. 37); Рисунок 37 – Определение [NT AUTHORITY\SYSTEM] в качестве владельца базы данных NT AUTHORITY\SYSTEM - учетная запись Windows, которая может быть использованы для службы агента SQL Server. Эта учетная запись имеет неограниченный доступ ко всем локальным системным ресурсам. Примечание. Агент SQL Server - система планирования, обработчик заданий, средство общения и круглосуточного администрирования для Microsoft SQL Server. Доступ к службам агента возможен с Панели Обозревателя. ● кнопка OK; – в окне Выбор владельца базы данных», кнопка OK; в окне «Свойства базы данных» – Education, кнопка OK. Этап 20. Связать таблицы Students_Val, Subjects_Val, Uspev_Val, сделав таблицы студентов и предметов родительскими, а таблицу успеваемости – дочерней; установить правила ссылочной целостности: каскадное для обновления и удаления. Для связывания таблиц баз данных используются диаграммы. Для связывания таблиц нужно: 1. в Обозревателе объектов раскрыть узел нужной базы данных 2. выбрать «Диаграммы баз данных» и из контекстного меню вызвать «Создать диаграмму базы данных» (рис. 38): Рисунок 38 – Вызов создания диаграммы базы данных из контекстного меню на Панели Обозревателя 3. в окно диаграммы вывести нужные таблицы; 4. в окне диаграммы используя перетаскивание мышью соединить поля исходя из правила: с главной (родительской) таблицы на подчиненную. То есть, − поле (stud_ID) таблицы Students_Val перетаскивается на поле (student) таблицы Uspev_Val. Создается связь «FK_Uspev_Val_Students_Val» и открывается диалог «Таблицы и столбцы» для проверки правильности выбора соединяемых полей (рис. 39); Рисунок 39 – Открытие диалога «Таблицы и столбцы» для проверки правильности выбора соединяемых полей (поля stud_ID таблицы Students_Val и поля student таблицы Uspev_Val) далее в диалоге «Таблицы и столбцы» проверить соединяемые поля и нажать кнопку OК; − В диалоге «Связь по внешнему ключу» в группе Конструктор баз данных раскрыть «Спецификация INSERT и UPDATE» и установить правила на обновление и удаление записей, например, ● Правило обновления: Каскадно (рис. 40); Рисунок 40 – Установление правила обновления записей (каскадно) для связи «FK_Uspev_Val_Students_Val» ● Правило удаления: Каскадно; − кнопка OK. 5. сохранить диаграмму командой Файл/Сохранить. Этап 21. Аналогичным образом установить связь между таблицами Subjects_Val и Uspev_Val и сохранить диаграмму. Для связывания указанных таблиц нужно: 1. в окне диаграммы используя перетаскивание мышью соединить поля исходя из правила: с главной (родительской) таблицы на подчиненную. То есть, − поле (predm_ID) таблицы Subjects_Val перетаскивается на поле (predmet) таблицы Uspev_Val. Создается связь «FK_Uspev_Val_Subjects_Val» и открывается диалог «Таблицы и столбцы» для проверки правильности выбора соединяемых полей (рис. 41); Рисунок 41 – Открытие диалога «Таблицы и столбцы» для проверки правильности выбора соединяемых полей (поля predm_ID таблицы Subjects_Val и поля predmet таблицы Uspev_Val) далее в диалоге «Таблицы и столбцы» проверить соединяемые поля и нажать кнопку OК; − В диалоге «Связь по внешнему ключу» в группе Конструктор баз данных раскрыть «Спецификация INSERT и UPDATE» и установить правила на обновление и удаление записей, например, ● Правило обновления: Каскадно; ● Правило удаления: Каскадно (рис. 42); Рисунок 42 – Установление правила обновления и удаления записей (каскадно) для связи « FK_Uspev_Val_Subjects_Val » − кнопка OK. 5. сохранить диаграмму командой Файл/Сохранить. Результат диаграммы представлен на рисунке 43. Рисунок 43 – Окно полученной диаграммы Этап 22. Ввести в базу данных сведения о студентах (не менее 7) и предметах (не менее 3). Вводить данные в базу данных в SQL Server можно создать, используя графические средства или используя язык SQL. Ввод данных в таблицы с использованием графических средств Для ввода данных нужно: − в Обозревателе объектов выбрать нужную базу данных, далее Таблицы, выбрать таблицу, в которую планируется вводить данные; − выбрать из контекстного меню опцию «Изменить первые 200 строк» (рис. 44); Рисунок 44 – Выбор опции «Изменить первые 200 строк» из контекстного меню Таблица открывает в виде строки с пустыми значениями и позволяет ввести данные. Примечание. Ввод данных непосредственно визуальными средствами Management Studio через меню «Изменить первые … записей» можно рекомендовать лишь в простейших и чрезвычайных ситуациях. Это ни в коем случае не должно быть нормой. Как правило, заполнение базы происходит через пользовательский интерфейс специально созданной программой. Результат заполнения таблицы Students_Val (не менее 7) представлен на рисунке 45. Рисунок 45 – Заполнение таблицы Students_Val Результат заполнения таблицы Subjects_Val (не менее 3) представлен на рисунке 46. Рисунок 46 – Заполнение таблицы Subjects_Val Этап 23. Ввести в базу данных сведения об оценках (не менее 10). Ввод данных с использованием SQL Вставить новые записи в таблицу можно и с использование SQL-инструкции INSERT. Для создания запроса на вставку данных нужно: 1. в Обозревателе объектов выбрать базу данных, далее таблицу, в которую планируется вводить данные; 2. выбрать из контекстного меню «Создать сценарий для таблицы/Используя Insert/Новое окно редактора запросов»: Сценарий (скрипт) - текстовый файл, содержащий запросы и операторы SQL и обычно имеющий расширение sql. Открывается окно запросов c заготовкой скрипта для ввода данных в указанную таблицу (рис. 47). Рисунок 47 – Открытие окна запросов с заготовкой скрипта для ввода данных в таблицу Uspev_Val 3. внести изменения в скрипт и выполнить запрос (рис. 48). Рисунок 48 – Внесение изменений в скрипт для ввода данных в таблицу Uspev_Val Результат внесения данных в таблицу Uspev_Val представлен на рисунке 49. Рисунок 49 – Проверка внесения данных в таблицу Uspev_Val с использованием SQL-запроса Таким образом, данные в таблицу внесены успешно. Ответы на контрольные вопросы Что такое серверные СУБД? Серверная СУБД – сервер баз данных, осуществляет целый комплекс действий по управлению данными. Основными его обязанностями являются: • выполнение пользовательских запросов на выбор и модификацию данных и метаданных, получаемых от клиентских приложений, функционирующих на персональных компьютерах локальной сети; • хранение и резервное копирование данных; • поддержка ссылочной целостности данных согласно определенным в базе данных правилам; • обеспечение авторизованного доступа к данным на основе проверки прав и привилегий пользователей; • протоколирование операций и ведение журнала транзакций. В качестве рабочего места пользователя может быть использован обычный персональный компьютер, что позволяет не отказываться от привычной рабочей среды. Иными словами, в простейшем случае клиент-серверная информационная система состоит из двух основных компонентов: • сервера баз данных, управляющего данными и выполняющего запросы клиентских приложений; • клиентских приложений, предоставляющих интерфейс пользователя и посылающих запросы к серверу. Каковы особенности СУБД MS SQL Server? Microsoft SQL Server является представителем серверных СУБД. Ее важнейшими характеристиками являются: − простота администрирования (имеет целый набор специальных мастеров и средств автоматической настройки параметров конфигурации); − возможность подключения к Web; − быстродействие и функциональные возможности механизма сервера СУБД; − наличие средств удаленного доступа; − использование стандартизованной версии языка SQL (Transact-SQL или TSQL). Какие способы можно использовать в MS SQL Server для работы с базами данных? При помощи графических средств (в т.ч. с использованием «Обозревателя объектов»), а также при помощи SQL-запросов. Что такое схема базы данных? Схема базы данных – диаграмма, используемая для связывания таблиц (конкретных полей) между собой с целью использования данных, находящихся в других таблицах. Каким образом Вы обеспечивали целостность полей таблиц? Возможность использования нулевых значений, создание проверочных ограничений каждого поля. Как можно установить связь между таблицами? В окне диаграммы используется перетаскивание мышью для того, чтобы соединить поля исходя из правила: с главной (родительской) таблицы на подчиненную. В чем отличие диаграмм связей MS SQL Server от схем данных MS Access? В SQL Management Studio в отличие от Access для одной базы данных может быть создано несколько диаграмм. 8. Что такое скрипт в MS SQL Server? С помощью каких средств он создается? Скрипт – текстовый файл, содержащий запросы и операторы SQL и обычно имеющий расширение sql. Может использоваться, например, для ввода данных в таблице. Создается с использованием SQL-инструкции при выборе из контекстного меню «Создать сценарий для таблицы/Используя */Новое окно редактора запросов», после чего шаблон скрипта редактируется и выполняется. Вывод. В ходе выполнения практической работы были решены следующие задачи: 1. Создана база данных Education. 2. Создана таблица Students, созданы поля с уникальными значениями в таблице Students, уникального индекса из нескольких полей и проверочных ограничений для полей таблицы. 3. Создана таблица Subjects, создан первичный ключ таблицы и проверочные ограничения для полей таблицы. 4. Создана таблица Uspev, создан составной ключ таблицы и проверочные ограничения для полей таблицы. 5. Определен конкретный пользователь в качестве владельца базы данных 6. Реализована связь таблиц базы данных. 7. Осуществлен ввод данных в таблицы базы данных. Таким образом, было осуществлено овладение навыками создания базы данных и ввода данных в таблицы с использованием графических средств и языка Т-SQL. Список литературы Дунаев, В. В. Базы данных. Язык SQL для студента / В.В. Дунаев. - М.: БХВ-Петербург, 2017. - 288 c. Маркин, А. В. Построение запросов и программирование на SQL. Учебное пособие / А.В. Маркин. - М.: Диалог-Мифи, 2014. - 384 c. |