игра брюс 2048
Главная / Базы данных / Введение в модель данных SQL / Тест 8

Введение в модель данных SQL - тест 8

Упражнение 1:
Номер 1

Пусть роль R1 создается путем выполнения операции

CREATE ROLE R1 WITH ADMIN CURRENT_ROLE;

и текущим именем роли сессии, в которой выполняется эта операция, является R. При каких из указанных ниже условий будет успешно выполнена операция?

GRANT R1 TO PUBLIC;

Ответ:

 (1) текущим именем роли сессии, в которой выполняется эта операция, является R 

 (2) операция выполняется в тот момент, когда идентификатором авторизации является R 

 (3) операция выполняется от имени идентификатора авторизации, которому была передана роль R с правом ее дальнейшей передачи 


Номер 2
Отсутствие каких привилегий должно проверяться для гарантии того, что от имени текущего authID нельзя выполнить операцию SELECT * FROM T?

Ответ:

 (1) отсутствие привилегии SELECT для таблицы T у текущего authID 

 (2) отсутствие привилегии SELECT для таблицы T у текущего authID и всех переданных ему ролей 

 (3) отсутствие привилегии SELECT для таблицы T у текущего authID, у всех переданных ему ролей, у всех ролей, переданных этим ролям, и т.д. 


Номер 3
Пусть одновременно выполняются три транзакции: 
T1 = (ST1(c), SPT1(spn1), IT1(c), DT1(c), ST1(c), RBT1(spn1), COMMITT1), 
T2 = (ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), COMMITT2), 
T3 = (ST3(c), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?

Ответ:

 (1) ST1(c), ST2(c), ST3(c), SPT1(spn1), IT1(c), DT1(c), ST1(c), RBT1(spn1), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), COMMITT1, COMMITT2, COMMITT3 

 (2) ST3(c), COMMITT3, SPT1(spn1), IT1(c), DT1(c), ST2(c), SPT2(spn2), UT2(c), ST1(c), RBT1(spn1), COMMITT1, ST2(c), RBT2(spn2), COMMITT2 

 (3) ST1(c), SPT1(spn1), IT1(c), DT1(c), ST1(c), RBT1(spn1), ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), ST3(c), COMMITT3, COMMITT1, COMMITT2 


Упражнение 2:
Номер 1

Пусть пользователь с текущим именем роли role1 от имени authID, равного текущему идентификатору пользователя userID, создает объект o, становится его владельцем и, тем самым, обладателем привилегии pr по отношению к этому объекту. Далее, от имени этого authID привилегия pr передается роли role1, а сама роль – роли role2. После этого роль role2 передается userID. Какая из перечисленных ситуаций сложется после выполнения операции?

REVOKE PR ON o FROM role1 CASCADE;

Ответ:

 (1) привилегия pr аннулируется у role1, role2 и userID 

 (2) привилегия pr аннулируется у role1 и role2 

 (3) привилегия pr аннулируется у role1 и role2, role2 лишится права исполнять role1, а userID лишится права исполнять роль role2 


Номер 2
Какими минимальными привилегиями должен обладать текущий authID, чтобы от его имени можно было создать некоторое представление V и впоследствии передать ALL PRIVILEGES для V некоторому другому authID?

Ответ:

 (1) всеми привилегиями для всех базовых таблиц и представлений, над которыми определено представление V, включая привилегии на передачу всех привилегий 

 (2) привилегиями SELECT для всех базовых таблиц и представлений, над которыми определено представление V 

 (3) привилегиями SELECT для всех базовых таблиц и представлений, над которыми определено представление V, включая привилегии на передачу этих привилегий 


Номер 3
Пусть одновременно выполняются три транзакции: T1 = (ST1(c), SPT1(spn1), IT1(c), RBT1(spn1), DT1(c), ST1(c), RBT1(spn1), DT1(c), COMMITT1), T2 = (ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), ST2(c), COMMITT2), T1 = (ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?

Ответ:

 (1) ST1(c), SPT1(spn1), IT1(c), RBT1(spn1), ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), DT1(c), ST1(c), RBT1(spn1), ST2(c), COMMITT2, DT1(c), COMMITT1, COMMITT3 

 (2) ST1(c), SPT1(spn1), IT1(c), ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), RBT1(spn1), DT1(c), ST1(c), RBT1(spn1), DT1(c), COMMITT1, ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), COMMITT3, ST2(c), COMMITT2 

 (3) ST1(c), SPT1(spn1), ST2(c), SPT2(spn2), ST3(c), SPT3(spn3), IT1(c), RBT1(spn1), UT2(c), ST2(c), RBT2(spn2), UT3(c), RBT3(spn3), DT1(c), ST1(c), RBT1(spn1), ST2(c), COMMITT2, COMMITT3, DT1(c), COMMITT1 


Упражнение 3:
Номер 1

Пусть в некоторой транзакции выполняются операции

CREATE ROLE R1 WITH ADMIN CURRENT_ROLE; GRANT R1 TO AUDIT WITH ADMIN OPTION GRANTED BY CURRENT_ROLE;

и текущим именем роли сессии, в которой выполняется эта операция, является R. При каких из указанных ниже условий будет успешно выполнена операция?

DROP ROLE R1;

Ответ:

 (1) текущим именем роли сессии, в которой выполняется эта операция, является R 

 (2) операция выполняется в тот момент, когда идентификатором авторизации является R1 

 (3) операция выполняется в тот момент, когда идентификатором авторизации является R 


Номер 2
Пусть транзакция T выполняется на уровне изоляции REPEATABLE READ. После выполнения какого из перечисленных ниже операторов выборки в транзакции T может проявиться эффект фантомов?

