Лабораторная работа № 7

Лабораторная работа №7

Выборка информации из одной таблицы

Описание базы данных: Реляционная база данных представляется пользователю как совокупность таблиц и ничего кроме таблиц. Все задания предложенные в 7, 8 и 9 лабораторных работах заданы на примере реляционной базы данных ПАНСИОН (файл находится Здесь, сохраните его в Ваш перемещаемый профиль/pansionat.gdb), поэтому познакомимся с ней по подробнее.

Кладовая пансионата периодически пополняется продуктами из списка, часть которого показана в таблице Product. Каждый продукт имеет кроме названия (столбец Product) уникальный номер этого продукта (столбец PR). Химический состав продуктов приведен для 1 кг их съедобной части: основные пищевые вещества (Belok, Zhir и Uglevod) даны в граммах, а минеральные вещества (K, Ca, Na) и витамины (B2, PP, C) - в миллиграммах.

В таблице Bluda представлены уникальные номера блюд (столбец BL), их названия, коды видов (см. таблицу Vid_blud), основной продукт (столбец Osnova), масса порции в граммах (столбец Vihod) и приведенная стоимость в копейках приготовления одной порции (столбец Trud).

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

Таблица Sostav связывает между собой таблицы Bluda и Product, оговаривая, какая масса (в граммах) того или иного продукта (столбец Ves) должна входить в состав одной порции блюда. Так, порция блюда с номером 12 (Суп молочный) должна состоять из 350 г продукта с номером 7 (Молоко), 35 г продукта с номером 13 (Рис), 5 г продукта с номером 3 (Масло) и 5 г продукта с номером 16 (Сахар).

Шеф-повар ежедневно получает от завхоза сведения о количестве в килограммах имеющихся продуктов и их текущей стоимости (столбцы Kolvo и Stoimost таблицы Nalichie). Используя эти сведения, он определяет по таблице Sostav перечень тех блюд, которые можно приготовить из этих продуктов, а также калорийность и стоимость таких блюд. При этом стоимость блюда складывается из стоимости и массы продуктов, необходимых для приготовления одной его порции, а также из трудозатрат на ее приготовление (см. таблицу Bluda). Калорийность же определяется по массе и калорийности каждого из продуктов блюда. (Для получения значения калорийности продукта исходят из того, что при окислении 1 г углеводов или белков в организме освобождается в среднем 4.1 ккал, а при окислении 1 г жиров - 9.3 ккал.)

Учитывая примерную стоимость и необходимую калорийность дневного рациона отдыхающих, шеф-повар составляет меню на следующий день. В этом меню (таблица Menu) предлагается по нескольку альтернативных блюд каждого вида (таблица Vid_blud) и для каждой трапезы (таблица Trapeza). Перед завтраком каждый отдыхающий вводит в ЭВМ номер закрепленного за ним места в столовой пансионата (столбец СМ в таблице Vibor) и желаемый набор блюд для каждой из трапез следующего дня (в примере таблица заполнялась отдыхающим, сидящим на месте с номером 2).

Завхоз связан с поставщиками продуктов, сведения о которых хранятся в таблице Postavchiki. Эта таблица содержит уникальный номер поставщика (столбец PS), его название, статус, месторасположение и телефон.

Таблица Postavki связывает между собой таблицы Product и Postavchiki, оговаривая, какое количество продукта (столбец Kolvo) и по какой цене поставил тот или иной поставщик. Отсутствие в строке цены и количества говорит о том, что поставщик PS может поставлять продукт PR, но в данный момент не осуществил такой поставки.

рис7.1

Перед тем, как приступить к разработке запросов рассмотрите все таблицы и познакомьтесь с данными, которые в них находятся.

Порядок выполнения работы:

Запустите IBExpert и зарегистрируйте в нем предложенную базу Пансионат, при регистрации укажите Charset - NONE. Простые запросы можно построить с помощью Query Bilder, а запросы посложнее SQL Editor.

1. Простая выборка и исключение дубликатов.

Создайте следующие запросы:

  • Запрос выдать название и адрес поставщиков
  • Выдать основу всех блюд
  • Модифицировать предыдущий запрос, исключив из него дубликаты

2. Вычисления в запросах.

Определите:

  • Значение калорийности всех продуктов, если известно, что при окислении 1 г углеводов или белков в организме освобождается в среднем 4.1 ккал, а при окислении 1 г жиров - 9.3 ккал
  • Сумму поставки каждого продукта

3. Выборка с использованием фразы WHERE (Between, IN, Like)

Получите:

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

4. Выборка с упорядочиванием.

Получите:

  • Перечень продуктов и содержание в них основных веществ (белки, жиры, углеводы) в порядке убывания содержания белка
  • Все содержимое таблицы Bluda, отсортировав ее строки по видам блюд и основе

5. Агрегирование данных.

  • Выдать данные о массе лука (PR=10), проданного поставщиками, и указать количество этих поставщиков
  • Получить сумму цен, среднюю цену, количество поставляемых продуктов проданных коопторгом УРОЖАЙ (PS=5)
  • Сколько поставлено моркови (PR=2) и сколько поставщиков ее поставляют
  • Попробуйте получить сумму массы поставленного лука, перемножив ее на среднюю его цену
Напишите тексты запросов, используя конструкцию SELECT, за каждый запрос из п.1 и п.2 вы получаете 1 балл, а за каждый запрос из п.3-п.5 по 2 балла.
Синтаксис оператора SELECT и пример написания запроса вы можете увидеть в методических указаниях к лабораторной работе

Остання зміна: неділя 6 квітень 2008 4:50