Автор работы: Пользователь скрыл имя, 01 Ноября 2011 в 18:09, курсовая работа
Цель работы – исследование функциональных возможностей систем управления базами данных с помощью языка SQL.
ВВЕДЕНИЕ 6
1. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ. 7
1.1. Понятие и назначение БД и СУБД. 7
1.2. Реляционные базы данных. 11
2. ЯЗЫК SQL КАК СТАНДАРТНЫЙ ЯЗЫК РЕЛЯЦИОННЫХ БАЗ ДАННЫХ. 17
2.1 Язык SQL 17
2.2. Типы данных 19
3. ФОРМЫ И СВОЙСТВА ЯЗЫКА SQL. 32
1.1. Формы языка SQL. 32
1.2. Запросы и операторы манипулирования данными 33
1.3. Операторы определения и манипулирования схемой БД 35
1.4. Определения ограничений целостности и триггеров 35
1.5. Представления базы данных 37
1.6. Определение управляющих структур 38
1.7. Авторизация доступа к отношениям и их полям 39
1.8. Точки сохранения и откаты транзакции 40
1.9. Встроенный SQL 40
1.10. Динамический SQL 41
4. АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ В ОБЛАСТИ ПРЕДМЕТА ФИНАНСЫ И КРЕДИТ 44
4.1. Составить блок-схему и написать программу на языке Pascal. 44
4.2. Контрольный пример. 44
4.3. Блок-схема алгоритма решения задачи: 45
4.4. Текст программы на языке Pascal. 45
4.5. Результат выполнения программы на контрольном примере. 47
ЗАКЛЮЧЕНИЕ 49
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 51
Литералы
типов целых чисел
Точные типы, допускающие наличие дробной части
Литералы типов точных чисел, допускающих наличие дробной части, представляются в виде строк символов, изображающих десятичные числа, в начале которых могут присутствовать символы «+» или «-», а внутри последовательности цифр может присутствовать символ «.». Примеры литералов типов NUMERIC и DECIMAL: 125, 26.36.
Приближенные числа представляются в виде пары <мантисса, порядок>, где мантисса состоит из значащих цифр числа, а порядок определяет реальный размер числа. В реализациях приближенным числовым типам SQL обычно соответствуют типы с плавающей точкой. В SQL поддерживаются три варианта приближенных числовых типов.
В SQL определены три параметризуемых типа символьных строк:
Литералы типов символьных строк представляются в виде последовательностей символов, заключенных в одинарные или двойные кавычки. В первом случае среди набора символов литерала допускается наличие символов двойной кавычки, а во втором – символов одинарной кавычки. Примеры литералов символьных строк: ’ABCDEF’, ’Ab"Ctd’, "Fbcdef", "ab’cdtF".
Литералы типов битовых строк представляются как заключенные в одинарные кавычки последовательности символов «0» и «1», предваряемые символом «B»; или предваряемые символом «X» последовательности символов, которые изображают шестнадцатеричные цифры (за цифрой «9» следуют «A», «B», «C», «D», «E» и «F»). Примеры литералов типов битовых строк: B’0111001111000111111111’, X’78FBCD0012FFFFA’.
Возможность сохранения в базе данных информации о дате и времени очень важна с практической точки зрения. Достаточно вспомнить взбудоражившую весь мир «проблему 2000 года», одним из основных источников которой было некорректное хранение дат в базах данных. В стандарте SQL поддержке средств работы с датой и временем уделяется большое внимание. В частности, поддерживаются специальные «темпоральные» типы данных DATE, TIME, TIMESTAMP, TIME WITH TIME ZONE и TIMESTAMP WITH TIME ZONE. Тип даты
Литералы типа DATE представляются в виде строки «’yyyy-mm-dd’», где символы y, m и d должны изображать десятичные числа. Например, литерал DATE ’1949-04-08’ представляет дату 8 апреля 1949 г. Типы времени
Литералы типа TIME представляются в виде строки TIME ’hh:mm-ss:f...f’, где символы h, m, s и f должны изображать десятичные числа. Например, литерал TIME ’16:33-20:333’ представляет время суток 16 часов 33 минуты 20 и 333 тысячных секунды. Типы временной метки
Типы времени и временной метки с временной зоной
Временным интервалом называется разность между двумя значениями даты или времени. В SQL определены две категории типов временных интервалов: «год-месяц» и «день-время суток». Временные интервалы языка SQL не привязываются к начальному и/или конечному значению даты/времени, а описывают только протяженность во времени. В общем случае при определении столбца типа временного интервала указывается INTERVAL start (p) [ TO end (q) ], где в качестве «start» и «end» могут задаваться YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Параметр p задает требуемую точность лидирующего поля интервала (число десятичных цифр). Параметр q может задаваться только в том случае, когда в качестве end используется SECOND, и указывает точность долей секунды. Возможны следующие вариации типов временных интервалов.
INTERVAL DAY (p), INTERVAL DAY, INTERVAL DAY (p) TO HOUR, INTERVAL DAY TO HOUR, INTERVAL DAY (p) TO MINUTE, INTERVAL DAY TO MINUTE, INTERVAL DAY (p) TO SECOND (q), INTERVAL DAY TO SECOND (q), INTERVAL DAY (p) TO SECOND, INTERVAL DAY TO SECOND, INTERVAL HOUR (p), INTERVAL HOUR, INTERVAL HOUR (p) TO MINUTE, INTERVAL HOUR TO MINUTE, INTERVAL HOUR (p) TO SECOND (q), INTERVAL HOUR TO SECOND (q), INTERVAL HOUR TO SECOND, INTERVAL MINUTE (p), INTERVAL MINUTE, INTERVAL MINUTE (p) TO SECOND (q), INTERVAL MINUTE TO SECOND (q), INTERVAL MINUTE (p) TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL SECOND (p, q),INTERVAL SECOND (p), INTERVAL SECOND. Если значение параметра p не указывается явно, по умолчанию также принимается его значение «2». Значением параметра q по умолчанию является «6». Пример литерала одной из разновидностей типа INTERVAL: INTERVAL ’10:20’ MINUTE TO SECOND – временной интервал в 10 минут и 20 секунд.
|
ФОРМЫ И ОСНОВНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА SQL.
SQL
— это язык, ориентированный специально
на реляционные базы данных. Существует
две формы SQL: Интерактивный и
Вложенный. В основном обе
Интерактивный
SQL используется для функционирования
непосредственно в базе данных, чтобы
производить вывод для
Вложенный SQL состоит из команд SQL, помещенных внутри программ, которые обычно написаны на некотором другом языке. Это делает эти программы более мощными и эффективным. Однако, допуская эти языки, приходится иметь дело с структурой SQL и стилем управления данных который требует некоторых расширений к интерактивному SQL. Передача SQL команд во вложенный SQL является выдаваемой ("passed off") для переменных или параметров используемых программой в которую они были вложены.
И в интерактивной, и во вложенной формах SQL, имеются многочисленные части, или субподразделения.
DDL (Язык Определения Данных) —Язык Описания Схемы в ANSI, состоит из команд, которые создают объекты (таблицы, индексы, просмотры, и так далее) в базе данных.
DML (Язык Манипулирования Данными) — это набор команд, которые определяют, какие значения представлены в таблицах в любой момент времени.
DCD (Язык Управления Данными) состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет.
Они являются составными частями DDL в ANSI. Это не различные языки, а разделы команд SQL сгруппированных по их функциям.[4]
Исходное
название языка SEQUEL только частично отражает
суть этого языка. Язык был ориентирован
главным образом на удобную и
понятную пользователям формулировку
запросов к реляционной БД, но на
самом деле уже являлся полным
языком БД, содержащим помимо операторов
формулирования запросов и манипулирования
БД средства определения и манипулирования
схемой БД; определения ограничений
целостности и триггеров; представлений
БД; возможности определения
Двумя фундаментальными языками запросов к реляционным БД являются языки реляционной алгебры и реляционного исчисления. При всей своей строгости и теоретической обоснованности эти языки редко используются в современных реляционных СУБД в качестве средств пользовательского интерфейса. SQL представляет собой некоторую комбинацию реляционного исчисления кортежей и реляционной алгебры, причем до сих пор нет общего согласия, к какому из классических языков он ближе. При этом возможности SQL шире, чем у этих базовых реляционных языков, в частности, в общем случае невозможна трансляция запроса, сформулированного на SQL, в выражение реляционной алгебры, требуется некоторое ее расширение.
Существенными
свойствами подъязыка запросов SQL являются
возможность простого формулирования
запросов с соединениями нескольких
отношений и использование
Существенной
особенностью SQL является возможность
указания в запросе потребности
группирования отношения-
Еще
одним отличием SQL является необязательное
удаление кортежей-дубликатов в окончательном
или промежуточных отношениях-
Самый
общий вид запроса на языке SQL
представляет теоретико-множественное
алгебраическое выражение, составленное
из элементарных запросов. В SQL System R допускались
все базовые теретико-
Работа с неопределенными значениями в SQL System R до конца продумана не была, хотя неявно предполагалось использование трехзначной логики при вычислении логических выражений.
Операторы манипулирования данными UPDATE и DELETE построены на тех же принципах, что и оператор выборки данных SELECT. Набор кортежей указанного отношения, подлежащих модификации или удалению, определяется входящим в соответствующий оператор логическим выражением, которое может включать сложные предикаты, в том числе и с вложенными подзапросами.
В
операторе вставки кортежа(ей) в
указанное отношение заносимый
кортеж может задаваться как в
литеральной форме, так и с
помощью внутреннего
В
число операторов определения схемы
БД SQL System R входили операторы создания
и уничтожения постоянных и временных
хранимых отношений (CREATE TABLE и DROP TABLE) и
создания и уничтожения представляемых
отношений (CREATE VIEW и DROP VIEW). В языке
и в реализации System R не запрещалось
использовать операторы определения
схемы в пределах транзакции, содержащей
операторы выборки и
Оператор манипулирования схемой БД ALTER TABLE позволял добавлять указываемые поля к существующим отношениям. В описании языка определялось, что выполнение этого оператора не должно приводить к недействительности ранее откомпилированных операторов над отношением, схема которого изменяется, и что значения вновь определенных полей в существующих кортежах отношения становятся неопределенными.
Язык SQL System R включал очень мощные средства контроля и поддержания целостности БД. Средства контроля базировались на аппарате ограничений целостности (ASSERTIONS). Фактически, ограничение целостности - это логическое выражение, вычисляемое над текущим состоянием БД, ложность которого соответствует нецелостному состоянию БД. Логическое выражение ограничения целостности могло содержать любой допустимый в языке предикат.
Ограничения
целостности делились на два класса:
проверяемые после выполнения оператора
манипулирования данными и
Очень
важным механизмом, определенным в
языке SQL System R, является механизм триггеров.
В контексте System R этот механизм рассматривался
главным образом как средство
автоматического поддержания
Механизмы
ограничений целостности и
В
языке допускалось
В
языке отсутствуют какие-либо ограничения
по поводу использования представлений:
в любом операторе SQL, в котором
допускается использование
Внесение в реляционный язык, каким является SQL, явных операторов порождения и уничтожения структур физического уровня, поддерживающих эффективное выполнение запросов к БД, явилось в SQL System R чисто прагматическим решением, обеспечивающим возможность всех видов работ с БД с помощью одного языка.
В
SQL System R упоминаются два вида таких
структур: индексы и связи (links). Индекс
- это инвертированный файл, обеспечивающий
доступ к кортежам соответствующего
отношения на основе заданных значений
одного или нескольких столбцов, составляющих
ключ индекса. Операторы языка позволяли
создавать и уничтожать индексы,
но никаким образом не давали возможности
явно указать на необходимость использования
существующего индекса при
С
помощью оператора определения
индекса можно было выразить два
дополнительных утверждения, касающихся
логической схемы отношения и
физической структуры его хранения.
Использование при определении
индекса ключевого слова UNIQUE означало,
что ключ этого индекса является
возможным ключом соответствующего
отношения. Фактически это означает
наличие дополнительного
Операторы
определения связи позволяли
в стиле сетевой модели данных
организовать во внешней памяти списки
кортежей указанного отношения. Как
и в случае индексов, операторы
позволяли создавать и
Существенной особенностью языка SQL, появившейся в нем с самого начала, является обеспечение защиты доступа к данным средствами самого языка. Основная идея такого подхода состоит в том, что по отношению к любому отношению БД и любому столбцу отношения вводится предопределенный набор привилегий. С каждой транзакцией неявно связывается идентификатор пользователя, от имени которого она выполняется.
После
создания нового отношения все привилегии,
связанные с этим отношением и
всеми его столбцами, принадлежат
только пользователю-создателю
Долгое время подход к защите данных от несанкционированного доступа принимался практически без критики, однако в связи с распространяющимся использованием реляционных СУБД в нетрадиционных приложениях все чаще раздается критика. Если, например, в системе БД должна поддерживаться многоуровневая защита данных, соответствующую систему полномочий весьма трудно, а иногда и невозможно построить на основе средств SQL.
В
SQL System R существовали два специальных
оператора для установки так
называемых точек сохранения транзакции
и для отката транзакции к ранее
установленной точке
Прямолинейная реализация этого механизма не вызывает особых технических затруднений, но и не очень полезна, потому что после выполнения частичного отката транзакции для успешного продолжения работы прикладной программы потребовалось бы и восстановить ее состояние в соответствующей точке, а это никак не поддерживается. Понятно, что при более тщательной проработке должны быть увязаны механизмы точек сохранения и контроля целостности. Например, было бы естественно, чтобы при выполнении оператора ENFORCE INTEGRITY, если какие-либо ограничения целостности нарушаются, происходил автоматический откат транзакции к ближайшей точки сохранения, в которой нарушения целостности БД не было. Это значительно усложнило бы реализацию, но было бы очень полезно. Аналогично, можно было бы использовать механизм точек сохранения при автоматических откатах транзакций по причине возникновения синхронизационных тупиков.
В SQL System R присутствуют специальные операторы, поддерживающие встраивание операторов SQL в традиционные языки программирования (в System R основным таким языком был PL/1).
Основная проблема встраивания SQL в язык программирования состояла в том, что SQL - реляционный язык, т.е. его операторы большей частью работают со множествами, в то время как в языках программирования основными являются скалярные операции. Решение SQL состоит в том, что в язык дополнительно включаются операторы, обеспечивающие покортежный доступ к результату запроса к БД.
Для этого в язык вводится понятие курсора, с которым связывается оператор выборки. Над определенным курсором можно выполнять оператор OPEN, означающий материализацию отношения-результата запроса, оператор FETCH, позволяющий выбрать очередной кортеж результирующего отношения в память программы, и оператор CLOSE, означающий конец работы с данным курсором.
Дополнительную гибкость при создании прикладных программ со встроенным SQL обеспечивает возможность параметризации операторов SQL значениями переменных включающей программы.
Для упрощения создания интерактивных SQL-ориентированных систем в SQL System R были включены операторы, позволяющие во время выполнения транзакции откомпилировать и выполнить любой оператор SQL.
Оператор PREPARE вызывает динамическую компиляцию оператора SQL, текст которого содержится в указанной переменной символьной строке включающей программы. Текст может быть помещен в переменную при выполнении программы любым допустимым способом, например, введен с терминала.
Оператор DESCRIBE служит для получения информации об указанном операторе SQL, ранее подготовленном с помощью оператора PREPARE. C помощью этого оператора можно узнать, во-первых, является ли подготовленный оператор оператором выборки, и во-вторых, если это оператор выборки, получить полную информацию о числе и типах столбцов результирующего отношения.
Для
выполнения ранее подготовленного
оператора SQL, не являющегося оператором
выборки, служит оператор EXECUTE. Для выполнения
динамически подготовленного
Расчет
предварительных технико-
Э=ПЭ+СЗ, где Э – суммарный доход от эксплуатации ПО;
ПЭ – предполагаемая эффективность ПО;
СЗ – сумма затрат
ПЭ=Т*СР, где Т – приблизительный срок использования ПО;
СР – средства на разработку
СЗ=СР+СС, где СС – средства на сопровождение
СС=1,5*СР
СР=К*ЗП*ТР+ЗО, где К – количество разработчиков;
ЗП – заработная плата; ТР – количество рабочих дней;
ЗО – затраты на оборудование.
Расчет организовать для N проектов.
Пусть N=3, тогда:
К(1)=10, ЗП(1)=20000, ТР(1)=5, ЗО(1)=75000, Т(1)=60;
К(2)=15, ЗП(2)=25000, ТР(2)=6, ЗО(2)=90000, Т(2)=50;
К(3)=7, ЗП(1)=20250, ТР(1)=7, ЗО(1)=80000, Т(1)=40.
Program Kursovaja;
var i, n: integer;
K, ZP, TR, ZO, SR, SS, SZ, T, PE, E: Real;
Begin
Writeln(‘Введите количество проектов’);
Readln(n);
For i:=1to n do
Begin
Writeln(‘Введите количество разработчиков для ‘,i,’-го проекта’);
Readln(K);
Writeln(‘Введите заработную плату для ‘,i,’-го проекта’);
Readln(ZP);
Writeln(‘Введите количество рабочих дней для ‘,i,’-го проекта’);
Readln(TR);
Writeln(‘Введите затраты на оборудование для ‘,i,’-го проекта’);
Readln(ZO);
Writeln(‘Введите приблизительный срок использования ПО для ‘,i,’-го проекта’);
Readln(T);
SR:=K*ZP*TR+ZO;
SS:=1.5*SR;
SZ:=SR+SS;
PE:=T*SR;
E:=PE+SZ;
Writeln(‘Для ‘,i,’-го проекта средства на разработку равны ‘,SR:1:1,’, средства на сопровождение равны‘,SS:1:1,’, сумма затрат равна‘,SZ:1:1,’, предполагаемая эффективность равна‘,PE:1:1,’, суммарный доход равен‘,E:1:1,’’);
SR:=0; SS:=0; SZ:=0; PE:=0; E:=0;
End;
Readln;
End.
Язык SQL — это одна из важнейших технологий, влияющих на формирование и направление развития современного компьютерного рынка. Со времени своего первого появления в коммерческой СУБД, более двадцати пяти лет назад, SQL прошел большой путь и стал стандартным языком для работы с базами данных. В первое десятилетие своей истории, благодаря поддержке со стороны компании IBM, производителей СУБД и международных органов стандартизации, он стал стандартом управления данными в корпоративной среде. Во втором десятилетии влияние SQL расширилось на рынок персональных компьютеров, а также на новые сегменты рынка, в частности хранилища данных.
Следует отметить, что основным из достоинств языка SQL является наличие международных стандартов.
В
ходе работы провели следующие
Ссылки на монографии и учебники:
Ссылки на Интернет-источники:
Информация о работе SQL – стандартный язык реляционных баз данных