Как учить базам данных

Материал из DBWiki

Перейти к: навигация, поиск


Данная заметка возникла как отклик на опубликованный Сергеем Кузнецовым Вводный курс по базам данных.

Я знакомился с реляционной теорией самостоятельно по классическому труду К.Дейта "Введение в теорию баз данных". Помню ощущения открытия для себя понятий нормализация, функциональная зависимость и пр. После Дейта я читал и другие учебники по БД - в основном они все похожи друг на друга. Неинтересно. Курс Сергея Кузнецова тоже, на мой взгляд, чересчур традиционен и академичен.

Можно ли учить базам данных иначе? Мне кажется, что да. Во всяком случае я бы попробовал по-другому (далее я не буду повторять "IMHO", "мне кажется", "на мой взгляд", поскольку весь пост - IMHO).

Проблема традиционных учебников в том, что теория начинается сразу со сложных понятий. Например, реляционная теория БД отталкивается от понятия "отношение", которое само по себе уже непростое.

Надо разделить в базах данных (возможно, в информатике в целом) уровни физики и математики. Разница между ними в том, что математика работает с абстрактными понятиями (числа, группы, операции), а физика - с прикладными (скорость, масса, сила). При этом прикладные понятия физики базируются на абстрактных понятиях математики.

Тоже самое в базах данных.

Есть абстрактный уровень - уровень элементов и структур. Это близко к теории множеств, но с другими акцентами. На данном уровне следует рассмотреть понятие элемента, способы объединения (связи) элементов (сложение, произведение), структуры данных, возникающих как следствие связей элементов, множества, мощность множеств, сравнение множеств, понятия пустого элемента, элемента-универсума, о операции над элементами и структурами (скалярное произведение, соединение).

На данном уровне нет семантики - это абстрактная математика баз данных. Ее довольно много, но она полезна, поскольку практична.

Далее можно перейти к семантическому (смысловому) уровню. Основа уровня - пара "понятие-значение". На этом уровне обязательно знание того, что означает то или иное значение (элемент). Что такое "понятие" (переменная, атрибут), как осуществляется связь понятия и его значения, какие виды понятий существуют - это все физика баз данных. Здесь же следует рассматривать кортежи, отношения (в том числе иерархичные), регистры (исторические, накопительные и пр.), операции над ними.

Существует и следующий уровень. Это уровень, на котором рассматриваются понятия объект, тип, свойство, наследование. Здесь же роли, абстрактные типы - это сложные, но интересные темы.

Еще некоторые моменты, которые меня "цепляют".

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

Другой момент - чувствительность данных к контексту. Например, ко времени. Во всех учебниках не любят исторические данные. Понятно, что тема сложная, терминология неустановившаяся. Но ведь практически все окружающие нас данные зависят от времени (в общем случае - от контекста). Большинство примеров учебников рассыпаются при попытке ввести в них историчность, поскольку поддержка историчности требует других структур на хранение и других запросов на выборку.

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

--Дмитрий Малюгин 16:27, 24 января 2009 (UTC)
Обязательно нужно добавить понятие функции (функциональной зависимости) - это уровень между "арифметикой" (элементы и операции) и "физикой" (семантика).