Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
04.09.2013
Информационные системы (ИС) это любая система обработки информации (в широком понимании). В узком понимании ИС это совокупность программно-аппаратных средств задействованных для решения некоторых конкретных задач.
ИС система, предназначенная для ведения информационной модели какой-либо области человеческой деятельности. ИС должна обеспечивать средство для протекания информационных процессов (хранение, обработка, накопление данных, передача и т.д.).
Классификация ИС.
Выделяют 3 класса ИС по степени автоматизации:
Ручные ИС характеризуются отсутствием современных технологий обработки данных, все операции выполняются человеком.
Автоматизированные ИС предполагают участие в обработке данных и человека и технических средств, причем главная роль отведена компьютеру.
Автоматические ИС выполняют все операции по переработке информации без участия человека.
По сфере применения ИС делятся на:
ИС организационного управления предназначены для автоматизации функций различных структурных подразделений.
ИС управления технологическими процессами служит для автоматизации функций производственного персонала.
ИС автоматизированного проектирования (САПР) предназначены для автоматизации функций инженеров проектировщиков, конструкторов, технологов, архитекторов, дизайнеров и т.д. Основными функциями таких систем являются инженерные расчеты, создание графической документации, проектной документации и т.д..
Интегрированные (корпоративные) ИС предназначены для автоматизации функций всей фирмы и охватывают автоматизацию всего цикла работ.
По целевым функциям ИС бывают:
Основные понятия БД и СУБД.
Банк данных (БнД)разновидность ИС, в которой реализованы функции централизованного хранения и накопления обрабатываемой информации, представленной в виде одной или нескольких БД. В общем случае БнД состоит из следующих компонентов:
БД совокупность специальным образом организованных данных хранимых в памяти вычислительной системы и отображающих состояния объектов и их взаимосвязей в рассматриваемой предметной области. Логическую структуру хранимых данных в БД называют моделью представления данных. К основным моделям представления данных относят:реляционную, иерархическую, сетевую, многомерную, объектно-ориентированную.
СУБД комплекс языковых и программных средств, предназначенный для создания, ведения и совместного использования БД многими пользователями.
Словарь данных подсистема БнД предназначенная для централизованного хранения информации о структурах данных, взаимосвязях файлов БД, типах данных, форматах их представления, разграничениях доступа, принадлежности данных пользователя и т.д.
Приложениепредставляет собой программу или комплекс программ обеспечивающих автоматизацию обработки информации. Приложения могут обрабатываться в среде или вне среды СУБД, т.е. при помощи системы программирования. Приложения, разработанные в среде СУБД - называются приложения для работы с БД, а приложения, разработанные вне СУБД -называются внешними. Приложения разрабатываются главным образом в случаях,когда требуется обеспечить удобство работы с БД неквалифицированными пользователями или если интерфейс СУБД не устраивает пользователей.
Администратор БД- лицо или группа лиц отвечающих за выработку требований к БД, ее проектирование, создание, эффективное использование и сопровождение.
Вычислительная система представляет собой совокупность взаимосвязанных и согласованно-действующих ЭВМ или процессоров и др. устройств обеспечивающих автоматизацию процессов приема, обработки и выдачи информации.
Обслуживающий персонал выполняет функции поддержания технических и программных средств, в работоспособном состоянии.
06.09.2013
Эффективность работоспособности ИС во многом зависит от ее архитектуры. Существуют 2 архитектуры ИС:
Файл-серверная архитектура является исторически первой архитектурой распределенных ИС. В таких ИС по запросам пользователей файлы БД передаются на персональные компьютеры, где и производится их обработка. Минусом является высокая интенсивность передачи данных, причем зачастую передаются избыточные данные вне зависимости от того, сколько записей необходимо пользователю.
Клиент серверная архитектура в настоящее время является перспективной и стремительно-развивающейся. Чаще всего она предполагает наличие компьютерной сети и распределенной БД, которая включает в себя корпоративную базу данных и персональную БД. Корпоративная БД располагается на сервере, а персональная БД на компьютерах сотрудников подразделений являющихся клиентами корпоративной БД.
Классификация СУБД.
К СУБД относятся следующие виды программ:
Полнофункциональные БД традиционные СУБД с развитым интерфейсом, позволяющим с помощью команд меню выполнять основные действиянад БД(Access, FoxPro, dBase, Paradox). Некоторые полнофункциональные СУБД имеют вспомогательные средства проектирования БД или case системы.
Серверы БД предназначены для создания центров обработки данных в сетях ЭВМ. Серверы БД реализуют функции управления БД запрашиваемые другими клиентскими программами с помощью запросов SQL (Interbase, MySQL, ORACLE, MSSQLServer).
В роли клиентских программ могут использоваться различные программы: полнофункциональные, электронные таблицы, тестовые процессоры и т.д. Клиент и сервер могут принадлежать разным производителям.
Средство разработки предложений используются для создания следующих видов программ: клиентских программ, серверов БД или их компонентов, а также приложений для пользователей (Builder, Delphi, VisualStudio, ERWinи т.д.).
По архитектуре хранения данных СУБД бывают:
По характеру использования выделяют:
Персональные СУБД обеспечивают возможность создания персональных БД и недорогих приложений для работы с ними. Персональные СУБД могут выступать в роли клиентской части многопользовательской СУБД. (access, FOXPRO,dBase,PARADOX)
Многопользовательские СУБД - включает в себя сервер БД и клиентскую часть и, как правило, могут работать в неоднородной вычислительной среде, т.е. с разными типами ЭВМ и операционными системами. (Oracle, InterBase, MYSQL)
11.09.2013
Модель представления данных структура хранимых в БД данных. К классическим моделям представления данных относят:
- иерархическую;
- сетевую;
- реляционную.
Кроме того в последнее время стали активно использоваться следующие модели:
- пост реляционные;
- многомерные;
- объектно-ориентированные;
Также разрабатываются всевозможные системы одновременно поддерживающие несколько моделей данных (объектно-реляционные, дедуктивно-объектно-ориентированные, концептуальные и т.д.). По используемой модели данных СУБД подразделяют аналогично классификации модели представления.
Иерархическая модель представления данныхсвязи между данными можно описать при помощи упорядоченного графа или дерева. Для описания иерархической БД на некотором языке программирования используется такая структура данных, как дерево. Тип дерево является составным, он включает в себя поддеревья, каждое из которых, в свою очередь является типом дерево. Каждый из элементарных типов включен в тип дерево, является простым или составным типом записи. Простая запись состоит из одного типа, а сложная из совокупности. Близнецами называют типы которые имеют одного и того же родителя. К основным операциям манипулирования иерархически организованными данными являются следующие:
- поиск указанного экземпляра;
- переход от одного дерева к другому;
- переход по записям внутри дерева;
- вставка новой записи в указанную позицию;
- удаление текущей записи.
К достоинствам относят:
- эффективное использование памяти;
-высокие скорости обработки данных.
Недостатком иерархической модели является громоздкость, сложность логических связей, сложность понимания для обычного пользователя. Иерархическая модель данных удобна в использовании для работы с иерархически-упорядоченной информацией. К СУБД основанным на иерархической модели относят IMC, Team-up, PC/Focus, а также отечественные ОКА, МИРИС, ИНЭС.
Сетевая модель представления данныхпозволяет отображать различного рода взаимосвязи в виде произвольного графа. Тем самым обобщая иерархическую модель. Для описания схемы сетевой БД используется две группы типов:
- запись;
- связь.
Тип связь определяется для двух типов:
- предок;
- потомок.
Сетевая БД состоит из набора записей и набора соответствующих связей, на которые не накладывается никаких ограничений. Операции манипулирования в сетевой БД поиск записи, переход от одной вершины к другой, создание новой записи, удаление/обновление текущей записи, включение записи в связь, изменение записи. Достоинством сетевой модели является эффективность затрат памяти и оперативности. Также достоинством в сравнении с иерархической моделью является возможность образования различных связей. Недостатком сетевой БД является высокая сложность схемы БД, а также сложность понимания и выполнения обработки информации обычным пользователям. Из-за допустимости установления произвольных связей в сетевой модели ослаблен контроль целостности связей.СУБД основанные на сетевой модели представления данных широко распространения не получили. Из них наиболее известными являются: IDMS, dbVistaIII, CETOP, KOMPAC.
Реляционная модель данных была предложена сотрудником фирмы IBMЭдгаром Коддом и основывается на понятии отношение (таблица). Отношения состоят из множества элементов, которые называются кортежами. Если невозможно описать сложные логические структуры из некоторой предметной области при помощи одной таблицы, то используется их связывание. Основным из достоинств реляционной БД является простота, удобство, понятность, а так же легкость физической реализации на ЭВМ. Именно простота и понятность послужили столь широкому распространению реляционной модели. Недостатком реляционной модели представления данных является отсутствие стандартных средств, идентификации отдельных записей. Также недостатком является сложность описания иерархических и сетевых связей между данными.
13.09.2013
Реляционная модель представления данных некоторой предметной области представляет собой совокупность связанных отношений изменяющихся во времени.
Элемент реляционной модели |
Форма представления |
Отношение |
Двумерная таблица |
Схема отношения |
Строка заголовков, столбцов таблицы |
Кортеж |
Строка таблицы |
Сущность |
Описание свойств объекта |
Атрибут |
Заголовок столбца таблицы |
Домен |
Множество допустимых значений атрибута |
Тип данных |
Тип значений элементов таблицы |
Первичный ключ |
Один или несколько атрибутов |
Основные понятия реляционной модели
Сущность некоторый объект любой природы данные, о котором хранятся в БД. Данные о сущности хранятся в отношениях. Атрибут свойство,которое характеризует сущность. В структуре таблицы каждый атрибут именуется и ему соответствует некоторый заголовок столбца таблицы. Домен множество всех возможных значений определенного атрибута отношения. Табличный ключ (первичный атрибут) называется атрибут отношения, однозначно идентифицирующий каждый из его кортежей. Ключ может быть составным (сложным) т.е. состоять из нескольких атрибутов. Каждое отношение обязательно имеет комбинацию атрибутов, которая может служить ключом. Ее существование гарантируется тем, что отношение не может иметь одинаковых кортежей. Если выбранный первичный ключ состоит из минимально необходимого набора атрибутов, то он является неисбыточным. Ключи обычно используются для достижения следующих целей исключения дублирования значений в ключевых атрибутах, упорядочивания кортежей, ускорение работы с кортежами, организация связывания таблиц. Пусть отношения R1 имеет не ключевой атрибут A значение которого являются значениями ключевого атрибута В другого отношения R2, тогда говорят что атрибут А отношения R1 является внешним ключом.
R1 |
R2 |
|
… |
ᵷB |
|
A |
С помощью внешних ключей устанавливаются связи между отношениями.
Товары |
Производители |
|
Id |
Id_pr |
|
Наименование |
Название производителя |
|
Количество |
Адрес |
|
Стоимость |
Контакты |
|
Срок годности |
Лицензия |
|
Код_pr |
Реляционная модель накладывает на внешние ключи ограничения для обеспечения целостности данных, называемая ссылочной целостность.
19.09.2013
Индексирование.
Определение ключа для таблицы означает автоматическую сортировку записей контроль отсутствия повторений и повышение скорости выполнения операции поиска. Для реализации этих функций в СУБД применяют индексирование. Под индексом понимают средство ускорения поиска и остальных операций, использующих поиск. Таблицу, для которой используется индекс, называют индексированной. Для создания индексов пользователь указывает соответствующие поля, которые требуют индексации. Главная причина повышения скорости выполнения операций в индексированных таблицах заключается в том, что работа производится ни непосредственно с таблицами, а с индексными файлами. Индексирование требует незначительного дополнительного места на диске или небольших затрат процессора на изменение индексов в процессе работы.
Виды связей между таблицами.
При связывании таблиц автоматически выполняются операции контроля ссылочной целостности. В реляционных СУБД выделяют 4 вида связей:
Контроль целостности связей
Понятие целостность связей. Целостность связей подразумевает наличие средств, позволяющих удостоверится, что информация в БД всегда корректная и полная. Контроль целостности связей обычно подразумевает анализ содержимого двух таблиц на соблюдение следующих правил:
- каждой записи основной таблицы соответствует 0 или более записей дополнительной таблицы;
- дополнительной таблице нет записей, которые не имеют родительских записей в основной таблице;
- каждая запись в дополнительной таблице имеет только одну родительскую запись основной таблицы.
Организация целостности связей при манипулировании данными.
При вводе новых записей данные сначала вводятся сначала в основную таблицу, а потом в дополнительную. Если вновь вводимое значение в поле связи дополнительной таблицы не совпадает ни с одним значением основной таблицы, то ввод таких данных должен блокироваться.
Модификация записей. При редактировании полей связи дополнительной таблицы требуется, чтобы новое значение поля связи совпадало соответствующим значениям записи в основной таблице. Т.е. дополнительная запись может сменить родителя, но не остаться без него.
В операциях удаления записей большую свободу имеют записи дополнительной таблицы. Удаление таких записей может происходить бесконтрольно. Удаление записей основной таблицы должно подчиняться одному из правил:
- удалять можно запись, которая не имеет подчинённых записей;
- блокировать удаление записи при наличии подчиненных записей, либо удалять ее вместе с подчиненными записями (каскадное удаление).
Этапы проектирования БД. Проектирование БД осуществляется в 3 этапа:
- концептуальное проектирование. Целью данного этапа является создание концептуальной модели данных из представлений пользователей о предметной области.
- логическое проектирование. Цель данного этапа преобразование концептуальной модели на основе выбранной модели данных в логическую модель независимую от особенностей используемой СУБД при физической реализации БД.
- физическое проектирование. Цель описания конкретной реализации БД размещаемой во внешней памяти ПК. Это описание структуры хранения данных и эффективных методов доступа к данным.
Нормализация БД процесс формирования отношений в соответствии с ограничениями, которые позволяют устранить дублирование обеспечить непротиворечивость хранимых данных и уменьшить трудозатраты на ведение БД. Для каждого этапа нормализации имеется набор ограничений, которым должны удовлетворять отношения БД, тем самым обеспечивается удаление из БД избыточной не ключевой информации. Основное свойство нормальных форм заключается в том, каждая последующая форма должна удовлетворять требованиям предыдущей и некоторым дополнительным требованиям. В большинстве случаев приведение БД к третьей нормальной форме является достаточным.
Первая нормальная форма.
- запрещает повторяющиеся поля, содержащие одинаковую по смыслу информации;
- запрещает множественные поля, которые содержат данные типа список, перечисления и т.д.;
- требует определить первичный ключ для отношения, что обеспечивает однозначное определение каждой записи.
Вторая нормальная форма.
- должна удовлетворять требованиям первой нормальной формы;
- не ключевые столбцы отношения должны зависеть от первичного ключа в целом, а не от его части.
Третья нормальная форма.
- должна соответствовать требованиям второй нормальной формы;
- не ключевые поля отношения, не должны зависеть от других не ключевых полей, а должны зависеть только от первичного ключа.
Нормальная форма Бойса-Кодда требует, чтобы в таблице был только один потенциальный первичный ключ. Если обнаружился второй столбец, который также может быть первичным ключом, то для приведения к форме Бойса-Кодда такие данные необходимо вынести в отдельную таблицу. Должна еще соответствовать третьей нормальной формы.
Четвертая нормальная форма.
- для приведения к четвертой нормальной форме необходимо чтобы отношения соответствовало требованиям формы Бойса-Кодда. Также в отношениях нужно устранить многозначные зависимости, т.е. обеспечить, чтобы вставка или удаление записи не требовало бы ставки удаления или модификации других записей этой же таблицы.
Пятая нормальная форма.
- отношения должны находится в четвертой нормальной форме;
- отношения, находящиеся в четвертой нормальной форме, бывает, можно разбить на три и более таблицы соединив которые получим исходную таблицу. Получившиеся в результате такой искусственной декомпозиции отношения называют находящимися в пятой нормальной форме.В большинстве случаев практической пользы в пятой нормальной форме не наблюдается.
16.10.2013
Транзакция неделимая с точки зрения воздействия на СУБД последовательность действий манипулирования данными выполняющееся по принципу «все или ничего» и переводящая БД из одного целостного состояния в другое. При завершении транзакции оператором COMMITрезультаты гарантированно фиксируются во внешней памяти. При завершении транзакции оператором ROLLBAСK результаты гарантированно отсутствуют во внешней памяти. Транзакции обладают 4 важными свойствами (АСИД):
- атомарность транзакция представляет собой набор законченных действий, выполнение которых происходит по принципу все или ничего;
- согласованность транзакция переводит БД из одного согласованного состояния (целостного) в другое;
- изолированность при выполнении транзакции данные могут находиться некоторое время в несогласованном состоянии, такие данные не должны быть видны другим транзакциям до завершения изменений. Таким образом, система обеспечивает каждой транзакции иллюзию изолированного выполнения;
- долговечность если транзакция зафиксирована, то есть завершилась оператором COMMIT, то ее результаты должны быть долговечны.
Целостность БД соответствие имеющейся в БД информации, ее внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающие некоторые ограничения на возможные состояния БД называется ограничением целостности. Целостность БД не гарантирует достоверности этой информации, однако обеспечивает ее правдоподобность, отвергая невероятные невозможные значения. Конкурирующие транзакции это транзакции, которые пересекаются по времени их исполнения и обращаются к одним и тем же данным. В результате конкуренции за данными могут возникнуть следующие виды конфликтов:
- write-write(запись-запись) первая транзакция изменила объект и не завершилась, а вторая транзакция пытается изменить этот же объект, в результате происходит потеря обновлений.
- read-write (чтение-запись) первая транзакция прочитала объект и не завершилась, а вторая транзакция пытается изменить этот же объект, в результате происходит несовместимый анализ данных.
-write-read(запись-чтение) первая транзакция изменяла объект и не завершилась, вторая транзакция пытается прочитать этот объект, в результате происходит чтение «грязных» данных.
Уровни изолированности информации.
Предельной задачей системы является обеспечение изолированности пользователей т.е. создание надежной и достоверной иллюзии, того что каждый пользователь работает с БД в одиночку. Для обеспечения целостности БД используются следующие уровни изолированности:
Сериализация транзакций.
План выполнения набора транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций.
Сериализация транзакций механизм выполнения транзакций по некоторому сериальному плану. Система, в которой поддерживается сериализациятранзакций, обеспечивает реальную изолированность пользователя, суть которой состоит в обнаружении конфликтов между транзакциями и их устранение. Для реализации сериализации транзакции используют метод синхронизационных захватов и метод временных меток. К данным методам применяются следующие подходы:
Синхронизационные захваты. Тупики
Суть метода заключается в том что перед выполнением любой операции транзакции Т над объектом базы данных О от имени транзакции Т запрашивается синхронизационный захват объекта О в соответствующем режиме в зависимости от вида операции.
Режимы синхронизационных захватов:
-совместный режим (shared- S)- означает, что захват объекта разделяется между транзакциями. Применяется для выполнения операции чтения объекта.
- монопольный режим (exclusive X) означает монопольный захват объекта и требует выполнения операций занесения модификации и удаления данных.
Одним из наиболее минусов это тупики. Можно представить два подхода к обнаружению тупиковых ситуаций:
- СУБД не следит за обнаружение тупиков, транзакции сами принимают решение, кто из них будет жертва;
- за возникновением тупиков следит сама СУБД, она же и принимает решение какой транзакцией пожертвовать.
Метод временных меток
Основная суть метода заключается в следующем если транзакция Т1 началась раньше Т2, то система обеспечивает такой режим выполнения, как если бы Т1 была целиком выполнена до начала Т2. Для каждой транзакции предписывается временная метка, соответствующая началу транзакции. Для каждой транзакции Т предписывается временная метка «т» которой помечается объект Р, так же указывается тип операции. Перед выполнением операции над объектом Р транзакция Т1 выполняет следующие действия :
- проверяет не закончилась ли транзакция Т так же пометившая этот объект, если Т закончилось, то Т1 помечает объект Р и выполняет свою операцию.
- Если транзакция Т не завершилась, то Т1 проверяет конфликтность операций. Если операции не конфликтны то при объекте Р остается или устанавливается временная метка «т1» и транзакция Т1 выполняется.
- Если транзакцияТи Т1 конфликтны, то проверяется если «т» больше «т1» , то транзакция Т является более молодой чем Т1 производится откат Т и Т1 продолжает свою работу
- если Т старше Т1, то Т1 получает новую временную метку и начинается заново.
18.10.2013
Одним из основных требований к современным СУБД является надежность хранения БД. Это требование предполагает возможность восстановления согласованного состояния БД после любого рода программных и аппаратных сбоев. Для этого необходимо некоторая дополнительная информация, которая содержится в виде журнала изменений БД. Таким образом, цель журнализации изменений БД обеспечение возможности согласованного состояния БД после любого сбоя. Общие принципы восстановления:
- результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии БД,
-результаты незафиксированных транзакций не должны быть сохранены в восстановленной БД.
Ситуации при которых необходимо восстанавливать состояние БД:
Для восстановления во всех случаях необходимы избыточные данные содержащие последовательность записи. Эти записи и содержатся в журналах изменения БД.
Существуют 2 основных варианта ведения журнальной информации:
- для каждой транзакции поддерживается отдельный локальный журнал изменений, кроме этого поддерживается общий журнал изменений БД для восстановления БД после «мягких» и «жестких» сбоях.
- данный подход позволяет быстро устранять индивидуальные откаты и восстановления БД после «мягких» и «жестких» сбоях. Основан на поддержании только общего журнала изменений БД, который используется и при выполнении индивидуальных откатов.
23.10.2013
Язык SQLсчитают декларативным в отличие от языков на которых пишутся программы это значит что язык SQL описывает что нужно сделать, а не каким образом. Существует две формы языка SQL:
Основу языка SQLсоставляют операторы, распределенные между 3 компонентами этого языка:
SQL относится к непроцедурным языкам программирования. В отличие от процедурных языков SQLориентирован не на записи, а на множество кортежей, т.е. входной информацией для выполнения запроса является множество кортежей одного или нескольких отношений. Также и в ходе выполнения запроса формируется множество кортежей удовлетворяющих некоторому условию, т.е. SQL задает непоследовательность действий необходимых для получения результата, а условие, которому должны соответствовать кортежи.
Ключевые слова в выражениях на SQL могут прописываться как строчными, так и прописным, и буквами в одну или несколько строк. Каждый запрос должен заканчиваться «;». Зарезервированные слова не могут использоваться в качестве названия объектов БД.
24.10.2013
Selectсписок_столбцовfromимя_таблицы.
Select * from товар where prise< 50000;
В конструкции whereмогут применятся следующие операторы:
А) ? замещает любой ОДИН символ
Б) * - допускает в указанном месте наличие любой последовательности символов.
Сортировка данных в таблице
Selectspisokfromimya_tabl [whereусловие] orderbyимя_столбца [asc|desc]. Если сортировка производится по нескольким столбцам, то их указываем через запятую. Ask повозрастанию, desc поубыванию. Select * fromTovarorderbyprice
Предложение groupby(группировать по) позволяет группировать записи в подмножество определяемые значением какого-либо поля и применять уже агрегирующие функции уже не ко всем записям функции, а к записям сформированной группы.
Selectсписок_столбцовfromимя_таблицыgroupbyстолбец_группировка.
Select avg (price) from Tovar group by kod_proiz;
Selectсписок_столбцовfromимя_таблицыgroupbyстолбец_группировкаhavingусловие; (группировка по условию).
Предложение havingопределяет критерии, по которому следует включать данные в группы. В условии, которое задается в предложение, havingуказывают только поля или выражение, которые на выходе имеют единственное значение для каждой выводимой группы.
Select avg (price) from Tovar group by kod_proizv having kod_proizv=1 or kod_proizv=2;
Sportsman |
Id |
Fio |
Pol |
vozrASt |
Club |
sport |
Select fio, sport, club from sportsman;
Select * from sportsman where vozrast<18;
Select * from sportsman where pol like ж*;
Select * from sportsman where club like спартак;
Select * from sportsman where vozrast between 18 and 25;
Select avg(vozrast) from sportsman where sport like волейбол;
Select count(fio) from sportsman group by club;
Select * from sportsman where vozrast>25;
Select count(fio) from sportsman group by club having vozrast>25;
Select * from Tovar where kod_proiz in (select id from proizv where name likeА%);
Select avg(price) from Tovar where kod_proiz in (select id from proizv where country like Франция);
Выполнение запросов во вложенном запросе начинается с наиболее вложенного, т.е. первый простейший запрос будет выполняться в последнюю очередь. Помимо вложенных запросов имеется другой способ объединения запросов при помощи оператора union в отличии от вложенных запросов union объединяет независимые запросы, т.е. они выполняются независимо друг от друга, а уже их вывод объединяется. Когда два или более запросов подвергаются объединению их столбцы вывода должны быть совместимы для объединения, т.е. каждый запрос должен указывать одинаковое количество столбцов, они должны быть перечислены в одинаковой последовательности и каждый должен иметь тип совместимый с каждым. Нельзя использовать union во вложенных запросах, а также нельзя использовать агрегирующие функции в запросах объединенных union.
Select name, price, kol from Tovar where price > 50000
Union
select name, price,kol from Tovar where kod_proizv in (select id from proizv where country like Франция);
К операторам манипулирования данными относятся вставка(insert), обновление (update) и удаление (delete).
Вставка записи.
Insertintoимя_таблицы[(поле1, … , полеn)] values (значение1, … , значение n);
Поля необязательно перечислять в запросе. Перечисление полей требуется только в том случае, если значение добавляется не во все поля таблицы.
Insert into Tovar values (1,шоколад, 100, 10500, 1 год, 2);
Insertinto Tovar (id,name, price,kod_proizv values (2,”bhbc”,500,1));
Updateимя_таблицыsetзначения_столбца=значение [whereусловие] ;
updateприменется ко всем записяи если нету where, если whereприсутствует то updasteприменяется к записям удовлетворяющим условиям.
Update Tovar set kol=kol+100;
Update Tovar set price=price*2 where kod_proizin(select id from proizvwhere country like Франция);
Delete from имя_таблицы[where условие];
Если условие отсутствует, то из таблицы удаляются все записи.
Delete from Tovar where srok_god is NULL;
Delete from proiz where license like %2012;
Типы данных SQL:
- символьные типы данных:
1. char один символ
2. char(n) символьная строка фиксированной длины, где n длина строки. Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины.
3. varchar(n) символьная строка переменной длины, для хранения данных этого типа отводится число байт соответствующее реальной длине строки.
- целочисленные данные :
1.integer/int (-2147483647 - +2147483648) для хранения целочисленных данных отводится, как правило, 4 байта с указанным диапазоном значений.
2. smallint (-32767 - +32768) короткое целое для хранения которого отводится 2 байта.
- вещественные типы данны:
1. float- вещественный тип данных для хранения которого отводится 8 байт.
2. smallfloat для хранения данных отводится 4 байта.
3. decimal(p)аналогичен типу данных floatс числом значащих цифр равных р.
4. decimal(p,n)аналогичен floatр количество значащих цифр, n количество цифр после запятой.
- денежные типы данных:
1.money(p,n) аналогичен типу данных decimal(p,n).Вводится только потому в некоторых СУБД, что для него используют специальные методы форматирования.
- дата и время:
1. date для хранения даты.
2. time для хранения времени.
3. interval для хранения временного интервала.
4. datetime для хранения моментов времени (год, месяц, число, часы, минуты, секунды, доли секунд).
- двоичные типы данных позволяет хранить данные любого объема в двоичном коде:
1. binery
2. byte
3. blob.
Для всех типов данных имеется одно общее значение NULL, т.е. значение не определено. Это значение имеет каждый элемент столбца, пока в него не будут внесены данные.
Создание БД при помощи SQL запросов.
Create database имя_БД;
Пример: create database shop;
Drop database имя_БД;
Пример: Drop database shop;
Работастаблицами
Createtableимя_таблицы (имя_полятип_поля [notnull] [primarykey|unique] [referencesимя_связанной_таблицы (имя_поля)], …);
Create table proizvod ( id int primary key, name varchar (20) not null, address varchar (30) not null, telvarchar (15) not null, country varchar (20) not null, license datetime);
Create table Tovar (id int primary key, name varchar (20) not null, kolsmallint not null, price int not null, srok_godvarchar(40) not null, kod_proizvint references proizvod (id));
Notnull если указана эта конструкция, то элементы столбца всегда должны иметь определенное значение (не null)
Unique значение каждого элемента столбца должно быть уникальным
Primarykey столбец является первичным ключом
Параметры Unique и Primarykey являются взаимоисключаемыми.
Referencesимя_таблицы (имя_столбца) данный столбец является внешним ключом, указывается имя таблицы и столбец на который он ссылается.
Удаление таблицы
Droptable<имя_таблицы>;
Пример: droptableTovar удаление таблицы «товар»
Модификация таблицы
Добавление столбцов в таблицу:
Altertable<имя_таблицы>
ADD (<имя_столбца>тип_данных [NOTNULL] [unique|primarukey] [referencesимя_связанной_таблицы (имя_столбца)], …);
Пример:
Alter table Tovar
Add (sostavvarchar (100) not null, opt_priceint not null);
Удаление столбцов из таблицы:
Altertable<имя_таблицы>
Drop (имя_строки1б имя_строки2, …);
Пример:
Alter table Tovar
Drop (sostav, opt_price);
Изменение столбцов в таблице
Altertable<имя_таблицы>
Modify (имя_столбцатип_данных[NOTNULL] [unique|primarukey] [referencesимя_связанной_таблицы (имя_столбца)], …);
Пример:
AltertableTovar
Modify (srok_goddatetime not null);
13.11.2013
Домен это именованная совокупность значений, используемая базой данных как дополнительный тип данных. После создания домена на него модно ссылаться при создании таблиц как тип данных.
Создание доменов
Createdomainимя_доменаasбазовый_тип_данных [defaultliteral| null | user][notnull] checkусловие_домена];
Notnull запрещает ввод пустых значений.
Checkусловие_домена задает ограничения для значений поля.
Пример:
Create domain Key1 as int not null check value>0;
Create table Tovar (id key1 primary key, …,kod_proizv key1 references proizvod (id));
Create domain text as varchar(60) default null
Столбцы, базирующиеся на доменах, наследуют все характеристики домена, причем часть из них может быть переопределена в локальных описаниях столбцов (тип данных не может быть переопределен). Конструкция check не может быть переопределена при использовании домена в описании таблицы.
При выполнении запроса InterBase сначала определяет список индексов связанных с данной таблицей затем устанавливает, что является наиболее эффективным рассмотреть всю таблицу или для обработки запроса использовать существующий индекс. Если interBase решает использовать индекс, то поиск сначала ведется по ключевым значениям в.........для дополнительной фильтрации и окончательной выборке требуемых данных. Использование индекса обычно требует меньшего количества обращений к диску чем последовательное чтение строк в таблице. Индекс может быть определен, как на отдельном столбце, так и на множестве столбцов.
Индексирование эффективно не всегда: при всяком обновлении данных должны обновляться и индексы, по этому увеличиваются временные затраты на обновление данных. Кроме того сами индексы после большого числа обновлений становятся несбалансированными, вследствие чего время поиска по ним возрастает.
Индексирование может дать большой эффект при работе с данными которые часто используются, но редко меняются (пример: таблицы справочники). Если часто используются запросы требующие соединение таблиц по какому-либо полю или группе полей, то от индексирования таблиц по этим полям может быть получен значительный эффект. Также индекс может быть полезен если часто выполняется сортировка по полю или по группе полей. Имеет смысл индексировать только часто используемые в запросах столбцы.
Должны индексироваться:
Применение индексов не целесообразно:
Создание, изменение и удаление индексов
Индексы могут быть созданы двумя способами:
interBaseавтоматически генерирует индексы системного уровня по столбцу или группе столбцов когда таблицы определяются с конструкцыямиprimarykey, foreignkey, unique.
Create [unique] [asc | desc] indexимя_индексаonимя_таблицы (столбец или группы столбцов);
Ascи desc задают способ упорядочивания данных по возрастанию или по убыванию соответственно. Если предполагается сортировка как по взрастанию так и по убыванию, то можно использовать два разных индекса.
Unique задает режим уникального индекса, т.е. блокируется запись с одними и теме же значениями столбца образующие индекс.
Create unique asc index ident on Tovar (id);
Create asc index tov1 on Tovar (name);
Create desc index tov2 on Tovar (name);
Alter index имя_индексаactive | inactive;
Команда Alterindex не применима к индексам используемым в качестве ограничений логической целостности БД, определенных как primarykey,foreignkeyилиunique.
Alter index tov1 inactive;
Alter index tov1 active;
Удаление:
DropindexИмя_индекса;
В interBase не существует такого типа данных, как счетчик или авто инкремент. Выходом из сложившейся ситуации является создание генератора.
Генератор это хранящееся в БД программа выдающая при каждом обращении к ней уникальное число.
Для создания авто инкрементного поля в БД, для него создается свой генератор.
Create generatorимя_генератора;
Пимер:
Create generator gen_tovar;
Creategeneratorgen_proizv;
После создания генератора необходимо установить его начальное значение.
Setgeneratorимя_генератораtoначальное_значение;
Пример:
Set generator gen_tovar to 0;
Set generator gen_proizv to 0;
После того как генератор создан и имеет некоторое значение к данному значению можно обращаться при помощи функции gen_id.
Gen_id (имя_генератора, инкрементное_значение);
Select gen_id (gen_tovar,0) from Tovar;
Удаление: dropgeneratorимя_генератора;
Триггеры позволяют:
Createtriggerимя_триггераfor (имя_таблицыилиобзор)
[active | inactive]
before | after
insert | update | delete
[positionномер_триггера]
As
[описание переменных]
Begin
Тело триггера;
End;
Пример:
Триггеры для создания авто инкрементных полей в таблицах товар и производителей:
Create trigger tr_tovar for Tovar before insert as
Begin
New.id=gen_id(gen_tovar,1);
End;
Create trigger tr_proizv for proizvod before insert as
Begin
New.id=gen_id(gen_proizv,1);
End;
Триггер на каскадное удаление данных:
Create trigger kask_pr
For proizv
Before delete
As
Begin
Delete from Tovar where Tovar.kod_proizv=proizv.id;
End;
Обзоры позволяют создавать настраиваемые версии основных таблиц, отображающих только те данные, которые интересуют пользователя или группу пользователей. Когда обзор определен с ним можно работать как с обычной таблицей. Обзоры выглядят так же как и таблицы БД но физически не хранятся в ней, в БД хранится только определение обзора. Таким образом обзор представляет собой виртуальную таблицу, которая создается на основе результатов выборки поученных путем использования команды select. Создание обзора не приводит к копированию данных, в то же время изменение данных в обзорах приводи к изменению данных в таблицах БД.
Создание обзора
Createviewимя_обзора (название_столбца1, …..) asзапрос на выборку [withcheckoption];
В качестве названия столбцов выступают уникальные имена столбцов обзора, имя столбца обязательно указывать, если обзор включает столбцы выражения. Если имя столбца не указанно, то используются имена соответствующих столбцов таблицы, используемой в selectзапросе.
Запрос на выборку задает условия выборки данных посредством команды select. Тут же может использовать любые конструкции select запроса кроме orderby.
Withcheckoptionпредотвращаетоперацииinsertиupdate в обзоре, если они нарушают условия запроса.
Create view t_p as select Tovar.name, Tovar.kol, Tovar.price, Tovar.srok_god, proizvod.name, proizvod.country from Tovar, proizvod where Tovar.kod_proizv=proizvod.id;
Create view dorog as select * from Tovar where price=(select max (prise) from Tovar);
Обзоры бывают двух видов:
Для обновляемого обзора необходимо, чтобы:
Изменение и удаление обзоров
Нельзя непосредственно изменить обзор, сначала его нужно удалить, а затем создать заново.
Исключения используются для обеспечения корректного сообщения об ошибке в БД. Таким образом исключение это поименованное сообщение об ошибке. Исключения могут быть вызваны триггером или хранимой процедурой. Во время вызова исключения обработка данных прерывается и выводятся сообщения об ошибке.
Createexceptionимя_исключениясообщение об ошибке;