ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.04.2019
Просмотров: 5798
Скачиваний: 8
-
Уровни представления баз данных; понятия схемы и подсхемы.
Создание базы данных предполагает интеграцию данных, предназначенных для решения нескольких прикладных задач разных пользователей. Соответственно, при интеграции данных должны учитываться требования к данным каждого пользователя, основанные на его представлении о данных и связях между ними. Далее эти требования должны обобщаться в единое представление, которое и будет служить основой для построения единой базы данных (рис. 2).
Обобщение представлений всех пользователей о данных называется концептуальной моделью (схемой) БД. Концептуальная модель представляет информационное описание предметной области с учетом логических взаимосвязей, поэтому её еще называют инфологической (информационно-логической) моделью. В модели отсутствуют какие-либо понятия, связанные с ЭВМ, памятью ЭВМ, способами размещения данных в памяти ЭВМ, и, по сути, это модель только предметной области.
Рис. 2 Обобщение представления пользователей о данных
Как уже отмечалось, для создания базы данных и работы с ней используется система управления базами данных. Каждая конкретная СУБД поддерживает определенный вид данных (форматов записей и отношений), называемый моделью данных СУБД.
Следующий этап разработки базы данных предполагает выбор представления концептуальной модели с помощью модели данных конкретной СУБД. Полученное таким образом представление концептуальной модели называется логической моделью БД. Или другими словами, логическая модель – это концептуальная схема, специфицированная в языке конкретной СУБД. Логическая модель представляет данные и элементы данных вне зависимости от их содержания и среды хранения. Далее разработчик системы средствами СУБД отображает полученную логическую модель БД в память ЭВМ и определяет методы доступа. Полученное представление данных в памяти ЭВМ называется внутренним представлением или структурой хранения. Прикладные программы работают с логической моделью, причем каждому пользователю представляется подмножество этой логической модели (подсхема), отражающее его представление о предметной области. Каждая прикладная программа «видит» и обрабатывает только те данные, которые необходимы именно ей.
Соответствующее «видение» данных прикладными программами (пользователями) представляет собой внешние представления. Взаимосвязь вышеуказанных моделей изображена на рис.3.
Рис.3 Различные представления о данных в БД
На данной схеме выделены три различных уровня описания данных (внешний, концептуальный, внутренний). Эти уровни формируют так называемую трехуровневую архитектуру ANSI/SPARC, предложенную в 1975 г. Комитетом планирования стандартов и норм SPARC (Standards Planning and Requirements Committee) Национального института стандартизации США (American National Standards Institute – ANSI). Основная цель этой архитектуры состоит в отделении пользовательского представления о данных в базе данных от их физического представления. Использование таких представлений о данных позволяет обеспечить выполнение основного требования к БД – независимости программ и данных.
При изменении прикладных программ может измениться соответствующее внешнее представление, но логическая модель данных не изменяется.
Теория схем – это теория знаний, их репрезентаций и использования. Согласно теории схем, все знания упакованы в определенные структуры (элементы), они-то и называются схемами.
Схема также есть сеть (а возможно, и дерево) подсхем, последние репрезентируют различные аспекты концептуального содержания закодированного схемой понятия. Как пример рассмотрим схему понятия “лицо”. Она расчленяется на ряд подсхем, репрезентирующих отдельные части лица: нос, рот, глаз. Каждая подсхема в свою очередь распадается на конфигурацию подсхем. глаз-схема, например, содержит подсхемы зрачек, глазное яблоко и т.д. Как выполнение полной процедуры зависит от успешной реализации ее подпроцедур, так и пригодность схемы зависит от пригодности каждой составляющей ее подсхемы.
-
Модели данных. Иерархическая, сетевая и реляционная модели данных; схема отношения
Система баз данных поддерживает в памяти ЭВМ модель предметной области. Однако результат моделирования зависит не только от предметной области, но и от используемой СУБД, поскольку каждая система предоставляет свой инструментарий для отображения предметной области [17].
Этот инструментарий принято называть моделью данных. В то же время результат отображения предметной области в терминах модели данных называется моделью баз данных.
Модель данных определяется тремя компонентами:
. допустимой организацией данных;
. ограничениями целостности (семантической);
. множеством операций, допустимых над объектами модели данных.
Иерархическая модель представляет собой совокупность элементов, расположенных в порядке их подчинения от общего к частному и образующих перевернутое по структуре дерево (граф).
К основным понятиям иерархической структуры относятся уровень, узел и связь. Узел - это совокупность атрибутов данных, описывающих некоторый объект. На схеме иерархического дерева узлы представляются вершинами графа. Каждый узел на более низком уровне связан только с одним узлом, находящимся на более высоком уровне. Иерархическое дерево имеет только одну вершину, не подчиненную никакой другой вершине и находящуюся на самом верхнем - первом уровне. Зависимые (подчиненные) узлы находятся на втором, третьем и т. д. уровнях. Количество деревьев в базе данных определяется числом корневых записей. К каждой записи базы данных существует только один иерархический путь от корневой записи.
В сетевой структуре при тех же основных понятиях (уровень, узел, связь) каждый элемент может быть связан с любым другим элементом.
Реляционная модель данных объекты и связи между ними представляет в виде таблиц, при этом связи тоже рассматриваются как объекты. Все строки, составляющие таблицу в реляционной базе данных, должны иметь первичный ключ. Все современные средства СУБД поддерживают реляционную модель данных.
Эта модель характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
1. Каждый элемент таблицы соответствует одному элементу данных.
2. Все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип и длину.
3. Каждый столбец имеет уникальное имя.
4. Одинаковые строки в таблице отсутствуют;
5. Порядок следования строк и столбцов может быть произвольным.
Постреляционные модели данных:
Иерархическая модель
Сетевая модель
Реляционная модель
Отношение — фундаментальное понятие реляционной модели данных. По этой причине модель и называется реляционной (от лат. relatio — «отношение», «зависимость», «связь»).
Понятие «схема отношения» соответствует описанию структуры таблицы.
-
Язык манипулирования данными для реляционной модели; Реляционная алгебра и язык SQL.
Манипулирование данными в РМД осуществляется с помощью операций реляционной алгебры (РА) или реляционного исчисления [1]. Реляционная алгебра основана на теории множеств, а реляционное исчисление базируется на математической логике.
Реляционная алгебра - это язык операций, выполняемых над отношениями - таблицами реляционной базы данных. Операции реляционной алгебры позволяют на основе одного или нескольких отношений создавать другое отношение без изменения самих исходных отношений. Полученное другое отношение обычно не записывается в базу данных, а существует в результате выполнения SQL-запроса. Для каждой операции реляционной алгебры будет дана её реализация в виде запросов на языке SQL.
Операция выборки
Операция
выборки работает с одним отношением
и
определяет результирующее отношение R,
которое содержит только те кортежи (или
строки, или записи), отношения
,
которые удовлетворяют заданному условию
(предикату P).
Таким образом, операция выборки - унарная операция - и записывается следующим образом:
,
где P - предикат (логическое условие).
Запрос SQL
SELECT * from R3 WHERE A3>'d0'
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. В таблице ниже дано одно отношение, с которым работает эта операция.
|
R3 |
|||
|
A1 |
A2 |
A3 |
A4 |
|
3 |
hh |
yl |
ms |
|
4 |
pp |
a1 |
sr |
|
1 |
rr |
yl |
ms |
Просматриваем столбец А3 и устанавливаем, что предикату A3>'d0' удовлетворяют записи в первой и третьей строках исходного отношения (так как номер буквы y в алфавите больше номера буквы d). В результате получаем следующее новое отношение, в котором две строки:
|
R |
|||
|
A1 |
A2 |
A3 |
A4 |
|
3 |
hh |
yl |
ms |
|
1 |
rr |
yl |
ms |
Комбинировать всевозможные логические условия для выборок Вам поможет материал "Булева алгебра (алгебра логики)".
А в материалах раздела "Программирование PHP/MySQL" Вы найдёт немало примеров комбинаций различных логических условий для выборок из базы данных.
Операция проекции
Операция
проекции (
)
работает, как и операция выборки, только
с одним отношением
и
определяет новое отношение R,
в котором есть лишь те атрибуты (столбцы),
которые заданы в операции, и их значения.
Запрос SQL
SELECT DISTINCT A4, A3 from R3
Пусть вновь дано то же отношение R3:
|
R3 |
|||
|
A1 |
A2 |
A3 |
A4 |
|
3 |
hh |
yl |
ms |
|
4 |
pp |
a1 |
sr |
|
1 |
rr |
yl |
ms |
Из исходного отношения выбираем только столбцы А4 и А3 и видим, что строки со значениями - первая и третья - идентичны. Исключаем дубликат (за это отвечает ключевое слово DISTINCT в SQL-запросе, которое говорит, что нужно выбрать только уникальные записи) и получаем следующее новое отношение, в котором два атрибута и две строки (записи):
|
R |
|
|
A4 |
A3 |
|
ms |
yl |
|
sr |
a1 |
Операция объединения
Результатом
объединения двух множеств (отношений)
А и В (
)
будет такое множество (отношение) С,
которое включает в себя те и только те
элементы, которые есть или во множестве
А или во множестве В. Говоря упрощённо,
все элементы множества А и множества
В, за исключением дубликатов, образующихся
за счёт того, что некоторые элементы
есть и в первом, и во втором множестве.
Операция объединения реляционной
алгебры идентична операции объединения
множеств, которая также описана в
материале "Множества и операции над
множествами".
Запрос SQL
SELECT A1, A2, A3 from R1 UNION SELECT A1, A2, A3 from R2
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Теперь даны два отношения, так как операция объединения - бинарная операция:
|
R1 |
|
R2 |
||||
|
A1 |
A2 |
A3 |
A1 |
A2 |
A3 |
|
|
Z7 |
aa |
w11 |
X8 |
pp |
k21 |
|
|
B7 |
hh |
h15 |
Q2 |
ee |
h15 |
|
|
X8 |
pp |
w11 |
X8 |
pp |
w11 |
|
Объединяем строки первого и второго отношения и видим, что третья строка, которая является третьей и в первом, и во втором отношении - идентичны, поэтому её включаем в новое отношение только один раз. Получаем следующее отношение:
|
R |
||
|
A1 |
A2 |
A3 |
|
Z7 |
aa |
w11 |
|
B7 |
hh |
h15 |
|
X8 |
pp |
w11 |
|
X8 |
pp |
k21 |
|
Q2 |
ee |
h15 |
Важно следующее: операция объединения может быть выполнена только тогда, когда два отношения обладают одинаковым числом и названиями атрибутов (столбцов), или, говоря формально, совместимы по объединению.
Операция пересечения
Результатом
пересечения двух множеств (отношений)
А и В (
)
будет такое множество (отношение) С,
которое включает в себя те и только те
элементы, которые есть и во множестве
А, и во множестве В. Операция пересечения
реляционной алгебры идентична
операции пересечения
множеств, которая также описана в
материале "Множества и операции над
множествами".
Запрос SQL
SELECT A1, A2, A3 from R1 INTERSECT SELECT A1, A2, A3 from R2
В некоторых диалектах SQL отсутствует ключевое слово INTERSECT. Его заменой, например, в MySQL и других, является INNER JOIN. О том, как работает оператор SQL JOIN вообще и его разновидности INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN и FULL OUTER JOIN - на уроке SQL JOIN - соединение таблиц базы данных.
Запрос MySQL
SELECT * from R1 INNER JOIN R2 WHERE
R1.A1
= R2.A1 AND
R1.A2
= R2.A2 AND
R1.A3
= R2.A3
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:
|
R1 |
|
R2 |
||||
|
A1 |
A2 |
A3 |
A1 |
A2 |
A3 |
|
|
Z7 |
aa |
w11 |
X8 |
pp |
k21 |
|
|
B7 |
hh |
h15 |
Q2 |
ee |
h15 |
|
|
X8 |
pp |
w11 |
X8 |
pp |
w11 |
|
Просматриваем все записи в двух отношениях, и обнаруживаем, что и в первом, и во втором отношении есть одна строка - та, которая является третьей и в первом, и во втором отношении. Получаем новое отношение:
|
R |
||
|
A1 |
A2 |
A3 |
|
X8 |
pp |
w11 |
Операция разности
Разность
двух отношений R1 и R2 (
)
состоит из кортежей (или записей, или
строк), которые имеются в отношении R1,
но отсутствуют в отношении R2. Отношения
R1 и R2 должны быть совместимы по объединению.
Операция разности реляционной алгебры
идентична операции разности
множеств, которая также описана в
материале "Множества и операции над
множествами".
Запрос SQL
SELECT
A1, A2, A3 from R2 EXCEPT
SELECT A1, A2, A3 from R1
Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:
|
R1 |
|
R2 |
||||
|
A1 |
A2 |
A3 |
A1 |
A2 |
A3 |
|
|
Z7 |
aa |
w11 |
X8 |
pp |
k21 |
|
|
B7 |
hh |
h15 |
Q2 |
ee |
h15 |
|
|
X8 |
pp |
w11 |
X8 |
pp |
w11 |
|
Из отношения R2 исключаем строку, которая есть также в отношении R2 - третью - и получаем новое отношение:
|
R |
||
|
A1 |
A2 |
A3 |
|
X8 |
pp |
w11 |
|
Q2 |
ee |
h15 |
Операция декартова произведения
Операция
декартова произведения (
)
определяет новое отношение R, которое
является результатом конкатенации
каждого кортежа отношения R1 с каждым
кортежем отношения R2.
Запрос SQL
SELECT * from R3, R4
Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:
|
R3 |
|
R4 |
||||
|
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
|
|
3 |
hh |
yl |
ms |
3 |
hh |
|
|
4 |
pp |
a1 |
sr |
4 |
pp |
|
|
1 |
rr |
yl |
ms |
|
|
|
В новом отношении должны присутствовать все атрибуты (столбцы) двух отношений. Сначала первая строка отношения R3 сцепляется с каждой из двух строк отношения R4, затем вторая строка отношения R3, затем третья. В результате должно получиться 3 Х 2 = 6 кортежей (строк). Получаем такое новое отношение:
|
R |
|||||
|
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
|
3 |
hh |
yl |
ms |
3 |
hh |
|
3 |
hh |
yl |
ms |
4 |
pp |
|
4 |
pp |
a1 |
sr |
3 |
hh |
|
4 |
pp |
a1 |
sr |
4 |
pp |
|
1 |
rr |
yl |
ms |
3 |
hh |
|
1 |
rr |
yl |
ms |
4 |
pp |