Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML. Токмаков Г.П. - 23 стр.

UptoLike

Составители: 

23
специфицированный для него моделью данных. Это может быть цена товара,
номер заказа, индекс продукта и т. д.
Изучение возможностей использования модели данных, начнем с того, что
даже в нашем примере пользователю информационной системы будет не слиш-
ком просто получить, например, общую численность отдела, в котором работа-
ет
Петр Иванович Федоров. Для этого ему пришлось бы написать программу, ко-
торая работала бы в соответствии со следующим алгоритмом.
1. Установить номер отдела, в котором работает указанный служащий.
С этой целью:
в файле СЛУЖАЩИЕ необходимо отыскать запись, для которой значение поля
СЛЖ_ИМЯ = 'ПЕТР ИВАНОВИЧ ФЕДОРОВ'.
для найденной записи необходимо определить значение поля СЛЖ_ОТД_НО‐
МЕР. Пусть в файле СЛУЖАЩИЕ это будет запись, для которой значение поля
СЛЖ_ОТД_НОМЕР= n.
2. Выбрать из файла
ОТДЕЛЫ запись, для которой значение поля ОТД_НОМЕР=n.
3. Определить значение поля
ОТД_ЧИСЛ в таблице ОТДЕЛЫ для записи, у кото-
рой значение поля
ОТД_НОМЕР =n.
И так пришлось бы поступать всякий раз, как только возникала необходи-
мость в извлечении тех или иных данных. Было бы гораздо проще, если бы
СУБД предоставляла в распоряжение пользователей язык, который позволял
сформулировать соответствующий запрос, в ответ на который СУБД выдавала
требуемый результат. В составе современных реляционных СУБД такие языки
имеются и называются языками запросов к базам данных.
Самое примечательное то, что эти языки разрабатываются в соответствии
со стандартным интерфейсом
SQL, который, в настоящее время, де факто явля-
ется обязательным для всех разработчиков СУБД. Это приводит к тому, что
внутренне строение СУБД может быть любым, но ее интерфейс, с которым
имеет дело пользователь, будет единым, и пользователю не придется перепи-
сывать код всякий раз, когда в информационной системе меняется СУБД.
Например,
при наличии языка запросов SQL наш запрос можно было бы вы-
разить в следующей форме (
запрос1):
SELECTОТД_ЧИСЛ
FROMСЛУЖАЩИЕ,ОТДЕЛЫ
WHEREСЛЖ_ИМЯ='ПЕТРИВАНОВИЧФЕДОРОВ'AND

СЛЖ_ОТД_НОМЕР=ОТД_НОМЕР;
Это пример запроса с «полусоединением», который характеризуется тем, что:
запрос адресуется к двум файламСЛУЖАЩИЕ и ОТДЕЛЫ,
но данные выбираются только из файла ОТДЕЛЫ.
Условие
СЛЖ_ОТД_НОМЕР = ОТД_НОМЕР всего лишь «ограничивает» интересую-
щий нас набор записей об отделах до одной записи, если
Петр Иванович Федоров
действительно работает на данном предприятии. Если же
Петр Иванович Федоров
не работает на предприятии, то условие
СЛЖ_ИМЯ = 'ПЕТР ИВАНОВИЧ ФЕДОРОВ' не бу-
дет удовлетворяться ни для одной записи файла
СЛУЖАЩИЕ, и поэтому запрос вы-
даст пустой результат.