Главная / Базы данных /
Введение в модель данных SQL / Тест 2
Введение в модель данных SQL - тест 2
Упражнение 1:
Номер 1
В каких из перечисленных ниже случаях значением столбца по умолчанию является NULL?
Ответ:
 (1) в разделе DEFAULT определения столбца указано NULL 
 (2) в определении столбца отсутствует раздел DEFAULT, но столбец определяется на домене, в определении которого присутствует раздел DEFAULT NULL 
 (3) в определении столбца отсутствует раздел DEFAULT, и столбец определяется на базовом типе данных или на домене, в определении которого отсутствует раздел DEFAULT 
Номер 2
Пусть при определении базовой таблицы указано ограничение UNIQUE (a, b, c), где a, b и c – составляют полный список имен столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Какие из показанных ниже пар строк смогут находиться в теле таблицы?
Ответ:
 (1) <NULL, NULL, 5>, <5, NULL, NULL> 
 (2) <NULL, NULL, NULL>, <5, NULL, NULL> 
 (3) <NULL, NULL, 5>, <NULL, NULL, 5> 
Номер 3
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. При какой спецификации способа соответствия значение внешнего ключа <NULL, 1, 10> соответствует значению первичного ключа <25, 1, 10>?
Ответ:
 (1) SIMPLE 
 (2) FULL 
 (3) PARTIAL 
Упражнение 2:
Номер 1
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия SIMPLE. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s3 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Что произойдет при удалении строки из таблицы T со значением первичного ключа <25, 1, 5>, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET NULL?
Ответ:
 (1) операция удаления строки из таблицы T не выполнится 
 (2) строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL> 
 (3) строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <25, 1, NULL> и <NULL, NULL, NULL> соответственно 
Номер 2
Предположим, что в таблице объявлен возможный ключ, состоящий из n столбцов, для m из которых (m ≤ n) при определении столбца отсутствовала спецификация NOT NULL. В скольких строках таблицы столбцы возможного ключа смогут содержать неопределенные значения?
Ответ:
 (1) m + n 
 (2) m * n 
 (3) 2m – 1 
Номер 3
Предположим, что проекты финансируются отделами. Каждый отдел финансирует не более одного проекта, один проект может финансироваться несколькими отделами, и общая сумма финансирования проекта не должна составлять менее 1000000.00 руб. Выполнение каких из приведенных ниже операторов изменит определения таблиц DEPT и PRO требуемым образом?
Ответ:
 (1)
ALTER TABLE DEPT
ADD DEPT_PRO_INVEST NUMERIC (10, 2)
DEFAULT NULL;
ALTER TABLE DEPT
ADD DEPT_PRO PRO_NO DEFAULT NULL;
REFERENCES PRO ON DELETE SET NULL;
ALTER TABLE DEPT ADD
CONSTRAINT PRO_INVEST_VALUE
CHECK (IF (DEPT_PRO IS NOT NULL) THEN
(SELECT SUM (D.DEPT_PRO_INVEST)
FROM DEPT D
WHERE DEPT_PRO =
D.DEPT_PRO) >= 1000000.00);
 
 (2)
ALTER TABLE DEPT
ADD DEPT_PRO_INVEST NUMERIC (10, 2)
DEFAULT NULL;
ALTER TABLE PRO
ADD PRO_DEPT DEPT_NO NO NULL;
REFERENCES DEPT
ON DELETE CASCADES;
CHECK (SELECT SUM (DEPT_PRO_INVEST)
FROM DEPT
WHERE DEPT_NO =
VALUE) >= 1000000.00);
 
 (3)
ALTER TABLE PRO
ADD PRO_DEPT_INVEST NUMERIC (10, 2)
DEFAULT NULL;
ALTER TABLE PRO
ADD PRO_DEPT DEPT_NO NO NULL;
REFERENCES PRO
ON DELETE CASCADES;
CHECK (SELECT SUM (PRO_DEPT_INVEST)
FROM PRO
WHERE PRO_DEPT =
VALUE) >= 1000000.00);
 
Упражнение 3:
Номер 1
Предположим, что некоторые служащие могут учиться в аспирантуре своего предприятия. Каждый аспирант имеет единственного научного руководителя, являющегося служащим того же предприятия. Требуется, чтобы у одного научного руководителя было не более пяти аспирантов. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?
Ответ:
 (1)
ALTER TABLE EMP
ADD EMP_ADVISER EMP_NO
DEFAULT NULL REFERENCES EMP
ON DELETE SET NULL
CHECK (VALUE < 6);
 
 (2)
ALTER TABLE EMP
ADD EMP_ADVISER EMP_NO NO NULL
REFERENCES EMP ON DELETE CASCADE;
 
 (3)
ALTER TABLE EMP
ADD EMP_ADVISER EMP_NO DEFAULT NULL
REFERENCES EMP ON DELETE SET NULL;
CHECK (IF (VALUE IS NOT NULL) THEN
(SELECT COUNT (*) FROM EMP E
WHERE E.EMP_ADVISER =
VALUE) < 6);
 
