Введение в модель данных SQL
Пусть имеется пустая таблица EMP_MNGS с заголовком
EMP_NO |
DEPT_MNG |
PRO_MNG |
Какая из следующих таблиц EMP_MNGS является результатом выполнения оператора?
INSERT INTO EMP_MNGS (SELECT DISTINCT EMP_NO, CASE WHEN EMP.DEPT_NO IS NOT NULL THEN DEPT_MNG ELSE NULL, CASE WHEN EMP.PRO_NO IS NOT NULL THEN PRO_MNG ELSE NULL, FROM EMP, DEPT, PRO WHERE (EMP.DEPT_NO IS NULL OR EMP.DEPT_NO = DEPT.DEPT_NO) AND (EMP.PRO_NO IS NULL OR EMP.PRO_NO = PRO.PRO_NO) AND IF (EMP.DEPT_NO IS NOT NULL AND EMP.PRO_NO IS NOT NULL) THEN DEPT_MNG <> PRO_MNG);
Пусть имеются следующие два определения представлений:
CREATE VIEW LA_EMP AS SELECT * FROM EMP WHERE EMP_SAL < (SELECT AVG (E.EMP_SAL) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO);
и
CREATE VIEW LA_LA_EMP AS SELECT * FROM LA_EMP WHERE EMP_SAL < (SELECT AVG (E.EMP_SAL) FROM LA_EMP E WHERE E.DEPT_NO = LA_EMP.DEPT_NO);
При принятом в этих упражнениях примерном составе строк таблицы EMP после материализации этих представлений были бы получены следующие таблицы:
EMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|---|---|---|---|---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
EMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|---|---|---|---|---|
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
Пусть над представлением LA_LA_EMP выполняется операция
UPDATE LA_LA_EMP SET EMP_SAL = EMP_SAL + 10000.00
Какие из приведенных ниже таблиц соответствуют материализованным представлениям LA_LA_EMP и LA_EMP после выполнения этой операции?
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
AUTHORS |
---|
AUTHOR_ID : INTEGER |
AUTHOR_NAME : VARCHAR (20) |
AUTHOR_BDATE : DATE |
AUTHOR_ADDRESS : VARCHAR (40) |
AUTHOR_PICTURE : BLOB |
AUTHORS-BOOKS |
---|
ISBN : VARCHAR (20) |
AUTHOR_ID : INTEGER |
BOOKS |
---|
ISBN : VARCHAR (20) |
TITLE : VARCHAR (30) |
PUB_ID : INTEGER |
DATE_OF_AGREEMENT : DATE |
AGREEMENT_DURAT : INTERVAL |
DATE_OF_PUB : DATE |
PRICE : MONEY |
NUMBER_OF_PAGES : SMALLINT |
COVER_PICTURE : BLOB |
DESCR : CLOB |
PUBLISHERS |
---|
PUB_ID : INTEGER |
PUB_NAME : VARCHAR (20) |
PUB_ADDRESS : VARCHAR (40) |
Автор уникально идентифицируется своим идентификатором AUTHOR_ID. Уникальным идентификатором книги является ISBN (как выглядит ISBN, можно посмотреть в выходных данных любой книги). Издательство идентифицируется уникальным идентификатором PUB_ID. В таблицах AUTHORS, BOOKS и PUBLISHERS столбцы AUTHOR_ID, ISBN и PUB_ID соответственно являются первичными ключами. В таблице AUTHORS-BOOKS столбцы AUTHOR_ID и ISBN являются внешними ключами, ссылающимися на первичные ключи таблиц AUTHORS и BOOKS соответственно. В таблице BOOKS столбец PUB_ID является внешним ключом, ссылающимся на первичный ключ таблицы PUBLISHERS.
У каждой книги могут быть один или несколько авторов. Допускается, что авторы книги временно неизвестны. В таблице авторов могут содержаться данные только об авторах книг, описываемых в таблице BOOKS. Каждая книга может быть издана только одним издательством, но для некоторых книг издательство может быть временно неизвестно. Столбец DATE_OF_AGREEMENT содержит дату заключения договора на написание книги между автором и издательством. Столбец AGREEMENT_DURAT содержит временной интервал, в течение которого действует договор. Столбец DATE_OF_PUB содержит даты публикации книг.
Также будем использовать таблицы table1 (a1, a2, c1, c2) и table2 (b1, b2, c1, c2) со следующими телами:
table1
a1 | a2 | c1 | c2 |
---|---|---|---|
5 | 5 | 5 | 5 |
5 | 5 | 8 | 6 |
5 | 5 | 3 | 7 |
2 | 3 | NULL | 7 |
4 | NULL | NULL | NULL |
table2
b1 | b2 | c1 | c2 |
---|---|---|---|
5 | 5 | 5 | 5 |
1 | 2 | 5 | 6 |
3 | 8 | 5 | 5 |
3 | 8 | 5 | 5 |
8 | 8 | 8 | 8 |
3 | NULL | NULL | 5 |
3 | NULL | NULL | 5 |
Какая из показанных ниже таблиц является результатом операции table1 LEFT OUTER JOIN table2 ON a2=b1 AND a1<b2
?