![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Здраствуйте. Возник следующий вопрос: "Когда имеет смысл использовать представления?"
Навскидку, нашел такие случаи: 1. Какой-то запрос используется многократно как самостоятельно, так и как часть других более сложных запросов - в этом случае, чтобы "не пугать" программиста их можно "спрятать" за педставлением. 2. Часть данных создается динамически по хранящимся (например, несколько текстовых полей соединются в одно или над несколькими полями производятся какие-то вычисления) - хранить такие данные не очень хорошая идея из-за проблем с поддержанием их актуальности, а "заставлять" программиста знать тонкости их получения значит усложнять приложение. Т.о., мой вопрос разбивается на три: 1. Прав ли я в своих рассуждениях? 2. Какие другие моменты применения представлений я упустил? 3. В какой книге про это можно почитать? Заранее спасибо -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Приведенные вами примеры в принципе работают но очень усложняют запросы... Это сильно сказывается на производительности. Вообще-то ответ будет таким - вообще не использовать нигде если без них можно обойтись. Есть 2 случая когда они очень нужны.
1. Для защиты данных Например "Select Name From Table1" - пользователю даётся доступ к этому View, а не к исходной таблице и он не может оперировать никакими другими полями кроме Name, Или "Select * From Table Where UserID=3" - тогда пользователь будет иметь данные которые относятся только к нему. В целом именно это и служит причиной создания View в подавляющем большинстве случаев. Как правило вам надо дать ограниченный доступ к базе данных для другого програмимиста, например программисту из другой компании - партнёра, вам надо дать доступ только к определённым данным, вы создаёте вместо таблиц какое-то количество View и даёте ему доступ только к ним. Этот программист сможет полноценно работать с вашей базой - делать запросы, отчёты и т.п. но оперировать только теми таблицами, столбцами и колонками которые вы ему разрешили 2. Когда таблица состоит из результатов каких-то сложных функций, например Create View N as Select GetDate() as CurrentDate, NewId as RandomGuid -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Vit, спасибо за ответ. Как я понял, представление - это результат некоторого компромисса между программистом, которому не хочется писать сложные запросы, и пользователем, которому не хочется долго ждать отклика от приложения.
-------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
ДА. Что-то вроде компромисса между ассемблером и высокоуровневым ООП. Кроме того, желая создать вьюху, помни о том, что из неё тоже придётся производить выборки. :-/ И если скрытие за вьюхой 10-табличного запроса со сложными вычислениями может быть оправдано, то две таблички в куче - вряд ли. "Селекционер" вместо 5 строк напишет 3, но до этого будет искать вьюху и разбираться с её назначением, дабы не "поймать" скрытую логическую бомбу. Тем более "селекционеру" придётся знать и понимать не только стуктуру и смысл таблиц, а и структуры, смысл вьюх. Кроме того вьюха нечасто будет универсальной. Каждому селекционеру может понадобиться что-то своё - придётся создавать целый "модельный ряд" вьюх, и знакомить с ним всех возможных "покупателей" ![]() От таковских минусов накопал... хотя к вьюхам у меня вроде отношение ровное ![]() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
На нашем проекте была еще одна цель (изначально) - вьюхи использовались в качестве дополнтельного слоя абстракции. То есть приложение не должно было работать с таблицами напрямую. Благодаря этому мы могли бы впоследствии менять структуру таблиц без изменения приложения. Но впоследствии от этого отказались.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |