Что такое Представление таблиц?

Автор Syzygy, 21 мая 2010, 21:18

0 Пользователи и 1 гость просматривают эту тему.

Syzygy

Коллеги, не могу въехать, что же это за зверь такой. Я спросил у справки, справка мне ответила:
Цитата: Справка ООоПредставление таблицы - это запрос, который сохраняется с базой данных.
???
Сильно легче мне от этого не стало, т.к. запросы вроде бы тоже сохраняются с базой данных. Так в чём же принципиальное отличие Представления от обычного Запроса?
A Matter of Life and Death

PiVV

Есть подозрение, что так перевели то, что по английски называется "View" - ссылка.

kpalagin

У представления есть имя и к нему можно по этому имени обращаться, в отличие от запроса. См http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%28%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%29

Например (в псевдокоде)
create view kpalaginmessages as
select from messages where author = 'kpalagin'

а затем
select * from kpalaginmessages where date>'1.1.10'

Syzygy

Друзья, спасибо за ссылки, но я всё равно не понял, что оно есть такое. Мне бы суть ухватить :(

Есть таблица с данными - это понятно.
Есть запросы к таблице - это отбор данных из таблицы по определённым условиям. Тоже всё ясно.

Но что такое это самое Представление? Определение из вики просто убило.
A Matter of Life and Death

VlhOwn

#4
Это просто аналог запроса. Но если запрос - это, грубо говоря, процедура в терминах языков программирования, то представление - это макрокоманда - вместо имени представления подставляется текст SQL-запроса, составляющего это представление. Запросы вычисляются, представления заменяются своим "телом" на этапе компиляции.
Таким образом, представления позволяют визуально структурировать и упрощать сложные запросы.

Некоторый аналог из языка Си: #define ....

prof-alex

Цитата: Syzygy от 21 мая 2010, 22:44
Определение из вики просто убило.
Какое слово не понятно?

Реализация view очень сильно разнится у разных SQL-серверов, но суть одна.

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

Syzygy

Представление (англ. view, в сленге программистов часто используется в качестве заимствования из английского — «вьюшка») — виртуальная (логическая) таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен как подзапрос при использовании представления.

Собственно, "виртуальная таблица". Создал представление, открыл на редактирование - по сути, просто SQL-код. Какая же это таблица?

Дальше совсем всё тяжко... Представление - это виртуальная таблица, которая поименнованный запрос, который будет подставлен как подзапрос при испьзовании представления. Чтобы понять рекурсию, надо понять рекурсию...

Как я понял из объяснение Валеры, запросы - это SQL-код, который выполняется и выводит результат (часть таблицы). Представление - это тот же самый SQL-код, которые также выполняется, но он как бы "инкапсулирован" в некий объект (это самое представление) и этот объект имеет имя. Т.е. вместо того, чтобы говорить базе - вот тут вот выберешь то-то по таким-то условиям из того-то места, говоришь - сделай мне следующее представление (код которого и выбирает это самое то-то по таким-то условиями из того-то места).
A Matter of Life and Death

VlhOwn

#7
Рома, суть не в том, что кто-то куда-то инкапсулирован. Вот этот код
Цитата: kpalagin от 21 мая 2010, 22:35
У представления есть имя и к нему можно по этому имени обращаться, в отличие от запроса. См http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%28%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%29

Например (в псевдокоде)
create view kpalaginmessages as
select from messages where author = 'kpalagin'

а затем
select * from kpalaginmessages where date>'1.1.10'

порождает следующий код
select * from (select * from messages where author = 'kpalagin') where date>'1.1.10'
не в момент исполнения запроса, а в момент его синтаксического разбора. И потом уже этот запрос исполняется.

Syzygy

#8
Так. Сейчас попробую перевевести на русский:

Создать Представление Кирилл как:
  Выбрать сообщения, где Автор="Кирилл" (Выбираются записи, где автор - Кирилл)

а затем

Выбрать из  "Кирилла", то, где дата > 1.1.10
т.е. Выбрать сообщения где автор равен "Кирилл" и дата > 1.1.10 (Выбираются записи, где автор - Кирилл и дата - не меньше 1.1.10)

Так получается?
A Matter of Life and Death

VlhOwn


prof-alex

Цитата: Syzygy от 21 мая 2010, 23:30
Создал представление, открыл на редактирование - по сути, просто SQL-код. Какая же это таблица?
В общем случае да, но есть реализации допускающие вставку и модификацию данных в представлении. Так что вроде и таблица, но заполняется данными из других источников. Ну в википедии об этом написано.

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

Helen

Я использую представление в качестве сохранённого длинного запроса из нескольких таблиц.

Например, для работы часто нужна фильтрация по списку работающие сотрудников. Утомительно всякий раз писать длинный запрос, который сначала составляет этот список, а потом отбирает в нём по нужным критериям. Поэтому запрос, составляющий список, сохранён в виде представления

Цитата: Syzygy от 21 мая 2010, 20:18Представление таблицы
Такая лексема у нас есть в интерфейсе?

Syzygy

Цитата: Helen от 22 мая 2010, 08:21Такая лексема у нас есть в интерфейсе?
Есть "Представление (таблицы)" - в интерфейсе. В справке именно представление таблиц.
A Matter of Life and Death

BigAndy

Цитата: Syzygy от 21 мая 2010, 21:44Друзья, спасибо за ссылки, но я всё равно не понял, что оно есть такое. Мне бы суть ухватить
Представления - это запросы, которые выполняются движком базы данных, создаваемые DDL'ом Create View.... Собственно запросы -те, что сохраняются в движке ООО. Для ООО представления являются простыми таблицами. И обрабатывются как таблицы.
Учитывая многообразие запросов движка БД, различия могут быть обчень большими.

dr.Faust

Ключевое слово здесь:
Цитата: BigAndy от 22 мая 2010, 16:02Для ООО представления являются простыми таблицами. И обрабатывются как таблицы.
Запрос - некоторый код формирующий результат - тоже таблицу, но на основе исходной. Как если бы кто-то взял бумажную таблицу и отобрав в ней, допустим, только чётные записи построил из них новую.
Представление, это как если бы этот кто-то не строил новую таблицу, а изогнул гормошкой исходную так, что в ней остались бы видны только чётные записи. для создания представления используется запрос, тот что юзался в первом случае.
Свобода информации - свобода личности!