Спецкурс "Современные практики разработки ПО",...
TRANSCRIPT
![Page 1: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/1.jpg)
Базы данных
Спецкурс. Занятие 8
![Page 2: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/2.jpg)
База данных – определений много, в основном, по признакам (логическая связанность, обработка на ЭВМ и т.д.)
Определения
![Page 3: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/3.jpg)
Система управления базами данных (СУБД) – программная система для создания и управления базами данных
Определения
![Page 4: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/4.jpg)
Виды баз данных (по модели):1. реляционные2. иерархические3. сетевые4. объектные5. объектно-реляционные
Определения
![Page 5: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/5.jpg)
Реляционная модель – модель, основанная на реляционной алгебре (алгебра отношений на кортежах)
Определения
![Page 6: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/6.jpg)
Примеры реляционных СУБД:1. Oracle2. Postgres3. MySQL4. MS SQL5. SQLite
Определения
![Page 7: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/7.jpg)
Схема реляционной БД:1. Таблицы – физическое представление отношений (столбцы – атрибуты, строки –кортежи)
Реляционные БД
![Page 8: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/8.jpg)
Схема реляционной БД:2. Внешние файлы – для больших объемов данных (чаще бинарных) 3. Индексы – уникальные, поисковые4. Ограничения - первичные и внешние ключи, формульные
Реляционные БД
![Page 9: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/9.jpg)
Программный код в реляционных СУБД:1. Триггеры – для реакции на события2. Хранимые процедуры и функции – произвольные алгоритмы обработки данных
Реляционные БД
![Page 10: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/10.jpg)
Первичный ключ (primary key):основной ключ таблицы, уникальный как следствие, может быть простым и составным (несколько столбцов)
Реляционные БД
![Page 11: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/11.jpg)
Внешний ключ (foreign key):столбцы таблицы, значения которых являются подмножеством первичного ключа другой таблицы
Реляционные БД
![Page 12: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/12.jpg)
Нормальная форма:набор свойств отношений, для обеспечения целостности данных (1-НФ, 2-НФ, 3-НФ –самая распространенная)
Реляционные БД
![Page 13: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/13.jpg)
Department:idname
Пример БД в 3-й нормальной форме
![Page 14: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/14.jpg)
Group:idnamedepartment_id
Пример БД в 3-й нормальной форме
![Page 15: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/15.jpg)
Chair:idnamedepartment_id
Пример БД в 3-й нормальной форме
![Page 16: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/16.jpg)
Student:idfirst_namelast_namegroup_idchair_id
Пример БД в 3-й нормальной форме
![Page 17: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/17.jpg)
Денормализация – снижение уровня нормализации, как правило с целью повышения производительности (чаще всего уход от 3-НФ)
Денормализация БД
![Page 18: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/18.jpg)
Student:idfirst_namelast_namegroup_idchair_namedepartment_name
Денормализация БД
![Page 19: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/19.jpg)
Минус денормализации –нужно тщательнее следить за целостностью и непротиворечивостью данных
Денормализация БД
![Page 20: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/20.jpg)
Structured query language (SQL)– язык написания запросов к реляционной БД
SQL
![Page 21: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/21.jpg)
Варианты SQL:1. ANSI SQL 2. Oracle-диалект (Oracle SQL)3. Postgres-диалект4. MySQL-диалект
SQL
![Page 22: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/22.jpg)
Data description language (DDL):1. create/drop – database, table, index, constraint 2. alter – database, table, index, constraint
SQL
![Page 23: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/23.jpg)
Все дальнейшие примеры для выполнения на MySQL 5.x
Реляционные БД
![Page 24: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/24.jpg)
Создание БД:create database `omsu` character set utf8collate utf8_general_ci;
SQL
![Page 25: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/25.jpg)
Таблица «Факультет»:
create table `Department`(id int(20) not null,name varchar(50) not null,primary key(id)
) engine=InnoDB character set=utf8;
SQL
![Page 26: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/26.jpg)
Индекс на таблицу «Факультет»:
create unique index`Department_unique` onDepartment(name);
SQL
![Page 27: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/27.jpg)
Таблица «Группа»:
create table `Group`(id int(20) not null,name varchar(50) not null,department_id int(20) not null,primary key(id),foreign key (department_id) references
Department(id)) engine=InnoDB character set=utf8;
SQL
![Page 28: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/28.jpg)
Индекс на таблицу «Группа»:
create unique index`Group_unique` onGroup(department_id, name);
SQL
![Page 29: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/29.jpg)
Data modeling language (DML):1. insert/update/delete –модификация данных2. select – построение множества кортежей по декларативному запросу (query)
SQL
![Page 30: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/30.jpg)
Вставка в таблицу «Факультет»:
insert into Department(id, name)values
(1, ‘ИМИТ’),(2, ‘Физический’);
SQL
![Page 31: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/31.jpg)
Вставка в таблицу «Группа»:
insert into Group(id, name, department_id)values
(1, ‘ММ-01’, 1),(2, ‘Ф-05-О’, 2),(3, ‘МП-01’, 1);
SQL
![Page 32: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/32.jpg)
Запрос к таблице «Факультет»:
select name from Department;
ИМИТФизический
SQL
![Page 33: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/33.jpg)
Запрос к таблице «Группа»:
select g.*from Group g inner join Department d
on g.department_id = d.idwhere d.name = ‘ИМИТ’;
1, ММ-013, МП-01
SQL
![Page 34: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/34.jpg)
Структура запроса:select <описание кортежа>from <список таблиц>[where <условия на исходные>][group by <список столбцов>][having <условия на группировку>]][order by <список столбцов>]
SQL
![Page 35: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08](https://reader031.vdocuments.site/reader031/viewer/2022020116/559b88e51a28ab72158b4630/html5/thumbnails/35.jpg)
Пример:select d.name, count(g.id)from Group g inner join Department d
on g.department_id = d.idwhere d.name like ‘%И%’group by d.namehaving count(g.id) > 1order by d.name;
ИМИТ, 2
SQL