SlideShare uma empresa Scribd logo
1 de 35
Спецкурс. Занятие 8

Базы данных
Определения

База данных – определений
много, в основном, по признакам
(логическая связанность,
обработка на ЭВМ и т.д.)
Определения

Система управления базами
данных (СУБД) – программная
система для создания и
управления базами данных
Определения

Виды баз данных (по модели):
1. реляционные
2. иерархические
3. сетевые
4. объектные
5. объектно-реляционные
Определения

Реляционная модель – модель,
основанная на реляционной
алгебре (алгебра отношений на
кортежах)
Определения

Примеры реляционных СУБД:
1. Oracle
2. Postgres
3. MySQL
4. MS SQL
5. SQLite
Реляционные БД

Схема реляционной БД:
1. Таблицы – физическое
представление отношений
(столбцы – атрибуты, строки –
кортежи)
Реляционные БД

Схема реляционной БД:
2. Внешние файлы – для больших
объемов данных (чаще бинарных)
3. Индексы – уникальные,
поисковые
4. Ограничения - первичные и
внешние ключи, формульные
Реляционные БД

Программный код в реляционных
СУБД:
1. Триггеры – для реакции на
события
2. Хранимые процедуры и
функции – произвольные
алгоритмы обработки данных
Реляционные БД

Первичный ключ (primary key):
основной ключ таблицы,
уникальный как следствие,
может быть простым и
составным (несколько
столбцов)
Реляционные БД

Внешний ключ (foreign key):
столбцы таблицы, значения
которых являются
подмножеством первичного
ключа другой таблицы
Реляционные БД

Нормальная форма:
набор свойств отношений, для
обеспечения целостности
данных (1-НФ, 2-НФ, 3-НФ –
самая распространенная)
Пример БД в 3-й нормальной форме

Department:
id
name
Пример БД в 3-й нормальной форме

Group:
id
name
department_id
Пример БД в 3-й нормальной форме

Chair:
id
name
department_id
Пример БД в 3-й нормальной форме

Student:
id
first_name
last_name
group_id
chair_id
Денормализация БД

Денормализация – снижение
уровня нормализации, как
правило с целью повышения
производительности (чаще
всего уход от 3-НФ)
Денормализация БД

Student:
id
first_name
last_name
group_id
chair_name
department_name
Денормализация БД

Минус денормализации –
нужно тщательнее следить за
целостностью и
непротиворечивостью данных
SQL

Structured query language (SQL)
– язык написания запросов к
реляционной БД
SQL

Варианты SQL:
1. ANSI SQL
2. Oracle-диалект (Oracle SQL)
3. Postgres-диалект
4. MySQL-диалект
SQL

Data description language (DDL):
1. create/drop – database, table,
index, constraint
2. alter – database, table, index,
constraint
Реляционные БД

Все дальнейшие примеры для
выполнения на MySQL 5.x
SQL

Создание БД:
create database `omsu`
character set utf8
collate utf8_general_ci;
SQL

Таблица «Факультет»:

create table `Department`(
id int(20) not null,
name varchar(50) not null,
primary key(id)
) engine=InnoDB character set=utf8;
SQL

Индекс на таблицу «Факультет»:
create unique index
`Department_unique` on
Department(name);
SQL

Таблица «Группа»:
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

Индекс на таблицу «Группа»:
create unique index
`Group_unique` on
Group(department_id, name);
SQL

Data modeling language (DML):
1. insert/update/delete –
модификация данных
2. select – построение множества
кортежей по декларативному
запросу (query)
SQL

Вставка в таблицу «Факультет»:
insert into Department(id, name)
values
(1, ‘ИМИТ’),
(2, ‘Физический’);
SQL

Вставка в таблицу «Группа»:
insert into Group(id, name,
department_id)
values
(1, ‘ММ-01’, 1),
(2, ‘Ф-05-О’, 2),
(3, ‘МП-01’, 1);
SQL

Запрос к таблице «Факультет»:
select name from Department;

ИМИТ
Физический
SQL

Запрос к таблице «Группа»:
select g.*
from Group g inner join Department d
on g.department_id = d.id
where d.name = ‘ИМИТ’;
1, ММ-01
3, МП-01
SQL

Структура запроса:
select <описание кортежа>
from <список таблиц>
[where <условия на исходные>]
[group by <список столбцов>]
[having <условия на группировку>]]
[order by <список столбцов>]
Пример:

SQL

select d.name, count(g.id)
from Group g inner join Department d
on g.department_id = d.id
where d.name like ‘%И%’
group by d.name
having count(g.id) > 1
order by d.name;

ИМИТ, 2

Mais conteúdo relacionado

Mais procurados

Основы баз данных
Основы баз данныхОсновы баз данных
Основы баз данных
Evgeny Smirnov
 
005
005005
005
JIuc
 
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
Provectus
 
0044
00440044
0044
JIuc
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Yandex
 

Mais procurados (15)

Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данныхСтажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
 
Управление данными (sql)
Управление данными (sql)Управление данными (sql)
Управление данными (sql)
 
Основы баз данных
Основы баз данныхОсновы баз данных
Основы баз данных
 
Управление данными (модели данных)
Управление данными (модели данных)Управление данными (модели данных)
Управление данными (модели данных)
 
005
005005
005
 
Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)
 
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
 
Управление данными (дополнительно)
Управление данными (дополнительно)Управление данными (дополнительно)
Управление данными (дополнительно)
 
0044
00440044
0044
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилей
 
09 - Базы данных. Модели данных. Основные определения реляционной модели
09 - Базы данных. Модели данных. Основные определения реляционной модели09 - Базы данных. Модели данных. Основные определения реляционной модели
09 - Базы данных. Модели данных. Основные определения реляционной модели
 
______
  ______  ______
______
 
Управление данными (распределенная обработка)
Управление данными (распределенная обработка)Управление данными (распределенная обработка)
Управление данными (распределенная обработка)
 

Semelhante a Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08

презентация семинар по бд
презентация семинар по бдпрезентация семинар по бд
презентация семинар по бд
anna_pal
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в Delphi
Aeka227
 
0039
00390039
0039
JIuc
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных
23padopi
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных
23padopi
 
Ldap And Infrastructure
Ldap And InfrastructureLdap And Infrastructure
Ldap And Infrastructure
Liudmila Li
 
открытый урок бд
открытый урок бдоткрытый урок бд
открытый урок бд
guest0ffa3f
 

Semelhante a Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08 (20)

презентация семинар по бд
презентация семинар по бдпрезентация семинар по бд
презентация семинар по бд
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
базы данных
базы данныхбазы данных
базы данных
 
Все самые важные команды SQL за 60 минут
Все самые важные команды SQL за 60 минутВсе самые важные команды SQL за 60 минут
Все самые важные команды SQL за 60 минут
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Базы данных
Базы данныхБазы данных
Базы данных
 
Введение в Oracle
Введение в OracleВведение в Oracle
Введение в Oracle
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в Delphi
 
MySQL
MySQLMySQL
MySQL
 
0039
00390039
0039
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
9946
99469946
9946
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД
 
Ais Lecture 2
Ais Lecture 2Ais Lecture 2
Ais Lecture 2
 
Ldap And Infrastructure
Ldap And InfrastructureLdap And Infrastructure
Ldap And Infrastructure
 
открытый урок бд
открытый урок бдоткрытый урок бд
открытый урок бд
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
 

Mais de 7bits

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
7bits
 

Mais de 7bits (20)

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию
 

Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08