Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
! БД ответы.docx
Скачиваний:
27
Добавлен:
15.09.2019
Размер:
313.11 Кб
Скачать
  1. Типы связей в реляционной модели.

В реляционной бд данные хранятся в виде отношений. Каждое отношение описывает некий информационный объект. Одна запись соответствует одному экземпляру информационного объекта.

Между объектами в реляционной модели существуют три типа связи:

  1. 1: 1 «Один к одному»

  2. 1 : М «один ко многим»

  3. М : м «многие ко многим»

.1. Между двумя информационными объектами наблюдается тип связи 1 к 1, если в каждый момент времени одному экземпляру информационного объекта А соответствует только один экземпляр информационного объекта В и наоборот.

Например: брак в России: один муж – одна жена.

.2. Межу двумя информационными объектами наблюдается связь 1 ко М, если в каждый момент времени одному экземпляру информационного объекта А соответствует 0,1 или более экземпляров информационного объекта В. Но один экземпляр информационного объекта В связан в точности с один экземпляром информационного объекта А.

Например: многоженство. Один муж – много жен, но одна жена – один муж.

.3. Между двумя информационными обхектами наблюдается связь М : М, если в каждый момент времени одному экземпляру информационного объекта А соответствует 0, 1 или более экземпляров информационного объекта В, и наоборот.

Например: студенты, дисциплины, преподаватели.

Определение связей между таблицами.

Для того, чтобы определить тип связи между таблицами, нужно узнать, где главная таблица, где зависимая.

Главной таблице не требуется другая таблица для полной расшифровки ее полей. Должен быть определен ПК.

Нужно взять одну запись в главной таблице и определить, сколько записей ей потенциально может соответствовать в зависимой таблице.

Если не более одной записи – значит связь 1:1;

0,1 или более – 1: М

Непосредственно между двумя таблицами М:М не реализуются, только через промежуточную таблицу.

Студенты (номер, фамилия, группа, код-специальности) – Зависимая; внешний ключ (FK) – код-специальности, ПК – номер.

Специальности (код-специальности, название) – Главная таблица. ПК (PK ) код-специальности.

Студенты М : 1 Специальность.

Одному студенту соответствует одна специальность. Одной специальности много студентов.

Предметы (код, название)

Преподаватели (номер, фамилия)

Получаем, что один преподаватель может вести много предметов, один предмет может читать много (разных) преподавателей. Но связь М:М реализуется только через промежуточную таблицу.

Нагрузка (код-предмета, номер-преподавателя)

Получаем: Предмет 1 : М Нагрузка М : 1 Преподаватель

  1. Операции над отношениями.

Реляционная модель данных является совокупностью взаимосвязанных двумерных таблиц – объектов модели. Связи между двумя логически связанными таблицами в реляционной модели устанавливаются по равенству значений одинаковых атрибутов этих таблиц.

Relation (отношение), т.е. двумерная (реляционная) таблица, обладающая определенными свойствами.

Таблица описывает некоторый информационный объект. Одна строка (запись) хранит 1 экземпляр этого объекта.

Отношение – двумерная таблица, обладающая определенными (5) свойствами.

Определенными свойствами реляционной (двумерной) принято считать:

  1. В ячейке хранится атомарное значение (неделимое значение);

  2. Все столбцы однородные (один тип данных на столбец);

  3. Каждый столбец имеет уникальное имя;

  4. Возможна произвольная перестановка, как строк, так и столбцов;

  5. В таблице не может быть одинаковых строк.

Атрибут – поименованная характеристика объекта, с помощью которой моделируется его свойства. Атрибут показывает, какая информация должна быть собрана об объекте [объект – клиент банка; атрибут – номер счет, адрес, сумма вклада, ФИО и т.д.]

Кортеж отношения – строка, запись.

Степень(-арность) отношения – количество столбцов таблицы.

Мощность отношения – (количество строк таблицы) – характеристика, обозначающая максимальное количество экземпляров одного объекта, связанных с экземпляром другого объекта.

Домен – совокупность допустимых значений атрибута.

Схема отношения – совокупность заголовков таблиц.

Первичный ключ – минимальный набор атрибутов, который однозначно определяет каждую запись. Свойства ключа: минимальность и уникальность.

Таблица с установленным первичным ключом считается главной таблицей.

Главной таблицей называется такая таблица, которой не требуется другая таблица для полной идентификации её полей.

Зависимая (дочерняя) таблица – такая таблица, которой требуется другая таблица для расшифровки её полей.