Ответ:

 (1) "SELECT * FROM EMP WHERE EMP_NO = 4441;" и результат операции не пуст 

 (2) "SELECT * FROM EMP WHERE EMP_NO = 4441;" и результат операции пуст 

 (3) "SELECT * FROM EMP WHERE EMP_NO = 4441 OR DEPT_NO = 632;" 


Номер 3
Пусть одновременно выполняются три транзакции: T1 = (IT1(c), ST1(c), DT1(c), COMMITT1), T2 = (ST2(c), UT2(c), ST2(c), COMMITT2), T3 = (ST3(c), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?

Ответ:

 (1) ST3(c), ST2(c), COMMITT3, UT2(c), ST2(c), COMMITT2, IT1(c), ST1(c), DT1(c), COMMITT1 

 (2) IT1(c), ST1(c), DT1(c), COMMITT1, ST2(c), ST3(c), COMMITT3, UT2(c), ST2(c), COMMITT2 

 (3) IT1(c), ST1(c), ST3(c), ST2(c), COMMITT3, UT2(c), ST2(c), COMMITT2, DT1(c), COMMITT1 


Упражнение 4:
Номер 1

Пусть в некоторой транзакции выполняются операции

CREATE ROLE R1 WITH ADMIN CURRENT_ROLE; GRANT R1 TO R2 WITH ADMIN OPTION GRANTED BY CURRENT_ROLE;

где R2 – имя некоторой существующей роли, и текущим именем роли сессии, в которой выполняется эта операция, является R. Пусть затем в некоторой другой транзакции, текущим именем роль которой является R2, выполняется операция

GRANT R1 TO R3 WITH ADMIN OPTION GRANTED BY CURRENT_ROLE;

где R3 – имя некоторой существующей роли. При каких из перечисленных ниже условий будет успешно выполнена операция?

REVOKE R1 FROM R3;

Ответ:

 (1) именем текущей роли является R 

 (2) именем текущей роли является R2 

 (3) операция выполняется от имени authID, являющимся именем роли R или R2 


Номер 2

Пусть пользователь с текущим идентификатором пользователя userID1 от имени authID1, равного текущему имени роли role1, создает объект o, становится его владельцем и, тем самым, обладателем привилегии pr по отношению к этому объекту. Далее, от имени этого authID1 привилегия pr передается идентификатору пользователя userID1. Потом authID1 изменяется на userID1, и от его имени право на исполнение роли role1 передается роли с именем role2, являющемуся authID2 в некоторой сессии, текущим идентификатором пользователя которой является userID2. Наконец, от имени того же authID2 привилегия pr передается userID2. Что теперь произойдет, если от имени authID1 будет задана операция?

REVOKE PR ON o FROM userID2 CASCADE;

Ответ:

 (1) userID2 лишится привилегии pr, но она останется у role1, role2 и userID1 

 (2) операция будет отвергнута 

 (3) привилегия pr сохранится только у role1 


Номер 3
Пусть одновременно выполняются три транзакции: T1 = (ST1(c), SPT1(spn1), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST1(c), RBT1(spn1), DT1(c), COMMITT1), T2 = (ST2(c), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), ST2(c), COMMITT2), T3 = (ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), DT3(c), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?

Ответ:

 (1) ST1(c), SPT1(spn1), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST1(c), RBT1(spn1), ST2(c), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), ST2(c), COMMITT2, DT3(c), COMMITT3, DT1(c), COMMITT1 

 (2) ST1(c), ST2(c), ST3(c), SPT3(spn3), SPT1(spn1), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST1(c), RBT1(spn1), UT3(c), RBT3(spn3), DT3(c), COMMITT3, DT1(c), COMMITT1, ST2(c), COMMITT2 

 (3) ST1(c), SPT1(spn1), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST2(c), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), ST1(c), RBT1(spn1), DT1(c), COMMITT1, ST2(c), COMMITT2, DT3(c), COMMITT3 


Упражнение 5:
Номер 1
Что произойдет, если производится попытка передачи нескольких привилегий с передачей привилегии на передачу привилегий, но текущий authID обладает привилегией на передачу только части этих привилегий? 

Ответ:

 (1) будет зафиксирована ошибка 

 (2) будет передана только возможная часть привилегий без привилегии WITH GRANT OPTION 

 (3) будет выработано предупреждение, и соответствующая часть привилегий передастся с привилегией WITH GRANT OPTION 


Номер 2

Пусть пользователь с текущим именем роли role от имени authID1, равного текущему идентификатору пользователя userID1, создает объект o, становится его владельцем и, тем самым, обладателем привилегии pr по отношению к этому объекту. Далее, от имени этого authID1 привилегия pr передается роли role, а сама роль – текущему идентификатору пользователя userID2. После этого от имени роли role привилегия pr передается userID2. Какая из перечисленных ситуаций сложется после выполнения операции?

REVOKE role FROM userID2 CASCADE;

Ответ:

 (1) у userID2 не будет ни привилегии pr, ни роли role 

 (2) у userID2 останется привилегия pr, но не будет роли role 

 (3) привилегия pr аннулируется у userID2 и role 


Номер 3
При каких уровнях изоляции транзакции в ней не допускается чтение объекта базы данных, изменявшегося еще не завершенной транзакцией?

Ответ:

 (1) READ COMMITTED 

 (2) REPEATABLE READ 

 (3) READ COMMITTED, REPEATABLE READ и SERIALIZABLE 




Главная / Базы данных / Введение в модель данных SQL / Тест 8