|
Программирование >> Реляционные базы данных
studichatic - paiaisour.i Movie Ри<. 5.15. Деэвво пыроженип дпя предстовпения ParamountMovie Запрос из примера 5.38: SELECT title FROM ParamountMovie WHERE year =1979: отаоснтся к фичьмам, выпущенным студиеП Paramount в 1979 г. Дерево выражения этого запроса показано на рис. 5.16. Замел1м, что один лист в этом дереве обозначает представление ParamountMovie. Данный запрос интерпретируется путем подстановки дерева, изображенного на рис. 5.15. вместо листа ParamountMovie на рис. 5.16. title year - 1S79 ParamountMovie Ри<. 5.16. Дерево оыроженип зопрсхо Результат подстановки показан на рис. 5.17. Дерево, изображенное иа рис. 5.17,- приемлемый, но излишне сложный способ интерпретации запроса. Система SQL вьщуждена трансформировать это дерево, чтобы оно выглядело так, как дерево выражения для запроса нз примера 5.38: SELECT title FROM Movie WHERE StudioName =Paramount AND year = 1979; Например, проекшно п y, можно поставить над выбором ау,--,п, так как перенос проекции на ботее позднее время не может изменить смыьл выражения. Тогда получатся две последовательные проекиии, снача.па иа title и year, а затем только на title. Ясно, что первая из них является избыточной и ее можно устранить. Таким образом две проекшш можно заменить одной проекцией - на title. Дерево выражения хпн итого представления показано на рис. 5.15. zizle., year title, year StudioName Paramount Movie Рис. 5.17. Вьражение зопросо в терминох тоблиц бозы Две операции выбора тоже можно скомбинировать. В общем случае два последовательных выбора заменяются одним выбором для связки AND в их условиях. Результирующее дерево выражения показано на рис. 5.18. Именно такое дерево получается непосредственно из запроса: SELECT title FROM Movie WHERE StudioName =Paramounf AND year = 1979; title veer = 1979 AND stucioHane Pexa □1ДГ.Г Movie Рис. 5.18. Упрощение зопросо к тоблицом бовы 5.8.6 Упражнения к разделу 5-8 ((прожнение 5.8.1. Из таблиц базы MovieStar(name. address, gender, birthdate) MovieExec(name, address, сеП#, netWorth) Studra(name. address. presC#) title постройте следующие представления: а) Представление RichExec, содержащее имена, адреса и номера сертификатов адмнннстраторов с чисгым доходом не менее 10 млн. дол. b) Представление SttiuoPres, содержащее имена, адреса и номера сертификатов всех администраторов, являющихся президентами студий c) Представление ExecutiveStar, содержащее имена, адреса, пол, даты рождения, номера сертификатов и размеры чистого дохода людей, являющихся администраторами и кинозвездами одновременно. Упрожнение 5.8.2. Какие представления из упражнения 3.8.1 являются обновляемыми? Упрожнение 5.8.3. Запищите перечисленные ниже запросы с помощью одного пли нескольких представлений нз упражнения 5.8.1, не используя при этом никаких таблиц базы. л) Найдите имена женщин, являющихся одновременно кинозвездами и администраторами. ♦Ь) Найдите имена администраторов, являющихся президентами студий и имеющих чистый доход ие менее 10 млн. дол. !с) Найдите имена президентов студий, являющи.кся кинозвездами и имеющих чистый доход не менее 50 млн. дол. Ч Упрожнение 5.8.4. Для представления и запроса из примера 5.40: a) Постройте дерево выражения для представления MovieProd. b) Постройте дерево выражения для запроса нз данного примера. c) Постройте из ващих ответов на пункты (а) и (Ь) выражение для запроса в терминах таблиц базы. d) Объясните, как изменить выражение из пункта (с), чтобы получтъ эквивалентное ему выражение, соотвезствующсе рещенню, прсдложен1Юиу в примере 5.40. ! Упражнение 5.8.5. Запишите все запросы и представления из упражнения 5.8 3 в 1)иде выражений реляционной алгебры, замените применения представлений в выражении запроса и упростите, насколько это возможно, результирующие выражения. Запишите соответствующие им запросы SQL на таблицах базы. Упражнение 5.8.6. Используя таблицы базы Classes(class, type, country, numGune. bore, displacement) Ships (name, class, launched) 113 примера 4.13. сделайте следующее: a) Постройте представление BrItishShips, определяющее для каждого принадчежашего Великобритании корабля его класс, тип, количество н KiUHiop о)удий, водоизмещение и год спуска на воду. b) Используя представление из пункта (а), постройте запрос о количестве орудий и водоизмещении всех бр1панских линкоров, спущенных на воду до 1919 г. !с) Запишите запрос нз пункта (а) и представление из пункта (Ь) в виде выражений реляционной алгебры, замените применения представлений 3 выражении запроса и упростите, насколько это возможно, рсзультнруЮ1Ш1е выражения. !d) Построите соответствующий выражению из пункта (с) запрос SQL на таблицах &13Ы Classes и Ships.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |