|
Программирование >> Хронологические базы данных
( ТЗ WHERE XSl = YSI AND XP# < YP# ) AS T4 : T4 { XPt, YPt } 6.27. ( SUMMARIZE SPJ { St, J# } PER RELATION { TUPLE { S S# ( Si ) } } ADD COUNT AS N ) { N } Напоминаем, что фигурирующее в предложении PER выражение является вызовом оператора выбора (в действительности это отнощение-литерал). 6.28. ( SUMMARIZE SPJ { S#, Р#, QTY } PER RELATION { TUPLE { S# S# ( Si ), P# P# ( Pi ) } } ADD SUM ( QTY ) AS Q ) { Q } 6.29. SUMMARIZE SPJ PER SPJ { P, Jl } ADD SUM ( QTY ) AS Q 6.30. WITH ( SUMMARIZE SPJ PER SPJ { P#, J } ADD AVG ( QTY ) AS Q ) AS Tl, ( Tl WHERE Q > QTY ( 350 ) ) AS T2 : T2 { Pt } 6.31. ( J JOIN ( SPJ WHERE S# = S# ( SI ) ) ) { JNAME } 6.32. ( P JOIN ( SPJ WHERE S# = S# ( SI ) ) ) { COLOR } 6.33. ( SPJ JOIN ( J WHERE CITY = London ) ) { Pi } 6.34. ( SPJ JOIN ( SPJ WHERE St = St ( Si ) ) { Pt } ) { Л } 6.35. ( ( ( SPJ JOIN ( P WHERE COLOR = COLOR ( Red ) ) { Pt } ) { St } JOIN SPJ ) { Pi } JOIN SPJ ) { SI } 6.36. WITH ( S { SI, STATUS } RENAME S AS XS, STATUS AS XSTATUS ) AS Tl, ( S { SI, STATUS } RENAME Si AS YS, STATUS AS YSTATUS ) AS T2, ( Tl TIMES T2 ) AS T3, ( T3 WHERE XSl = SI ( SI ) AND XSTATUS > YSTATUS ) AS T4 : T4 { YSI } 6.37. ( ( EXTEND J ADD MIN ( J, CITY ) AS FIRST ) WHERE CITY = FIRST ) { Jl } Каким будет результат выполнения этого запроса в случае, когда базовая перемен-ная-отнощение J пуста? 6.38. WITH ( SPJ RENAME Л AS ZJl )AS Tl, ( Tl WHERE ZJl = Jl AND P = Pi ( Pi ) ) AS T2, ( SPJ WHERE PI = PI ( PI ) ) AS T3, ( EXTEND T3 ADD AVG ( T2, QTY ) AS QX ) AS T4, T4 { Jl, QX } AS T5, ( SPJ WHERE Jl = Jl ( Jl ) ) AS T6, { EXTEND Тб ADD MAX ( Тб, QTY ) AS QY ) AS T7, ( T5 TIMES T7 { QY } ) AS T8, ( T8 WHERE QX > QY ) AS T9 : T9 { Jt } 6.39. WITH ( SPJ WHERE P# = P ( Pi ) ) AS Tl, Tl { St, Jt, QTY } AS T2, ( T2 RENAME Jt AS XJt, QTY AS XQ ) AS T3, ( SUMMARIZE Tl PER SPJ { Jt } ADD AVG ( QTY ) AS Q AS T4, ( T3 TIMES T4 ) AS T5, ( T5 WHERE XJI = Jt AND XQ > Q ) AS Тб : Тб { St } 6.40. WITH ( S WHERE CITY = London ) { St } AS Tl, ( P WHERE COLOR = COLOR ( Red ) ) AS T2, ( Tl JOIN SPJ JOIN T2 ) AS T3 : J { Jt } MINUS T3 { Jt } 6.41. J { Jt } MINUS ( SPJ WHERE St ;6 S ( SI ) ) { Jt } 6.42. WITH ( ( SPJ RENAME Pt AS X ) WHERE X = Pt ) { Jt } AS Tl, ( J WHERE CITY = London ) { Jt } AS T2, ( P WHERE Tl > T2 ) AS T3 : T3 { Pi } 6.43. S { St, P# } DIVIDEBY J { J# } PER SPJ { St, Pt, Jt } 6.44. ( J WHERE ( ( SPJ RENAME Jt AS Y ) WHERE Y = Jt ) { Pt } > ( SPJ WHERE St = St ( SI ) ) { Pt } ) { Jt } 6.45. S { CITY } UNION P { CITY } UNION J { CITY } 6.46. ( SPJ JOIN ( S WHERE CITY = London ) ) { Pt } UNION ( SPJ JOIN ( J WHERE CITY = London ) ) { Pt } 6.47. ( S TIMES P ) { St, Pt } MINUS SP { St, Pt } 6.48. Предоставляем два решения этой задачи. В первом решении, принадлежащем Хью Дарвену, используются только операторы из разделов 6.2 и 6.3. WITH ( SP RENAME S AS SA ) { SA, Pt } AS Tl, /* Tl {SA, Pt} : SA поставляет деталь Pt */ ( SP RENAME SI AS SB ) { SB, Pt } AS T2, /* T2 {SB, Pt} : SB поставляет деталь Pt */ Tl { SA } AS T3, /* T3 {SA} : SA поставляет некоторую деталь */ Т2 { SB } AS Т4, /* Т4 {SB} : SB поставляет некоторую деталь */ 240 Часть II. Реляционная модель ( Tl TIMES T4 ) AS T5, /* T5 {SA,SB,P#} : SA поставляет некоторую деталь, и SB поставляет деталь Р */ ( Т2 TIMES ТЗ ) AS Тб, /* Тб {SA,SB,Pt} : SB поставляет некоторую деталь, и SA поставляет деталь Р# */ ( Т1 JOIN Т2 ) AS Т7, /* Т7 {SA,SB,P} : SA и SB поставляют деталь Р */ ( ТЗ TIMES Т4 ) AS Т8, /* Т8 {SA,SB} : SA поставляет некоторую деталь, и SB поставляет некоторую деталь */ SP { Р# } AS Т9, /* Т9 {Р} : деталь Р поставляется некоторым поставщиком */ ( Т8 TIMES Т9 ) AS ТЮ, /* ТЮ {SA,SB,P} : SA поставляет некоторую деталь, SB поставляет некоторую деталь, и деталь Р# поставляется некоторым поставщиком */ ( ТЮ MINUS Т7 ) AS Til, /* Til {SA,SB,pi} : деталь Pi поставляется, но не поставщиками SA и SB */ ( Тб INTERSECT Til ) AS Tl2, /* T12 {SA,SB,P#} : деталь Pi поставляется поставщиком SA, но не SB */ ( Т5 INTERSECT Til ) AS T13, /* T13 {SA,SB,P} : деталь Pi поставляется поставщиком SB, HO не SA */ T12 { SA, SB } AS T14, /* T14 {SA,SB} : SA поставляет некоторую деталь, не поставляемую поставщиком SB */ Т13 { SA, SB } AS T15, /* T15 {SA,SB} : SB поставляет некоторую деталь, не поставляемую поставщиком SA */ ( Т14 UNION Т15 ) AS Т1б, /* Т1б {SA,SB} : некоторая деталь поставляется поставщиком SA или SB, но не обоими */
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |