Similar presentations:
Программирование на Python. Базы данных. Часть 2. 17 занятие
1.
Программированиена Python
Презентация занятия
Базы данных. Часть 2.
17 занятие
2019
2.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
1. ТАБЛИЦЫ И КЛЮЧИ
• Ключи представляют способ идентификации строк в таблице.
• С помощью ключей мы также можем связывать строки между
различными таблицами в отношения.
inginirium.ru
6
3.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
1.1 Первичный ключ (главный, primary key) – поле (набор полей),
которое однозначно идентифицирует запись, т.е. его значение не
повторяется у разных записей.
inginirium.ru
7
4.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.8
Тема: Базы данных. Часть 1.
1.2 Вторичный ключ
Первичному ключу одной таблицы (родительской) соответствует
вторичный ключ другой таблицы (дочерней).
Вторичный ключ (внешний ключ, foreign key) содержит значения
связанного с ним поля, являющегося первичным ключом.
• Значения во внешнем ключе могут быть неуникальными, но не должны
быть пустыми.
• Первичный и внешний ключи должны быть одинакового типа.
inginirium.ru
5.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
Первичный и вторичный ключи:
inginirium.ru
9
6.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
2. СВЯЗИ МЕЖДУ ТАБЛИЦАМИ
Записи в таблице могут зависеть от одной или нескольких записей другой
таблицы. Такие отношения между таблицами называются связями.
Как определить связь?
Поле или несколько полей одной таблицы, называемое внешним
ключом, ссылается на первичный ключ другой таблицы.
Зачем нужны?
Для поддержания целостности данных.
inginirium.ru
10
7.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
2. СВЯЗИ МЕЖДУ ТАБЛИЦАМИ
inginirium.ru
11
8.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
2. СВЯЗИ МЕЖДУ ТАБЛИЦАМИ
Существует три вида связей между таблицами баз данных:
• связь один к одному;
• связь один ко многим;
• связь многие ко многим.
inginirium.ru
12
9.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.13
Тема: Базы данных. Часть 1.
2.1 Связь «один к одному»
- каждая запись родительской таблицы связана только с одной записью
дочерней.
• Используется, чтобы таблица «распухала» от большого числа полей
• Базы данных, в состав которых входят таблицы с такой связью не могут
считаться полностью нормализованными
inginirium.ru
10.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.14
Тема: Базы данных. Часть 1.
2.2 Связь «один ко многим»
— каждая запись родительской таблицы связана с одной или несколькими
записями дочерней.
Пример: в каждом отделе может быть множество сотрудников, но каждый
сотрудник может работать только в одном отделе.
inginirium.ru
11.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.15
Тема: Базы данных. Часть 1.
2.3 Связь «многие ко многим»
— несколько записей одной таблицы связаны с несколькими записями
другой.
Реализуется путем создания третьей таблицы и реализации связи типа
«один ко многим» каждой из имеющихся таблиц с промежуточной таблицей.
inginirium.ru
12.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3. Создание БД «Школа»
3.1 Определение связей
inginirium.ru
16
13.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3.1 Определение связей
inginirium.ru
17
14.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3.2 Создание связей между таблицами
PRIMARY KEY
— первичный ключ, ограничение, позволяющее однозначно
идентифицировать каждую запись в таблице SQL.
• Первичные ключи не могут позволять значений NULL
Пример:
CREATE TABLE classes
( id int NOT NULL PRIMARY KEY,
class char(3),
num_of_stud char,
teacher char
);
inginirium.ru
18
15.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.19
Тема: Базы данных. Часть 1.
3.2 Создание связей между таблицами
FOREIGN KEY
— когда все значения в одном поле таблицы представлены в поле другой
таблицы, говорится, что первое поле ссылается на второе.
FOREIGN KEY <column list> REFERENCES <pktable> [ <column list> ]
• 1 <column list> — список из одного или более столбцов в дочерней
таблице
• Pktable — родительская таблицы
• 2 <column list> — список столбцов, которые будут составлять
родительский ключ.
inginirium.ru
16.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3.2 Создание связей между таблицами
Пример:
CREATE TABLE students
( id int NOT NULL PRIMARY KEY,
familia char,
imya char,
otchestvo char,
id_classes int NOT NULL,
age int(2)),
FOREIGN KEY (id_classes) REFERENCES classes (id)
);
inginirium.ru
20
17.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3.2 Создание связей между таблицами
inginirium.ru
21
18.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3.2 Создание связей между таблицами
inginirium.ru
22
19.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
3.3 Каскадная модификация данных
Благодаря конструкции ON UPDATE CASCADE изменения в базу данных
будут внесены автоматически, не нарушая ограничение внешнего ключа.
inginirium.ru
23
20.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
Задание
1. Создайте еще две таблицы «Marks» и «Subjects» и соедините их
связями, которые мы уже определили, используя PRIMARY KEY и
FOREIGN KEY
1. Добавьте поле gender в таблицу Студенты
1. Заполните все таблицы данными (3-7 записей)
1. Выведите все данные из всех таблицы
inginirium.ru
24
21.
БАЗЫ ДАННЫХ. ЧАСТЬ 1.Тема: Базы данных. Часть 1.
Рефлексия
1.
2.
3.
4.
Что мы сегодня узнали?
Чему мы сегодня научились?
Для чего нужны первичные и вторичные ключи?
Для чего нужны отношения между таблицами?
inginirium.ru
25