пятница, 15 января 2021 г.

Урок 16-17. Многотабличные БД. Практическая работа

Дата проведения занятия 18.01.21, 25.01.21

В качестве примера рассмотрим базу данных "Школьная столовая". В этой БД требуется хранить информацию о двух классах объектов: о блюдах, которые продаются в столовой, и заказах, которые поступают от классных руководителей на обеды (завтраки) для классов или заказов отдельных школьников. Рассмотрим схему связей этой БД


БД состоит из трех таблиц: Блюда, Заказы, Заказано.
В этой схеме таблицы БД связаны связями "один-ко-многим"
Связь  "один-ко-многим" показывает, что одной записи в главной таблице соответствует много записей в подчиненной таблице.
В паре таблиц Блюда - Заказано таблица Блюда - главная, Заказано - подчиненная.
В паре таблиц Заказы - Заказано таблица Заказы - главная, Заказано - подчиненная.

Практическая работа.  Разработка многотабличной БД "Школьная столовая".
Практическая работа.   Часть 1. Создание таблиц

Практическая работа.   Часть 2. Создание форм

Домашняя работа - продолжение.  Подготовка к заполнению БД "Школьная столовая"
Придумать и записать в тетради данные для заполнения таблиц
     Для таблицы Блюда: название и цену не менее 10-ти блюд; в поле Примечание - можно указать "Новинка", "Фирменное блюдо" и т п
     Для таблицы Заказы: дата (предыдущий и текущий месяц), номер заказа не менее 10-ти заказов; в поле Примечание - можно указать фамилию заказчика и т п
     Для таблицы Заказано: написать состав не менее 20-ти заказов. Один заказ может состоять из одного блюда (Например, пицца) или нескольких блюд (Например, салат и булочка) и т п
Понятно, что заказывать можно только то, что есть в меню, то есть в таблице Блюда

пятница, 8 января 2021 г.

Урок 15. Многотабличные БД

Дата проведения занятия 11.01.21
Почему бы не собрать все данные в одной таблице?
У однотабличной модели есть недостатки:

  • дублирование данных
  • при изменении каких-то данных может потребоваться изменение нескольких записей
  • нет защиты от опечаток
Однотабличная БД - это аналог картотеки, в которой все карточки имеют одинаковую структуру. А на практике в одной БД нужно хранить данные, относящиеся к объектам разных типов, которые связаны между собой. 
 
Удобнее классифицировать сведения об объектах и создать несколько таблиц - для каждого класса. При создании многотабличной БД между таблицами устанавливаются связи. Связь устанавливается только между парой таблиц. Одна из таблиц такой пары называется главной таблицей, другая - подчиненной таблицей.
При создании связи ключевое поле главной таблицы связывается с полем подчиненной таблицы, которое называется внешним ключом. 
Посмотрим презентацию (слайды 1-10), в которой более подробно рассмотрены  многотабличные БД.

В качестве примера рассмотрим базу данных "Школьная столовая". В этой БД требуется хранить информацию о двух классах объектов: о блюдах, которые продаются в столовой, и заказах, которые поступают от классных руководителей на обеды (завтраки) для классов или заказов отдельных школьников. Рассмотрим схему связей этой БД


Каждое блюдо может быть включено в несколько заказов.
Каждый заказ может состоять из одного или нескольких блюд.
Чтобы упростить связи между таблицами Блюда и Заказы, вводится дополнительная таблица Заказано.
Теперь БД состоит из трех таблиц.
В этой схеме таблицы БД связаны связями "один-ко-многим"
Связь  "один-ко-многим" показывает, что одной записи в главной таблице соответствует много записей в подчиненной таблице.
В паре таблиц Блюда - Заказано таблица Блюда - главная, Заказано - подчиненная.
В паре таблиц Заказы - Заказано таблица Заказы - главная, Заказано - подчиненная.

Домашняя работа.  Разработка состава таблиц БД "Школьная столовая"
Придумать и записать в тетради данные для заполнения таблиц
     Для таблицы Блюда: название и цену 5-ти блюд; в поле Примечание - можно указать "Новинка", "Фирменное блюдо" и т п
     Для таблицы Заказы: дата (предыдущий и текущий месяц), номер заказа для 5-ти заказов; в поле Примечание - можно указать фамилию заказчика и т п
     Для таблицы Заказано: написать состав 5-ти заказов. Один заказ может состоять из одного блюда (Например, пицца) или нескольких блюд (Например, салат и булочка) и т п
Понятно, что заказывать можно только то, что есть в меню, то есть в таблице Блюда