Реферат: Организация Web-доступа к базам данных с использованием SQL-запросов
Очевидно, что отбор актуальных строк обеспечивается вводом в запрос 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 | |||||
Тета-соединение таблиц
В базе данных ПАНСИОН трудно подобрать несложный пример, иллюстрирующий тета-соединение таблиц. Поэтому сконструируем такой надуманный запрос:
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24