Достижения реляционной алгебры

· Доказательство возможности представления любой структуры данных при помощи реляционной модели

· Принципы создания реляционных СУБД

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