Достижения реляционной алгебры
· Доказательство возможности представления любой структуры данных при помощи реляционной модели
· Принципы создания реляционных СУБД
· Разработка языка 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, появившейся в нем с самого начала, является обеспечение защиты доступа к данным средствами самого языка. Основная идея такого подхода состоит в том, что по отношению к любому отношению БД и любому столбцу отношения вводится предопределенный набор привилегий. С каждой транзакцией неявно связывается идентификатор пользователя, от имени которого она выполняется (способы связи и идентификации пользователей не фиксируются в языке и определяются в реализации).