22
Взаимосвязи между таблицами: установка и удаление. Способы объединения таблиц 1

16 взаимосвязи таблиц

Embed Size (px)

Citation preview

Page 1: 16 взаимосвязи таблиц

1

Взаимосвязи между таблицами: установка и удаление. Способы объединения таблиц

Page 2: 16 взаимосвязи таблиц

2

С В Я З И Т А Б Л И Ц

Все связи – отображает связанные таблицыОчистить макет – убирает таблицы из видуСкрыть таблицу – прячет выделенную таблицуПрямые связи - отображает связи от конкретной таблицы

Page 3: 16 взаимосвязи таблиц

3

С В Я З И Т А Б Л И Ц

Отчет по схеме данных

Page 4: 16 взаимосвязи таблиц

4

С В Я З И Т А Б Л И Ц

Отобразить таблицу +

Изменение связей

Page 5: 16 взаимосвязи таблиц

5

Создание связей:• Связь между таблицами устанавливается автоматически при создании подстановки с помощью мастера подстановок из другой таблицы;• Перетаскивание одноименных полей с одинаковым типом данных из одной таблицы на другую;

Page 6: 16 взаимосвязи таблиц

6

Перетащить поле для создания подстановки

Page 7: 16 взаимосвязи таблиц

7

С В Я З И Т А Б Л И Ц

Изменение и удаление связей - КМ

Page 8: 16 взаимосвязи таблиц

8

123

Page 9: 16 взаимосвязи таблиц

9

1. Сохранения целостности данных состоит в недопущении непарных записей и поддержании ссылок в синхронизированном состоянии, чтобы исключить появление записей со ссылками на несуществующие записи. Access будет отклонять обновления и удаления, изменяющие конец ссылки.

2. Access будет отклонять каждую операцию, нарушающую целостность данных для этой межтабличной связи. Если же обновить первичный ключ, Access автоматически обновит все поля, ссылающиеся на этот первичный ключ.

3. При удалении записи на стороне первичного ключа в отношении, Access автоматически удалит все записи со ссылкой на первичный ключ.

Page 10: 16 взаимосвязи таблиц

10

Зачем создавать межтабличные связи?•Межтабличные связи предоставляют

сведения для структуры запросов •Межтабличные связи предоставляют

сведения для структуры форм и отчетов

•Межтабличные связи — это та основа, с помощью которой можно обеспечить целостность данных, чтобы в базе данных не было непарных записей.

Page 11: 16 взаимосвязи таблиц

11

Page 12: 16 взаимосвязи таблиц

12

Page 13: 16 взаимосвязи таблиц

13

Page 14: 16 взаимосвязи таблиц

14

Т_Студенты Личный номер Фамилия студента Курс

11 Котова 422 Серова 133 Леонидов 3

Т_ДисциплиныКод дисциплины Название дисциплины Семестр

1 Высшая математика 22 Иностранный язык 33 Философия 14 Психология 95 Спецкурс 10

Объединение таблиц

Page 15: 16 взаимосвязи таблиц

15

Запрос: Какие экзамены сданы всеми студентами, которые закончили учебный год?Студенты (семестр <= 2*курс) Дисциплины

Личный номер

Фамилия студента

Курс Код дисциплины

Название дисциплины

Семестр

11 Котова 4 1 Высшая математика 211 Котова 4 2 Иностранный язык 311 Котова 4 3 Философия 122 Серова 1 1 Высшая математика 222 Серова 1 3 Философия 133 Леонидов 3 1 Высшая математика 233 Леонидов 3 2 Иностранный язык 333 Леонидов 3 3 Философия 1

Page 16: 16 взаимосвязи таблиц

16

Т_ОценкаЛичный номер Код дисциплины Оценка

11 1 511 2 411 3 522 1 322 3 433 2 5

Экви-соединения. Даны три отношенияТ_Студенты Личный номер

Фамилия студента

11 Котова22 Серова33 Леонидов

Т_ДисциплиныКод дисциплины Название дисциплины

1 Высшая математика2 Иностранный язык3 Философия

Page 17: 16 взаимосвязи таблиц

17

Совпадают поля Личный номер (их необходимо переименовать)

Личный номер 1

Фамилия студента

Личный номер 2

Код дисциплины Оценка

11 Котова 11 1 511 Котова 11 2 411 Котова 11 3 522 Серова 22 1 322 Серова 22 3 433 Леонидов 33 2 5

Если необходимо получить из данных отношений информацию, касающуюся всех оценок, полученных студентами, то нужно использовать экви-соединение.Т_студенты [Личный_номер = Личный_номер] Т_Оценки

Page 18: 16 взаимосвязи таблиц

18

Личный номер

Фамилия студента

Код дисциплины

Название дисциплины Оценка

11 Котова 1 Высшая математика 511 Котова 2 Иностранный язык 411 Котова 3 Философия 522 Серова 1 Высшая математика 322 Серова 3 Философия 433 Леонидов 2 Иностранный язык 5

Естественное соединение

Т_Студенты join Т_Дисциплины join Т_Оценки

Page 19: 16 взаимосвязи таблиц

19

Примеры использования реляционных операторовПример1: Получить фамилии студентов, сдавших дисциплину с кодом 3Решение:((Т_Оценки join Т_Студенты) Where Код_дисциплины = 3) [Фамилия_студента]

Личный номер

Фамилия студента

Код дисциплины Оценка

11 Котова 3 522 Серова 3 4

Фамилия студентаКотоваСерова

Page 20: 16 взаимосвязи таблиц

20

Пример2: Получить фамилии студентов, сдавших философиюРешение:(((Т_Дисциплины Where Название_дисциплины = философия) join Т_Оценки ) join Т_Студенты) [Фамилия_студента]

Личный номер

Фамилия студента

Код дисциплины

Название дисциплины Оценка

11 Котова 3 Философия 522 Серова 3 Философия 4

Фамилия студентаКотоваСерова

Page 21: 16 взаимосвязи таблиц

21

Пример3: Получить фамилии студентов, не сдавших дисциплину с кодом 3Решение:((Т_Студенты [Личный_номер] minus ((Т_Студенты join Т_Оценки) Where Код_дисциплины = 3) [Личный_номер]) join Т_Студенты ) [Фамилия_студента]

Личный номер

Фамилия студента

Код дисциплины

Название дисциплины Оценка

33 Леонидов 2 Иностранный язык 5

Фамилия студентаЛеонидов

Page 22: 16 взаимосвязи таблиц

22

Левое соединение: A left join BПравое соединение: A right join B

Пример4: Узнать средний балл оценокРешение:(Т_Оценки Rename Оценка As Средняя) [Средняя] = Avg (Т_Оценки [Средняя] )

Средняя4,33