Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭК_Б_727111.doc
Скачиваний:
10
Добавлен:
17.08.2019
Размер:
3.23 Mб
Скачать

6. История развития sql

SQL ( Structured Query Language ) — Структурированный Язык Запросов — стандартный язык запросов по работе с реляционными БД. Работа была начата сразу после появления статью Э.Кодда в 1970г. в лабораториях компании IBM для проверки возможностей реляционной модели.

СУБД System R - экспериментальная исследовательская система с языком SEQUEL (позже SQL ), созданная IBM:

  • Полный реляционный язык БД

  • Операторы манипулирования БД

  • Средства определения и манипулирования схемой БД

  • Определение ограничений целостности

  • Определение представлений

  • Определение индексов

  • Авторизация доступа к отношениям и их полям

  • Точки сохранения транзакций и откаты

SQL в коммерческих реализациях:

1979 - Oracle (Relation Software Inc.- Oracle corp.;

1981-1982 - DB2 (IBM), Ingres - CA-OpenIngres (Relation Technology Inc. - Computer Associates)

1984 - Informix (Informix Sofrware);

1986 - Sybase (Sybase Corp.)

Реализован во всех коммерческих реляционных СУБД

Все фирмы провозглашают соответствие стандарту SQL

Реализованные диалекты очень близки

Путь "сверху вниз" - уточнение и упрощение SQL System R

Путь "снизу вверх" - от диалектов реализации различных фирм (наращивание возможностей, обычное отсутствие полного описания языка)

SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Опера торы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, PL , COBOL и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме.

Достоинства и недостатки SQL

Достоинства:

  • Повсеместная распространенность

  • Быстрое обучение в простых случаях

  • Связывание с различными языками программирования

  • Поддержка ODBC и JDBC

  • Фактор времени: научились хорошо реализовывать.

Недостатки:

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

  • Недостаточно продуманный механизм неопределенных значений

  • Сложность формулировок и громоздкость.

Билет №13

1. Одномерные задачи оптимизации

Под оптимизацией понимают процесс выбора наилучшего варианта из всех возможных. Если рассматривать функцию, то поиск наибольшего или наименьшего значения. Общие методы оптимизации:

1. аналитические методы, использующие классические методы дифференциального и вариационного вычисления

2. численные методы

3. графические методы

Функция f(x), заданная на a≤x≤b называется унимодальной на отрезке [a,b], если существует единственная точка x* минимума f(x), т.е. f(x*)= и если для любых двух точек x1, x2 [a,b] выполняются условия: f(x1)>f(x2), что следует из неравенства x1<x2≤x* и f(x1)<f(x2), что следует из неравенств x2>x1≥x*.

Метод дихотомии

Пусть задана унимодальная функция f(x). Необходимо найти минимум функции на отрезке [a,b], которому принадлежит точка локального минимума x*. Для сужения отрезка унимодальности используем точки x1, x2, расположенные симметрично относительно середины отрезка [a,b].

Пусть известен отрезок [an-1;bn-1], находим середину отрезка:

Вычисляем значения функции в точках xn±δ, сравниваем их:

1) если f(xn-δ)<f(xn+δ), то an=an-1, bn=xn

2) если f(xn-δ)>f(xn+δ), то an= xn-δ, bn=bn-1

В результате приходим к последовательности вложенных отрезков, таких что точка локального минимума принадлежит каждому из них и является общим пределом последовательности.

Метод золотого сечения

Золотое сечение, открытое Евклидом, состоит в разбиении интервала [a,b] на 2 части точкой x1 таким образом, чтобы отношение длины всего отрезка к большей части было равно отношению большей части к меньшей.

Коэффициент дробления отрезка [ a , b ] :

x1=b+(1-k)(b-a)

x2=b+k(b-a)

a x1 x2 b

Алгоритм:

1) вычисляем значения x1, x2

2) вычисляем значения f(x1), f(x2)

3) проверяем условия:

- если f(x1)≤ f(x2), то для дальнейшего деления оставляют интервал [a,x2]

- если f(x1)> f(x2), то для дальнейшего деления оставляют интервал [x1,b]

Процесс деления продолжают до тех пор, пока длина интервала неопределенности не станет меньше заданной точности ε.Замечание: x1 производит золотое сечение интервала [a,x2], x2 – золотое сечение отрезка [x1,b].