Номер 2
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия PARTIAL. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s3 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Пусть в таблице T присутствуют строки t1, t2 со значениями первичного ключа <25, 1, 5> и <25, 2, 5> соответственно. Что произойдет при удалении из таблицы T строки t1, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET NULL?
Ответ:
 (1) операция удаления строки из таблицы T не выполнится 
 (2) строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL> 
 (3) строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <NULL, NULL, NULL> и <NULL, NULL, NULL> соответственно 
Номер 3
Какой из режимов проверки разумно установить для ограничения таблицы PRO_EMP_NO?
Ответ:
 (1) INITIALLY IMMEDIATE NOT DEFERRABLE 
 (2) INITIALLY IMMEDIATE DEFERRABLE 
 (3) INITIALLY DEFERRED 
Упражнение 4:
Номер 1
Предположим, что служащие, участвующие в проектах, могут получать дополнительную премию, равную средней основной заработной плате участников соответствующего проекта. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?
Ответ:
 (1)
ALTER TABLE EMP
ADD EMP_PRO_BONUS SALARY DEFAULT NULL;
ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS
CHECK (IF (EMP_PRO_BONUS IS
NOT NULL) THEN
PRO_NO IS NOT NULL)
ALTER TABLE DEPT ADD
CONSTRAINT MORE_TOTAL_INCOME
CHECK (DEPT_TOTAL_SAL >=
(SELECT SUM(EMP_SAL +
COALESCE(EMP_BONUS,0) +
COALESCE(EMP_PRO_BONUS,0))
FROM EMP
WHERE EMP.DEPT_NO = DEPT_NO));
 
 (2)
ALTER TABLE EMP
ADD EMP_PRO_BONUS SALARY DEFAULT NULL;
ALTER TABLE EMP
DROP CONSTRAINT TOTAL_INCOME;
ALTER TABLE DEPT ADD
CONSTRAINT TOTAL_INCOME
CHECK (DEPT_TOTAL_SAL >=
(SELECT SUM(EMP_SAL +
COALESCE(EMP_BONUS,0) +
COALESCE(EMP_PRO_BONUS,0))
FROM EMP
WHERE EMP.DEPT_NO = DEPT_NO));
 
 (3)
ALTER TABLE EMP
ADD EMP_PRO_BONUS SALARY DEFAULT NULL;
ALTER TABLE EMP ADD
CONSTRAINT PRO_BONUS_VALUE
CHECK (IF (EMP_PRO_BONUS IS
NOT NULL) THEN
EMP_PRO_BONUS =
(SELECT AVG (E.EMP_SAL)
FROM EMP E
WHERE PRO_NO =
E.PRO_NO));
ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS
CHECK (IF (EMP_PRO_BONUS IS
NOT NULL) THEN
PRO_NO IS NOT NULL)
ALTER TABLE DEPT ADD
CONSTRAINT MORE_TOTAL_INCOME
CHECK (DEPT_TOTAL_SAL >=
(SELECT SUM(EMP_SAL +
COALESCE(EMP_BONUS,0) +
COALESCE(EMP_PRO_BONUS,0))
FROM EMP
WHERE EMP.DEPT_NO = DEPT_NO));
 
Номер 2
Какой из режимов проверки разумно установить для ограничения таблицы EMP TOTAL_INCOME?
Ответ:
 (1) INITIALLY IMMEDIATE NOT DEFERRABLE 
 (2) INITIALLY IMMEDIATE DEFERRABLE 
 (3) INITIALLY DEFERRED 
Номер 3
Каким будет значение по умолчанию столбца, определенного без указания собственного значения по умолчанию и без ограничения NOT NULL, после отмены определения домена, на котором данный столбец был определен, если у домена было задано значение по умолчанию?
Ответ:
 (1) NULL 
 (2) у столбца не будет значения по умолчанию 
 (3) останется значение по умолчанию домена 
Упражнение 5:
Номер 1
Какой из режимов проверки разумно установить для ограничения таблицы MIN_EMP_BDATE?
Ответ:
 (1) INITIALLY IMMEDIATE NOT DEFERRABLE 
 (2) INITIALLY IMMEDIATE DEFERRABLE 
 (3) INITIALLY DEFERRED 
Номер 2
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия PARTIAL. Будем считать, что все столбцы целого типа, и для них специфицированы значения по умолчанию 4, 44 и 444 соответственно. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s2 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Что произойдет при удалении строки t из таблицы T со значением первичного ключа <25, 1, 5>, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET DEFAULT и строки s1, s2 и s2 соответствуют исключительно строке t?
Ответ:
 (1) операция удаления строки из таблицы T не выполнится 
 (2) строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s2 таблицы S станет <4, 44, 444> 
 (3) строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s2 таблицы S станут <NULL, NULL, 444>, <4, 44, NULL> и <4, 44, 444> соответственно 
Номер 3
Предположим, что в таблице объявлен возможный ключ со спецификацией MATCH PARTIAL, состоящий из n столбцов, для m из которых (m ≤ n) при определении столбца отсутствовала спецификация NOT NULL. На сколько строк таблицы, на которую ведет ссылка, может ссылаться одна строка ссылающейся таблицы?
Ответ:
 (1) m + n 
 (2) m * n 
 (3) 2m