Поле в зависимой таблице, которое соединяется с ПК в главной таблице, называется внешним ключом.

Основоположником реляционной модели является английский математик Эдгар Кодд.

Кодд предложил не только реляционную модель, он так же предложил язык обработки данных: реляционную алгебру и реляционное исчисление. И тот, и другой языки построены на математическом аппарате.

Реляционная алгебра – это процедурных язык обработки [реляционных] таблиц. Результат запроса формируется за несколько шагов.

Реляционное исчисление – непроцедурный язык. В реляционном исчислении результат формируется за один шаг.

Для эти языка взаимно эквивалентны.

В последнее время получило распространение реляционное исчисление. SQL (Structured Query Language) – язык структурированных запросов – относят к реляционному исчислению.

Основными операциями реляционной алгебры считают:

  1. Объединение (Union)

Бинарные операции (операции над двумя таблицами)

Для объединения, пересечения и разности важна структура таблиц.

Все кортежи двух отношений (таблиц). Без дубликатов.

  1. Пересечение

Результат: только общие кортежи (строки) двух таблиц

  1. Разность

Получаем только те строки, которые принадлежат таблице, из которой вычитают.

  1. Декартово произведение

  1. Деление

  1. Соединение (Join)

Симметричное соединение таблиц. Должен быть общий атрибут.

  1. Выборка (Select/селекция)

Унарные операции (т.е. выполняемые над одной таблицей)

Горизонтальный фильтр на таблицу (по строкам)

  1. Проекция (Project)

Вертикальный фильтр на таблицу (на столбец)

  1. При объединение двух отношений получаем все кортежи (строки) двух отношений: исхкортежи1 U исхкортежи2

  2. При пересечении двух отношений получаем только общие кортежи этих отношений: исхкортежи1 ∩ исхкортежи2

  3. При выполнении операции разность получаются только те кортежи, которые принадлежат уменьшаемой таблице. Исхкортежи1\Исхкортежи2

Даны два отношения R и S.

R

A

B

C

a

b

c

1

2

3

4

5

6

S

A

B

C

d

e

f

1

2

3

7

8

9

K 1=R U S

K 2= R S

K 31 = K\S

K 32 = S\K

K1

A

B

C

a

b

c

1

2

3

4

5

6

d

e

f

7

8

9

K2

A

B

C

1

2

3

K 31

A

B

C

a

b

c

4

5

6

K 32

A

B

C

d

e

f

7

8

9

Для операций 1- 3 (объединение, пересечение, разность) важна структура отношений.

  1. Декартово произведение

Даны два отношения R и S.

R

A

B

C

a

b

c

1

2

3

4

5

6

M

A

B

0

2

a

b

R M

A

B

C

A1

B1

a

b

c

0

2

a

b

c

a

b

1

2

3

0

2

1

2

3

a

b

4

5

6

0

2

4

5

6

a

b

  1. Соединение (операция Join)

Для выполнения соединения таблиц, у таблиц должен быть по крайне мере один общий атрибут. Ко всем (к каждому) кортежам одного отношения добавляется каждый кортеж другого отношения, елси у них значения соединяемого атрибута совпадают.

Симметричное соединение (Inner Join) представляет собой декартово произведение двух отношений, на которым выполнена селекция (выборка) по какому-то условию.

R

A

B

C

P

1

a

P

2

b

Q

2

e

S

D

C

1

a

2

b

3

d

4

b

R S по C (т.к. только атрибут С – общий)

A

B

C

D

P

1

a

1

P

2

b

2

P

2

b

4

  1. Деление

  1. Выборка (селекция) – горизонтальный фильтр на таблицу по строкам.

  1. Проекция – вертикальный фильтр на таблицу по столбцам.

Пример: пусть даны отношения R1 – список абитуриентов, сдававших экзамены по окончанию подготовительных курсов; R2 – список абитуриентов, сдававших экзамены на общих условиях; R3 – список принятых в колледж. Необходимо использую операции над отношениями выполнить задания:

  1. Определить список абитуриентов, которые поступали два раза и не поступили. (R1 R2\R3)

  2. Определить поступивших с первого раза. ( (R1\R2 ∩ R3) (R2\R1 ∩ R3) )

  3. Определить поступивших со второго раза (R1 R2 ∩ R3)

  4. Определить тех, кто поступал один раз и не поступил. ( (R1\R2 \ R3) (R2\R1\ R3) )