Вкладені подання

Так як уявлення є не більш ніж інструкціями SELECT, а інструкція SELECT може сама посилатися на уявлення як на джерело даних, одне подання може посилатися на інше Такі уявлення іноді називають вкладеними

Наступне подання використовує представлення vEventList і додає пропозицію WHERE для обмеження результатів тими подіями, які матимуть місце в наступні 30 днів:

CREATE VIEW dbovEventList3Odays AS

SELECT dbovEventListEventCode, LastName, FirstName FROM dbovEventList JOIN dboEvent

ON vEventListEventCode = EventEventCode WHERE EventDateBegin

BETWEEN GETDATEO and GETDATEO +30

У даному прикладі уявлення vEventList вкладено в vEventList3 0Days Ще один спосіб висловити ставлення-це визначити залежність уявлення vEvent3 0Days від vEventList (В утиліті Management Studio залежності обєктів можна переглянути після вибору в контекстному меню обєкта пункту All Tasks ^ Display Dependencies) На рис 142 показані залежності і вкладене подання

Додаткова Ще одним типом високотехнологічних залежностей є розділене інформація уявлення Воно обєднує дані, розбиті на декілька сегментованих таблиць, з міркувань підвищення продуктивності Розділені уявлення ми розглянемо в главі 53

Подання є не єдиним засобом вкладення інструкцій SELECT Підзапити і загальні табличні вирази постачають дані у вигляді таблиць або керованих

таблиць, які, в свою чергу, можуть бути вкладені в запит В цьому випадку весь код розглядається як єдиний компонент, що підвищує продуктивність у наведеному вище прикладі можна переписати як вкладені керовані таблиці (подзапрос в цьому коді укладений в дужки)

Puc 142 Ланцюжок залежностей легко розпізнається в діалоговому вікні Dependencies У даному прикладі ми бачимо, що подання vEventList3ODays включає в себе вкладене уявлення vEventList

SELECT EEventCode, LastName, FirstName FROM

(SELECT dboCustomerTypeCustomerTypeName,

dboCustomerLastName, dboCustomerFirstName, dboCustomerNickname,

dboEvent_mm_CustomerConfirmDate, dboEventEventCode, dboEventDateBegin, dboTourTourName, dboBaseCampBaseCampName, dboEventComment FROM dboTour INNER JOIN dboEvent ON dboTourTourlD = dboEventTourlD INNER JOIN dboEvent_mm_Customer ON dboEventEventID = dboEvent_mm_CustomerEventID INNER JOIN dboCustomer ON dboEvent_mm_CustomerCustomerlD = dboCustomerCustomerlD LEFT OUTER JOIN dboCustomerType ON dboCustomerCustomerTypeID = dboCustomerTypeCustomerTypeID INNER JOIN dboBaseCamp ON dboTourBaseCampID = dboBaseCampBaseCampID ) E

JOIN dboEvent

ON EEventCode = EventEventCode WHERE EventDateBegin BETWEEN GETDATEO and GETDATEO +30

Даному підзапитів присвоюється псевдонім Е з цього імені до нього виконується звернення в зовнішньому запиті Слід зазначити, що цю методику не можна назвати придатною для кінцевих користувачів Однак якщо ви розробник, який використовує вкладені уявлення, але хоче прояснити і стиснути код, то вкладені керовані таблиці являють собою найкраще рішення

Доповнювальних Про використання підзапитів і загальних табличних елементів (ETS) см в гла-

інформація ве 10

Тестування продуктивності показало, що коли дані і план виконання знаходяться в кеші, збережені процедури виграють в продуктивності перед виставами У той же час, якщо план виконання НЕ кешуватися (тобто недавно не виконувався), то уявлення виконуються швидше збережених процедур Як уявлення, так і збережені процедури проявили себе краще, ніж звичайна інструкція select, незалежно від того, що знаходиться в кеші Це доводить те, що практика використання уявлень для підтримки разових запитів користувачів і збережених процедур для даних додатків підтвердила свою спроможність

Рис 143 Синоніми можна створювати і настроювати у вікні Object Explorer утиліти Management Studio

Використання синонімів

Уявлення іноді використовують для приховування зашифрованих імен схеми бази даних Синоніми аналогічні уявленням, однак більш обмежені У той час як уявлення можуть проектувати стовпці і присвоювати їм псевдоніми, а також групріровать дані за допомогою обєднань та підзапитів, синоніми можуть привласнювати альтернативні імена таблиць, уявленням і збереженим процедурам (див рис 143)

Хоча синоніми і дещо обмежені в порівнянні з уявленнями, вони мають певне практичне застосування – зміна схеми обєктів У базах даних, схема яких інтенсивно використовується користувачами, відмінними від dbo, синоніми можуть перевизначити приналежність обєктів користувачеві dbo і полегшити таким чином створення запитів

Резюме

Уявлення є нічим іншим, як збереженими запитами SELECT У цьому немає нічого магічного Будь допустима інструкція SELECT може бути збережена як уявлення, включаючи свої складні обєднання, підзапити і підсумкові функції

У попередніх розділах ми обговорювали питання вилучення даних за допомогою потужної інструкції SELECT У наступному розділі ми продовжимо вивчення цієї інструкції, відійдемо від локальних баз даних і почнемо використовувати розподілені запити

Робота з розподіленими запитами

Дані рідко знаходяться в одному місці У сучасному світі більшість нових проектів підключається до існуючих джерел даних або, принаймні, розширюється за рахунок них Взагалі-то, це не є проблеми SQL Server дозволяє зчитувати дані з безлічі різних джерел і записувати їх туди Гетерогенні обєднання навіть дозволяють обєднувати дані SQL Server і електронних таблиць Excel

SQL Server пропонує кілька різних методів доступу до зовнішніх по відношенню до поточної базі даних Від простого посилання на іншу локальну базу даних до виконання наскрізних запитів, які задіють іншу базу даних з архітектурою клієнт / сервер’, – все це дозволяє здійснити SQL Server

Незважаючи на те що SQL Server вирішує технічні проблеми запитів до зовнішніх даних, якщо дві системи насправді обслуговуються різними додатками, то пряме звернення до зовнішнього сховища даних в більшості випадків порушує принцип інкапсуляції Таким чином, одночасне використання двох джерел даних знижує гнучкість архітектури У багатьох програмістських фірмах ця технологія не знаходить підтримки Замість цього обмін даними здійснюється за допомогою XML, SOAP і SOA, про які ми говорили в розділі 1 і ще раз до них повернемося в главі 32

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*