
- •Теория субд
- •За таблицами – наше будущее!
- •Связываем данные
- •Объектный рай
- •Сетевая база данных
- •Клиент-сервер
- •Особенности клиент-сервера
- •Индексы на сервере
- •Третий уровень
- •Сетевые субд
- •Архитектуры субд: технология локальных (настольных) бд
- •Архитектуры субд: технология "клиент-сервер"
- •В чем сходства и различия?
- •Выбираем бд
- •Кибернетическое будущее за базами знаний
- •Искусственный интеллект
- •Данные и знания
- •Базы знаний и экспертные системы
- •Машинное обучение
- •Анализ данных и olap-технологии
- •Индукция правил и деревья решений
- •Хранилища данных и корпоративная память
- •Машинное обучение – ключ к кибернетическому бессмертию
- •Кофе. Солнце. Базы данных
- •Не microsoft'ом единым. Bde
- •Odbc на практике
- •Форточки и odbc
- •Odbc для пингвина
- •Какие они бывают?
- •Что такое правильная база данных?
- •Нужна наглядная схема!
- •А как это сделать?
Теория субд
Лекции на тему “Введение в теорию СУБД”
Прежде чем начать практиковаться в создании моделей, проектировании сложной базы или в управлении навороченной СУБД, нужно обогатить себя хотя бы минимальными теоретическими навыками. Еще в древние времена, когда о базах данных только мечтали, кто-то подметил, что без теории нет практики.
ЧТО ТАКОЕ СУБД И С ЧЕМ ЕЕ ЕДЯТ
Тем, кто впервые слышит о базах данных, нет смысла рассказывать о моделях, связях и т.п. Самое первое, с чего нужно начать повествование, - базовые определения, заполучив которые в свой арсенал, ты легко переваришь все остальное.
Потребность хранения данных в виде некоторых структур, то есть упорядочения информации о некоторых объектах окружающего мира, была ощутимой для человечества всегда. В этом случае под объектом понимается или какой-либо предмет, или более абстрактное понятие (например, процесс производства чего-нибудь).
Внесение объекта в базу – только полдела. Его еще нужно как-то характеризовать, связать с ним определенное значение. И тут нужно ввести понятие "данное". Данное – это определенный показатель, характеризующий объект и наделяющий его определенным значением. Причем не обязательно, чтобы объект был определен одним данным – их может быть много. Представь, что ты имеешь дело с хакерской структурой. Хакерство – это объект. А вот данные - это уже хакерские течения, стаж незаконной деятельности, количество написанных эксплойтов и взломанных машин и т.п. Другими словами, данные – это характеристики определенного объекта. Именно это больше всего интересует клиента, обратившегося к пока еще будущей БД.
Создать многомегабайтный файл с тоннами информации (которая, кстати, вполне может быть избыточной) – это не решение проблемы. Человек любит комфорт, поэтому, чтобы, например, пробить информацию на крупного хакера, от клиента потребуется предоставить только ник взломщика, и тогда исчерпывающая информация о киберпреступнике станет оружием справедливости. Организовать такую систему очень непросто, прошел не один десяток лет, прежде чем отдельные файлы стали достойными базами данных (база данных в ini-файле – это тоже стильно – прим. Dr.). Теперь все стало намного проще благодаря существованию структурированных файлов – баз данных и различных моделей организации данных.
Собственно, модель – это основа, на которую опирается та или иная база данных. В той или иной модели определяются связи между данными, типы вводимых данных, методы хранения, управления и т.п. Связь данных с прикладными программами обеспечивается посредством СУБД или с помощью систем управления базами данных.
Итак, СУБД – это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями. Иными словами, с помощью СУБД любой желающий (при наличии определенных прав, конечно) сможет обратиться к базе и достать оттуда интересующую его информацию.
За таблицами – наше будущее!
Та или иная СУБД зависит от модели, которая положена в основу базы. В наше время стали наиболее распространенными две модели: реляционная (модель отношений) и объектно-ориентированная (модель объектов). О них и пойдет речь в этой статье.
Начнем с реляционной модели. В далеком 1969 году американский математик доктор Э.Ф. Кодд (Е.F. Codd) проанализировал сложившуюся к тому времени ситуацию по базам данных и пришел к выводу, что дело плохо. Во всех имевшихся в то время моделях были существенные недостатки: избыточность данных, сложность обработки и отсутствие безопасности хранения информации и т.п. После тягостных раздумий Кодд решил создать свою модель - реляционную. Для тех, кто злостно прогуливал английский, напомню, что relation переводится как "отношение" или просто "таблица". Гениальный доктор просто реализовал хранение данных в табличной форме, то есть организовал такие "хранилища" в виде логических структур (физические методы хранения могут быть любыми). Тем самым Кодд сумел добиться наглядности представления информации и удобства ее обработки. Благодаря достижению этого гения для формирования таблицы данных стало достаточно выполнить определенный логический запрос, подчиняющийся законам булевой алгебры. Среди операторов манипуляции данными существуют минимум три операции: извлечение строк (SELECT), извлечение столбцов (PROJECT) и объединение таблиц (JOIN). В результате этих действий мы получаем таблицу. И простой вывод из всего этого: результатом любой операции в реляционной модели является объект того же рода, что и объект, над которым осуществлялось действие.
Это и есть основное свойство описываемой модели.
Кроме базовых знаний, нам понадобятся основные определения, применимые к этой модели: тип данных, атрибут, кортеж, отношение и первичный ключ.
Тип данных – определение, которое соответствует понятию типа в языках программирования. Другими словами, для реляционной модели можно отметить такие основные типы, как "целые числа", "строки", "символы", "числа с плавающей запятой", "дата" и "деньги" (куда в наше время без денег :)).
Атрибут – это столбец в таблице с данными. Например, если на экране имеется информация о хакерских течениях, эксплойтах и стаже деятельности, то все эти столбцы являются атрибутами.
Кортеж – строка в таблице с данными. Таким образом, исчерпывающая информация на определенного хакера является кортежем.
Отношение – таблица в целом. Описание типов данных, применяемых в табличке, называется заголовком отношения, а все остальное (собственно данные) – телом отношения.
Первичный ключ – минимальный набор атрибутов (столбцов), которые будут определять однозначную уникальность каждого кортежа (строки) в отношении (таблице). При создании базы следует очень внимательно отнестись к заданию первичного ключа – в нашем примере ника хакера будет недостаточно (вдруг кто-нибудь захочет взять себе кличку своего кумира? :)). Бывает, что для аутентификации вводится дополнительное поле с порядковым номером, который будет однозначно разным для каждой строки. Но никто не запрещает выбирать для первичного ключа два или три атрибута: все как ты пожелаешь, лишь бы это действие было логически обоснованным (подобный ряд атрибутов будет называться составным первичным ключом).