|
Страница 3 из 9 Эквисоединение таблиц Если из декартова произведения убрать ненужные строки и столбцы, то можно получить актуальные таблицы, соответствующие любому из соединений. Меню Трапезы Вид_блюд Блюда Т В БЛ Т Трапеза В Вид БЛ Блюдо В Основа Выход Труд 1 З 3 1 Завтрак З Закуска 1 Салат летний З Овощи 200. 3 1 З 3 1 Завтрак З Закуска 2 Салат мясной З Мясо 200. 4 1 З 3 1 Завтрак З Закуска 3 Салат витаминный З Овощи 200. 4 * . . . 1 З 3 1 Завтрак З Закуска 12 Суп молочный С Молоко 500. 3 1 З 3 1 Завтрак З Закуска 13 Бастурма Г Мясо 300. 5 . . . 1 З 3 1 Завтрак З Закуска 32 Кофе черный Н Кофе 100. 1 1 З 3 1 Завтрак З Закуска 33 Кофе на молоке Н Кофе 200. 2 1 З 6 1 Завтрак З Закуска 1 Салат летний З Овощи 200. 3 1 З 6 1 Завтрак З Закуска 2 Салат мясной З Мясо 200. 4 1 З 6 1 Завтрак З Закуска 3 Салат витаминный З Овощи 200. 4 1 З 6 1 Завтрак З Закуска 4 Салат рыбный З Рыба 200. 4 1 З 6 1 Завтрак З Закуска 5 Паштет из рыбы З Рыба 120. 5 1 З 6 1 Завтрак З Закуска 6 Мясо с гарниром З Мясо 250. 3 * . . . Рис. 3.1. Иллюстрация декартова произведения Очевидно, что отбор актуальных строк обеспечивается вводом в запрос WHERE фразы, в которой устанавливается соответствие между: кодами трапез (Т) в таблицах Меню и Трапезы (Меню.Т = Трапезы.Т), кодами видов блюд (В) в таблицах Меню и Вид_блюд (Меню.В = Вид_блюд.В), номерами блюд (БЛ) в таблицах Меню и Блюда (Меню.БЛ = Блюда.БЛ). Такой скорректированный запрос SELECT Меню.*, Трапезы.*, Вид_блюд.*, Блюда.* FROM Меню, Трапезы, Вид_блюд, Блюда WHERE Меню.Т = Трапезы.Т AND Меню.В = Вид_блюд.В AND Меню.БЛ = Блюда.БЛ; позволит получить эквисоединение таблиц Меню, Трапезы, Вид_блюд и Блюда: Т В БЛ Т Трапеза В Вид БЛ Блюдо В Основа Выход Труд 1 З 3 1 Завтрак З Закуска 3 Салат витаминный З Овощи 200. 4 1 З 6 1 Завтрак З Закуска 6 Мясо с гарниром З Мясо 250. 3 1 Г 19 1 Завтрак Г Горячее 19 Омлет с луком Г Яйца 200. 5 . . . 3 Г 16 3 Ужин Г Горячее 16 Драчена Г Яйца 180. 4 3 Н 30 3 Ужин Н Напиток 30 Компот Н Фрукты 200. 2 3 Н 31 3 Ужин Н Напиток 31 Молочный напиток Н Молоко 200. 2
|