
- •Контрольные вопросы для проведения экзамена по дисциплине «Базы данных»
- •1. Понятие информации и данных. Экономические показатели. Опреде-ление и структура показателя.
- •2. Структурирование данных. Классификация данных по степени структурированности.
- •3. Приведите следующие определения: предметная область, структурирование, база данных, субд, банк данных, целостность бд, транзакция.
- •4. Функции субд.
- •5. Классификация субд и бд.
- •6. Этапы развития бд.
- •7. Перспективы развития субд и бд.
- •8. Понятие модели данных. Охарактеризуйте иерархическую модель данных. Недостатки иерархической модели.
- •9. Понятие модели данных. Сетевые модели бд: особенности, преимущества, недостатки.
- •10. Реляционные модели данных: особенности, преимущества, недостатки.
- •11. Постреляционные модели данных: особенности, преимущества, недостатки.
- •12. Охарактеризуйте объектно-ориентированную модель данных (оомд). Достоинства и недостатки оомд.
- •13. Многомерные модели данных: особенности, преимущества, недостатки.
- •14. Основные понятия реляционной модели данных: реляционная база данных, отношение, схема отношения, сущность, атрибут, домен, кортеж, первичный ключ.
- •15. Реляционные модели. Понятие и свойства отношений.
- •16. Проектирование реляционных бд на основе принципов нормализации. Цель нормализации. Нормальные формы отношений.
- •17. Понятие ключа отношения. Необходимость задания ключей. Виды ключей. Свойства ключа.
- •18. Реляционная алгебра как формальная система манипулирования отношениями в реляционной модели данных. Свойство замкнутости. Краткий обзор операций реляционной алгебры.
- •19. Унарные операции реляционной алгебры: описание, примеры.
- •20. Бинарные операции реляционной алгебры: описание, примеры.
- •21. Этапы проектирования баз данных. Состав работ, выполняемых на стадии инфологического проектирования. Технологическая сеть проектирования.
- •24. Нотации er-моделирования: понятие, виды, отличительные особен-ности, примеры отображения элементов в различных нотациях.
- •25. Цель нормализации. Нормальные формы er-схем.
- •26. Алгоритм преобразования er-модели в схему реляционной бд.
- •27. Case-средства проектирования бд: назначение, базовые функцио-нальные возможности, примеры современных case-средств.
- •Тема 5. Проектирование баз данных – логическое и физическое моделирование
- •28. Состав работ, выполняемых на стадии логического проектирования бд.
- •30. Ограничения целостности: понятие и классификация.
- •31. Понятие ссылочной целостности (целостности связи). Стратегии поддержания ссылочной целостности.
- •32. Языки запросов: понятие, классификация.
- •34. Язык sql. Общая характеристика, стандарты, подмножества языка sql.
- •35. Основные типы данных (на примере конкретной(ых) субд).
- •36. Какие команды относятся к категории ddl? Опишите общий вид синтаксиса команд ddl, приведите пример(ы) каждой команды.
- •37. Задание ограничений целостности на языке sql. Примеры.
- •38. Какие команды относятся к категории dml? Опишите способы добавления строк в таблицу (общий вид синтаксиса команд добавления строк в таблицу, примеры).
- •39. Команда изменения данных таблицы: общий вид синтаксиса, примеры.
- •40. Команда удаления строк из таблицы: общий вид синтаксиса, примеры.
- •41. Команда изменения структуры таблицы: общий вид синтаксиса, примеры.
- •48. Вложенные запросы в sql: типы, примеры по каждому из типов.
- •49. Создание и использование представлений в sql. Примеры.
- •50. Оператор case: синтаксические формы записи, примеры использова-ния.
- •51. Курсоры: понятие курсора, общий синтаксис, пример использования.
- •52. Понятие и классификация экранных форм.
- •53. Понятие и классификация отчётов.
- •Тема 12. Безопасность данных
- •Тема 13. Распределённые базы данных
48. Вложенные запросы в sql: типы, примеры по каждому из типов.
Вложенным запросом называется запрос, помещаемый в инструкцию SELECT, INSERT, UPDATE или DELETE или в другой вложенный запрос. Подзапрос может быть использован везде, где разрешены выражения.
Виды запросов:
Поисковые
Корректирующие
включение новой записи (INSERT),
обновление отдельных полей (UPDATE),
удаление записи или группы записей (DELETE).
Поисковый запрос:
SELECT * FROM kadr
WHERE vozr = 40 AND pol = «м»;
INSERT:
insert into depart
values(7, 'Договорной отдел');
UPDATE:
update job
set rel = 'консультант'
where tabno = 74 and pro = 30;
DELETE:
delete from job
where tabno=147;
49. Создание и использование представлений в sql. Примеры.
Представление (view, обзор) – это хранимый запрос,
создаваемый на основе команды SELECT. Представление
реально не содержит данных. Запрос, определяющий
представление, выполняется тогда, когда к
представлению происходит обращение с другим
запросом, например, SELECT, UPDATE и т.д.
Назначение представлений:
-Хранение сложных запросов.
-Представление данных в виде, удобном пользователю.
-Сокрытие конфиденциальной информации.
-Предоставление дифференцированного
Создание представления выполняется командой CREATE VIEW:
CREATE [ OR REPLACE ] VIEW <имя представления> [ (<список имён столбцов>) ]
AS <запрос> [ WITH CHECK OPTION ];
Запрос (команда SELECT), на основании которого создаётся представление, называется определяющим запросом, а таблицы, к которым происходит обращение в определяющем запросе – базовыми таблицами. Определяющий запрос по стандарту SQL не может включать предложение ORDER BY.
Создать представление "Сотрудники с детьми" (для удобного представления данных о детях сотрудников):
CREATE VIEW emp_child(depno, name, child, sex, born)
AS SELECT e.depno, e.name, c.name, c.sex, c.born
FROM emp e, children c
WHERE e.tabno = c.tabno;
Представление может быть обновляемым и не обновляемым. Обновляемым является представление, при обращении к которому можно обновить базовую таблицу.
Пример обновления базовой таблицы emp через представление emp2:
UPDATE emp2
SET salary = 48000
WHERE tabno = '100';
Изменения будут произведены в базовой таблице и отразятся в представлении.
Вносимые изменения могут выйти за рамки определяющего запроса и поэтому не будут видны через представление. Если необходимо защитить данные от такого вмешательства, то нужно в команде создания представления указать ключевые слова WITH CHECK OPTION: тогда система отвергнет изменения, выходящие за рамки определяющего запроса.
По стандарту SQL-2 представление не является обновляемым, если определяющий запрос:
-содержит ключевое слово DISTINCT;
-содержит множественные операции (UNION и др.);
-содержит предложение GROUP BY;
-ссылается на другое необновляемое представление;
-содержит вычисляемые выражения в списке выбора;
50. Оператор case: синтаксические формы записи, примеры использова-ния.
Оператор CASE может быть использован в одной из двух синтаксических форм записи:
1-я форма:
CASE <проверяемое выражение>
WHEN <сравниваемое выражение 1> THEN <возвращаемое значение 1>
…
WHEN <сравниваемое выражение N> THEN <возвращаемое значение N>
[ELSE <возвращаемое значение>]
END
2-я форма:
CASE
WHEN <предикат 1> THEN <возвращаемое значение 1>
…
WHEN <предикат N> THEN <возвращаемое значение N>
[ELSE <возвращаемое значение>]
END
Особенности использования CASE:
-Все предложения WHEN должны иметь одинаковую синтаксическую форму, то есть нельзя смешивать первую и вторую формы.
-При использовании первой синтаксической формы условие WHEN удовлетворяется, как только значение проверяемого выражения станет равным значению выражения, указанного в предложении WHEN.
-При использовании второй синтаксической формы условие WHEN удовлетворяется, как только предикат принимает значение TRUE.
-При удовлетворении условия оператор CASE возвращает значение, указанное в соответствующем предложении THEN.
-Если ни одно из условий WHEN не выполнилось, то будет использовано значение, указанное в предложении ELSE.
-При отсутствии ELSE, будет возвращено NULL-значение.
-Если удовлетворены несколько условий, то будет возвращено значение предложения THEN первого из них, так как остальные просто не будут проверяться.
Примеры использования оператора CASE
1) Посчитать количество студентов дневной и вечерней формы обучения:
CREATE VIEW students_number (DEPARTMENT, YEAR,
DAY_FORM, EVENING_FORM) AS
SELECT gr.department, gr.year,
count(CASE WHEN gr.study='ДНЕВНАЯ' THEN 1 ELSE null END)
form1
count(CASE WHEN gr.study='ВЕЧЕРНЯЯ' THEN 1 ELSE null END)
form2
FROM groups gr, students st
WHERE gr.group_code = st.group_code
GROUP BY gr.department, gr.year, gr.study
ORDER BY gr.department, gr.year ASC;