- •Концепция баз данных
- •Не реляционные модели данных. Примеры реализации.
- •Реляционная модель данных. Таблицы, записи, поля, связи.
- •Нормализация баз данных
- •Достижения реляционной алгебры
- •Особенности языка sql
- •Преимущества и недостатки sql
- •Реляционные операции.
- •Расширения, диалекты и средства интеграции языка sql
- •Группы операторов sql и операторы, входящие в группы.
- •Sql и реляционная модель. Компромиссы в технических решениях
- •Базы данных и субд. Определение реляционной субд.
- •Развитие реляционных субд. Современные субд. Классификация субд.
- •Основные функции субд (в скобочках в основном дополнение пункта, а не расшифровка)
- •Транзакции. Свойства транзакции.
- •Поддержка транзакций в sql.
- •Механизмы транзакций. Снапшот.
- •Блокировки и клинчи. Разрешение клинчей
- •Журнализирование. Зачем нужны журналы транзакций.
- •Восстановление субд после сбоев.
- •Управление внешней памятью.
- •Словарь субд. Данные в словаре субд.
- •Архитектура субд. Взаимодействие субд с клиентом.
- •Создание таблиц и атрибутов. Ограничение таблиц и атрибутов.
- •Типы связей между сущностями и их реализация в реляционной субд.
- •Ключи, как средство создания связей, первичные и внешние ключи.
- •Ключи и атрибуты. Суррогатные ключи как идеальные первичные ключи.
- •Вопрос 31 про ключи.
- •Ключи и индексы.
- •Использование индексов и основные сведения о индексах.
- •Удаление записей и целостность базы данных.
- •Секционирование и кластеризация таблиц.
- •Основные цели и основной результат проектирования бд.
- •Представление и их место в бд.
- •Роли пользователей субд. Пользователи, роли и разграничение прав доступа.
- •Хранимые (встроенные) процедуры субд. Типы хранимых процедур.
- •Триггеры и их использование в субд.
- •NoSql базы, особенности и место в информационных системах.
- •Особенности тестирования программ, написанных на языке sql.
- •Администрирование субд. Основные функции администратора субд.
- •Обеспечение живучести и отказоустойчивости. Копирование и репликация.
Достижения реляционной алгебры
Доказательство возможности представления любой структуры данных при помощи реляционной модели
Принципы создания реляционных СУБД
Разработка языка SQL
Термины:
Реляционная алгебра |
База данных (СУБД) |
EXCEL |
Отношение |
Таблица |
Таблица |
Кортеж |
Запись |
Строка |
Атрибут |
Поле |
Столбец |
Система управления базами данных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных. (определение на случай, если Фомин поумничает про БД и СУБД).
12 Правил Кодда (к сожалению, относится к вопросу):
0 Реляционная СУБД должна быть способна полностью управлять базой данных, используя связи между данными.
1 Информационное правило – вся информация в реляционной БД (включая имена таблиц и столбцов) должна определяться строго как значения таблиц.
2 Гарантированный доступ – любое значение БД должно быть гарантированно доступным через комбинацию имени таблицы, первичного ключа и имени столбца.
3 Поддержка пустых значений – СУБД должна уметь работать с пустыми значениями. Пустое значение – это неизвестное, независимое, неприменимое значение, в отличие от значений по умолчанию и обычных значений.
4 Активный, оперативный реляционный каталог – описание БД и его содержимое должны быть определены на логическом уровне через таблицы, к которым можно применять запросы, используя DML (язык манипулирования данными).
5 Исчерпывающее подмножество языка данных – по крайней мере, один из поддерживаемых языков должен иметь четко определенный синтаксис и быть самодостаточным. Он должен поддерживать определение данных и манипулирование ими, правила целостности, авторизацию и транзакции.
6 Правило обновления представлений – все представления, теоретически обновляемые, могут быть обновлены через систему.
7 Вставка, обновление и удаление – СУБД поддерживает не только запрос на отбор данных, но и вставку, обновление и удаление.
8 Физическая независимость данных – логика программ-приложений остается прежней при изменении физических методов доступа к данным и структур хранения.
9 Логическая независимость данных – логика программ-приложений остается прежней, в пределах разумного, при изменении структур таблиц.
10 Независимость целостности – язык БД должен быть способен определять ограничения целостности. Они должны быть доступны из оперативного каталога, и не должно быть способа их обойти.
11 Независимость распределения – запросы программ-приложений логически не затрагиваются при первом и последующих распределениях данных.
12 Несмешиваемость (Nonsubversion) – невозможность обойти ограничения целостности, используя языки низкого уровня.
По Фомину: СУБД реляционная если в ней реализована полная поддержка SQL.
Особенности языка sql
SQL (structured query language — «язык структурированных запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей СУБД.
Синтаксис (мало ли Фомин загоняться начнет):
SELECT [{ALL | DISTINCT}] извлекаемый_элемент
[AS псевдоним][, ...]
FROM [ONLY | OUTER]
{таблица [[AS] псевдоним] | представление
[[AS] псевдоним]}[, ...]
[ [тип_соединения] JOIN условие_соединения ]
[WHERE условие_поиска] [ {AND | OR | NOT} условие_поиска [...] ]
[GROUP BY выражение_группировки { столбцы_группировки |
ROLLUP столбцы_группировки |
CUBE столбцы_группировки |
GROUPING SETS (список_наборов_группировок) |
( ) | набор_группировок, список_наборов_группировок }
[HAVING условие_поиска]
[ORDER BY {выражение_сортировки [ASC | DESC]}[, ...]]
Непохожесть SQL (думаю сойдет за особенности):
Непроцедурный язык
Нет подпрограмм
Нельзя передать параметры
Отсутствие привычных конструкций
Нет передачи управления
Нет условных операторов
Нет операторов цикла
Нет прямого управления процессом
Программист задает вход и выход, а СУБД выполняет программу по «собственному разумению»
Язык разрабатывался теоретиками баз данных для простых людей, не имеющих никакого представления о компьютерах.
Еще нашел из интернета прикольную тему: Существенной особенностью языка SQL, появившейся в нем с самого начала, является обеспечение защиты доступа к данным средствами самого языка. Основная идея такого подхода состоит в том, что по отношению к любому отношению БД и любому столбцу отношения вводится предопределенный набор привилегий. С каждой транзакцией неявно связывается идентификатор пользователя, от имени которого она выполняется (способы связи и идентификации пользователей не фиксируются в языке и определяются в реализации).
