9.1 Эволюция баз данных и систем управления.
9.2. Хранилища данных
9.3. Распределенные системы и электронные коллективы.
База данных – это собрание данных, организованное таким образом, чтобы данные было легко найти, изменить, и манипулировать. Непрофессионалы классифицируют базы данных по содержанию – библиотечные базы данных, текстовые базы данных, изображения, и пр.
В информатике, главное основание – организация данных. Где-то к 80-м программисты пришли к понятию реляционной базы и модели данных, которые стали стандартом.
Реляционная модель данных:
- Структурный аспект — данные в базе данных представляют собой набор отношений, то что в анализе данных называется таблица объект-аттрибут.
- Аспект целостности — отношения (таблицы) отвечают определенным условиям целостности уровня домена (типа данных), уровня отношения и уровня базы данных.
- Аспект манипулирования — реляционная алгебра: объединение, пересечение, разность и декартово произведение, а также селекция, проекция, соединение и деление (Кодд, 1970)
|
|
Кроме того, в состав реляционной модели данных обычно включают теорию нормализации.
Следует отметить, что
· модель является логической, а не физической – все информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
· наличие реляционной алгебры позволяет реализовать декларативное программирование («что сделать», а не «как сделать» в процедурных языках) и декларативное описаний ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
Взаимосвязь таблиц является важнейшим элементом реляционной модели данных. Она поддерживается внешними ключами (foreign key). Рассмотрим пример, в котором база данных хранит информацию о рядовых сотрудниках (таблица Сотрудник) и руководителях (таблица Руководитель) в некоторой организации (рис.2). Первичный ключ таблицы Руководитель - столбец Номер (например, табельный номер). Столбец Фамилия не может выполнять роль первичного ключа, так как в одной организации могут работать два руководителя с одинаковыми фамилиями. Любой сотрудник подчинен единственному руководителю, что должно быть отражено в базе данных. Таблица Сотрудник содержит столбец Номер руководителя, и значения в этом столбце выбираются из столбца Номер таблицы Руководитель (см. рис.2). Столбец Номер Руководителя является внешним ключом в таблице Сотрудник.
|
|
Особенностью настоящего этапа является то, что реляционные базы данных принимают для пользователя вид базы данных для объектно-ориентированного программирования (аn object-oriented programming database), конгруэнтной со структурой данных в классах и подклассах программного обеспечения конкретной системы. Другой популярный вид баз данных – распределенные базы данных, которые рассредоточены в разных точках компютерной сети.
Базы данных содержат коллекции данных о тоговых транзакциях, каталогах продукции и складов, профили потребителей и пр. Они позволяют пользователю считывать и записывать данные, специфицировать формат отчетных таблиц и анализировать движение данных. Типично, их хранят в мэйнфреймах, созданные и поддерживаемые на допотопных языковых средствах, так что основная задача программистов, обслуживающих подобные системы, скажем, в каком-нибудь огромном международном банке, поддерживать возможности системы для постоянно обновляемых физических способов доставки информации – новые считывающие устройства, новые стандарты компьютерных спредшитов, и пр. Основные форматы баз данных - IBM's DB2, Microsoft's Access, Oracle, Sybase, and Computer Associates.
SQL (ˈɛsˈkjuˈɛl или ˈsiːkwəl) (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.
Язык SQL делится на три части:
· операторы определения данных (англ. Data Definition Language, DDL)
· операторы манипуляции данными (англ. Data Manipulation Language, DML)
· операторы определения доступа к данным (англ. Data Control Language, DCL)
Типичный запрос (к базе данных Склад):
SELECT Название, Количество, Материал FROM Деталь WHERE Номер = "Т145-А8";{ВЫБРАТЬ Название, Количество, Материал ИЗ Деталь ГДЕ Номер = "Т145-А8"}Типичные команды:
SELECT | Выбрать данные из базы данных | ВЫБРАТЬ |
INSERT | Добавить данные в базу данных | ВКЛЮЧИТЬ |
UPDATE | Обновить данные в базе данных | ОБНОВИТЬ |
DELETE | Удалить данные из базы данных | УДАЛИТЬ |
GRANT | Предоставить привилегии пользователю | РАЗРЕШИТЬ |
REVOKE | Отменить привилегии пользователя | ОТМЕНИТЬ |
COMMIT | Зафиксировать текущую транзакцию | ЗАФИКСИРОВАТЬ |
ROLLBACK | Прервать текущую транзакцию | ПРЕРВАТЬ |
История
В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД System R (англ.), для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как англ. Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (American National Standards Institute), официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты по прежнему часто называют SQL сиквел, вместо эс-кью-эл (по-русски также часто говорят «эс-ку-эль»).
Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (англ. cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.
Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.
Первый официальный стандарт языка SQL был принят ANSI в 1986 и ISO (Международной организацией по стандартизации) в 1987 (так называемый SQL-86) и несколько уточнён в 1989 году. Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 г. нового расширенного стандарта (ANSI SQL-92 или просто SQL2). Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже.
|
|
Создатель реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности они указывают на следующие проблемы SQL:
· Повторяющиеся строки
· Неопределённые значения (nulls)
· Явное указание порядка колонок слева направо
· Колонки без имени и дублирующиеся имена колонок
· Использование указателей
· Высокая избыточность
Хотя SQL и задумывался, как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.
Ранее SQL не предлагал стандартного способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения. Например, Oracle использует выражение CONNECT BY. В настоящее время в качестве стандарта принята рекурсивная конструкция WITH.
SQL - язык запросов, а не универсальный алгоритмический язык. На нем нельзя написать сколько-нибудь сложную прикладную программу, которая работает с базой данных. Для этой цели в современных СУБД используется язык четвертого поколения (Forth Generation Language - 4GL), обладающий как основными возможностями процедурных языков третьего поколения (3GL), таких как СИ, Паскаль, Ада, так и возможностью встроить в текст программы операторы SQL, и средствами управления интерфейсом пользователя (меню, формами, вводом пользователя и т.д.).
Пример системы баз данных, разработанных в Национальном Центре Био-технологической Информации, пожалуй, самый продвинутый в мире среди общедоступных средств:
Состав системы баз