- •2.) Требования, предъявляемые к бд.
- •3.) Модели данных. Инфологическая модель.
- •4.) Иерархическая модель.
- •7.) Реляционная модель. Достоинства и недостатки
- •11. Основы, принципы и аспекты проектирования.
- •12. Проектирование модели бд в терминах «сущность-связь»
- •13. Проектирование модели бд в терминах «сущность-связь»
- •Понятие нормализации данных. Функциональная зависимость
- •Первая, вторая и третья нормальные формы.
- •Нф Бойса-Кодда, четвертая и пятая нормальные формы.
- •Понятие субд. Классификация субд.
- •Типовая организация современной субд.
- •Основные функции субд.
- •Языки запросов, их основные возможности.
- •Основные объекты субд «Oracle».
- •5.3.1. Символьные типы
- •Перечень символьных типов
- •Создание запросов. Основные типы условий поиска.
- •2.4.4.1. Создание запроса на выборку с помощью Мастера
- •27. Агрегирование и группировка данных
- •28.Манипулирование данными отношений
- •Базовые средства манипулирования данными
- •29. Понятие подзапроса.
- •Использование встроенных процедур и функций. Функции работы с символами, строками и датами.
- •Initcap(строка)
- •31. Использование встроенных процедур и функций. Функции работы с числами. Функции преобразования типов данных.
- •32. Создание пользовательских процедур.
- •33. Создание пользовательских функций.
- •35. Работа с курсорами
- •36. Соединение таблиц и запросов при организации запросов
- •37. Целостность баз данных.
- •38. Работа с триггерами.
- •39. Понятие транзакции. Свойства транзакций.
- •40. Взаимовлияние транзакций
- •41. Блокировки и тупиковые ситуации
- •42. Индексирование. Виды индексов
- •43. Работа с индексами
- •44. Оптимизация запросов в реляционных субд
- •45. Методы оптимизации запросов
- •46. Методы доступа к базе данных. Технологии odbc, bde.
- •47. Методы доступа к базе данных. Технологии ado, ole db
- •48. Модели организации данных.
35. Работа с курсорами
Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.
Обычно курсоры используются для выбора из базы данных некоторого подмножества хранимой в ней информации. В каждый момент времени прикладной программой может быть проверена одна строка курсора. Курсоры часто применяются в операторах SQL, встроенных в написанные на языках процедурного типа прикладные программы. Некоторые из них неявно создаются сервером базы данных, в то время как другие определяются программистами.
В соответствии со стандартом SQL при работе с курсорами можно выделить следующие основные действия:
создание или объявление курсора;
открытие курсора , т.е. наполнение его данными, которые сохраняются в многоуровневой памяти;
выборка из курсора и изменение с его помощью строк данных;
закрытие курсора, после чего он становится недоступным для пользовательских программ;
освобождение курсора, т.е. удаление курсора как объекта, поскольку его закрытие необязательно освобождает ассоциированную с ним память.
Объявление курсора
<создание_курсора>::=
DECLARE имя_курсора
[INSENSITIVE][SCROLL] CURSOR
FOR SELECT_оператор
[FOR { READ_ONLY | UPDATE
[OF имя_столбца[,...n]]}]
36. Соединение таблиц и запросов при организации запросов
В некоторых СУБД можно, но, как и все нестандартные конструкции, это плохо влияет на переносимость запроса. Все же приведем вариант записи внешнего соединения таблиц, используя синтаксис СУБД Oracle (на примере того же самого запроса - код, фамилия и средний балл студента).
SELECT st.codst, st.name st, AVG (m/mark) avg mark FROM students st, marks m WHERE st.cod_st=m.cod_st (+) GROUP BY st.cod st. st.name st
Используемая здесь синтаксическая конструкция (+) добавляет фиктивные строки в таблицу marks для тех студентов, у которых нет оценок, при этом в столбец mark помещается значение NULL.
Рассмотрим некоторые особенности использования функции COUNT в запросах с внешим соединением таблиц. Пусть требуется вывести количество оценок для каждого студента из таблицы students. Если студент еще не имеет ни одной оценки, должно быть выведено количество 0. Текст запроса, использующий операцию LEFT JOIN: SELECT st.cod st, st.name st, COUNT(m.mark) count mark FROM students st LEFT JOIN marks m ON st.cod_st=m.cod_st GROUP BY st.cod st. st.name st
Использование конструкции COUNT(mmark) позволит получить правильные результаты и вывести значение О для студентов, не имеющих оценок. Однако, если использовать в этом же запросе COUNT(*), то для студентов, не имеющих оценок, будет выведено количество 1 (!) и их нельзя будет отличить от студентов, которые имеют одну оценку.
37. Целостность баз данных.
Це́лостность ба́зы да́нных (database integrity) — соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности (integrity constraint). Примеры правил: вес детали должен быть положительным; количество знаков в телефонном номере не должно превышать 25; возраст родителей не может быть меньше возраста их биологического ребёнка и т.д.
Задача аналитика и проектировщика базы данных — возможно более полно выявить все имеющиеся ограничения целостности и задать их в базе данных.
Целостность БД не гарантирует достоверности содержащейся в ней информации, но обеспечивает по крайней мере правдоподобность этой информации, отвергая заведомо невероятные, невозможные значения. Таким образом, не следует путать целостность БД с достоверностью БД. Достоверность (или истинность) есть соответствие фактов, хранящихся в базе данных, реальному миру. Очевидно, что для определения достоверности БД требуется обладание полными знаниями как о содержимом БД, так и о реальном мире. Для определения целостности БД требуется лишь обладание знаниями о содержимом БД и о заданных для неё правилах. Поэтому СУБД может (и должна) контролировать целостность БД, но принципиально не в состоянии контролировать достоверность БД. Контроль достоверности БД может быть возложен только на человека, да и то в ограниченных масштабах, поскольку в ряде случаев люди тоже не обладают полнотой знаний о реальном мире.
