Как я понимаю: иерархическая БД хранится как XML данные. Т.е. иерархиея определяется вложенностью.
Сетевая имеет множество ссылок на другие поля - связанные с нужным полем.
Не понимаю логику работы реляционных БД, а именно как они хранятся и логика их связей.
Сейчас изложу немного своего воображения на эту тему, проверьте пожалуйста.
Говорят что реляционная хранится в виде таблицы. Но в ПК ведь память считается линейной(значит как одномерный массив), как именно эта таблица хранится там. К примеру, есть 2 таблицы:
Знаю что порядок записей в такой БД - хаотичный.
Значит данные хранятся по строкам. ПРимер 1-ая таблица в памяти:
"1","Иванов П.П.","лаборант","[2т:2]";
"3","Петров А.Н.","инженер","[2т:2]";
"2","Сидорова А.М,","бухгалтер","[2т:1]";
(это все в одной строке)
В квадрытных скобках типа ссылка на второую таблицу, где значение такого же поля имеет значение после двоеточия.
Так ли примерно хранятся реляционные БД в памяти?
И еще, как в запросе проявляется связь данных?
Есть след. запрос: SELECT * FROM TABLE1 WHERE "ФИО"="Сидорова А.М."
Я не знаю как написать что таблицы связанны, но предположим что "Отдел" связан с "№ сотрудника" как на картинке.
Предположим что вторая таблица в памяти имеет тот же порядок.
Имея наши таблицы в памяти, логика запроса будет такова:
1) Сервер найдет и прочитает 1ую запись, т.к. она не соответствует условию WHERE, перейдет к след. записи.
2) Проверит вторую запись, так же пропустит ее, т.к. условие ложно.
3) Прочитает 3-ю запись, т.к. условие истинно, вернется к номеру и отобразит значения полей таблицы, и т.к. последнее поле является ссылкой, перейдет ко второй таблице.
4) В первой записи 2ой таблицы, проверит связанные поля, т.к. они не равны, перейдет с след. записи 2ой таблицы.
5) Во 2ой записи связанные поля идентичны, так же отобразит записи второй таблицы.
Если во 2ой таблицы "№ сотрудника" ключевое поиск остановится. Т.к. нет смысла искать дальше. Иначе сервер проверит всю вторую таблицу.
Изложенное выше мое понимание логики работы реляц. БД.
В универе нам абстрактно объясняют язык SQL, а я так не понимаю. Завалил предмет где нужен был SQL. Мне нужно понять именно пошаговую логику работы SQL.
Есть ли какая нибудь книга в которой именно так (на низком уровне) описывается логика работы БД?