Организация Web-доступа к базам данных с использованием SQL-запросовРефераты >> Программирование и компьютеры >> Организация Web-доступа к базам данных с использованием SQL-запросов
Рисунок 2.6
Очевидно, что отбор актуальных строк обеспечивается вводом в запрос 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 |
Естественное соединение таблиц
Легко заметить, что в эквисоединение таблиц вошли дубликаты столбцов, по которым проводилось соединение (Т, В и БЛ). Для исключения этих дубликатов можно создать естественное соединение тех же таблиц:
SELECT Т, В, БЛ, Трапеза, Вид, Блюдо, Основа, Выход, Труд
FROM Меню, Трапезы, Вид_блюд, Блюда
WHERE Меню.Т = Трапезы.Т
AND Меню.В = Вид_блюд.В
AND Меню.БЛ = Блюда.БЛ;
Реализация естественного соединения таблиц имеет вид
Т |
В |
БЛ |
Трапеза |
Вид |
Блюдо |
Основа |
Выход |
Труд |
1 |
З |
3 |
Завтрак |
Закуска |
Салат витаминный |
Овощи |
200. |
4 |
1 |
З |
6 |
Завтрак |
Закуска |
Мясо с гарниром |
Мясо |
250. |
3 |
1 |
Г |
19 |
Завтрак |
Горячее |
Омлет с луком |
Яйца |
200. |
5 |
… | ||||||||
3 |
Г |
16 |
Ужин |
Горячее |
Драчена |
Яйца |
180. |
4 |
3 |
Н |
30 |
Ужин |
Напиток |
Компот |
Фрукты |
200. |
2 |
3 |
Н |
31 |
Ужин |
Напиток |
Молочный напиток |
Молоко |
200. |
2 |
Композиция таблиц
Для исключения всех столбцов, по которым проводится соединение таблиц, надо создать композицию
SELECT Трапеза, Вид, Блюдо, Основа, Выход, Труд
FROM Меню, Трапезы, Вид_блюд, Блюда
WHERE Меню.Т = Трапезы.Т
AND Меню.В = Вид_блюд.В
AND Меню.БЛ = Блюда.БЛ;
имеющую вид
Трапеза |
Блюдо |
Вид |
Основа |
Выход |
Труд |
Завтрак |
Салат витаминный |
Закуска |
Овощи |
200. |
4 |
Завтрак |
Мясо с гарниром |
Закуска |
Мясо |
250. |
3 |
Завтрак |
Омлет с луком |
Горячее |
Яйца |
200. |
5 |
. . . | |||||
Ужин |
Драчена |
Горячее |
Яйца |
180. |
4 |
Ужин |
Компот |
Напиток |
Фрукты |
200. |
2 |
Ужин |
Молочный напиток |
Напиток |
Молоко |
200. |
2 |