Реляционная модель данных. Для реализации основных функций в ИС используются различные принципы описания данных
Для реализации основных функций в ИС используются различные принципы описания данных. Ядром любой БД является модель представления данных. Рассмотрим реляционную модель данных, характеризующуюся организацией данных в виде двумерных таблиц и возможностью использования формального аппарата алгебры отношений. Реляционная (от англ. relation – отношение) модель данных является наиболее универсальной, к ней могут быть сведены другие модели (иерархическая и сетевая). Важнейшим понятием реляционных моделей данных является сущность. Сущность – это объект любой природы, данные о котором хранятся в БД. Для представления данных об объектах и их взаимосвязях используются отношения. Каждое отношение – это реляционная таблица. Каждый конкретный экземпляр сущности представляется совокупностью элементов строки, которая называется кортежем (или записью). Каждый столбец есть домен (альтернативные названия – атрибут и поле), по имени которого группируются данные различных экземпляров сущности. Строка заголовков называется схемой отношения. Количество доменов определяет степень отношения, количество кортежей – его мощность. Каждая реляционная таблица должна обладать следующими свойствами: - один элемент таблицы – один элемент данных; - все столбцы таблицы содержат однородные по типу данные (целочисленный, числовой, текстовый и т.д.); - каждый столбец имеет уникальное имя; - число столбцов задаётся при создании таблицы; - порядок записей в отношении может быть произвольным; - записи не должны повторяться; - количество записей в отношении не ограничено. Структура простейшей базы, состоящей из одной таблицы, представлена полями (столбцами) и записями (строками). Даже если в базе нет ни одной записи (пустая база), это всё равно полноценная база – в ней содержится информация о методах хранения данных, хотя сами данные пока отсутствуют – её структура представлена набором полей. Например, простейшая телефонная записная книжка имеет чёткую структуру (имя абонента и его телефонный номер), что позволяет отличить её от блокнота или ежедневника, даже если в неё не записали ни одной строки. Первичным ключом отношения называется поле или группа полей, однозначно определяющие запись. В отношении СТУДЕНТ первичным ключом может быть поле ФАМИЛИЯ, если во всём списке нет однофамильцев – это будет простой ключ. Если есть однофамильцы, то совокупность полей – фамилия, имя, отчество – создадут составной первичный ключ. На практике обычно в качестве простого первичного ключа выбирают поле, в котором совпадения заведомо исключены. Для рассматриваемого примера таким полем может служить номер зачётной книжки студента или уникальный код студента (читательского билета). Обычно в базе содержится не одна, а несколько связанных таблиц. Например, если в отношении СТУДЕНТ надо описать вуз, в котором он обучается, то, на первый взгляд, можно было бы включить в отношение следующие поля: СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ГРУППА, НАЗВАНИЕ вуза, АДРЕС вуза). Но при заполнении такой таблицы для каждого студента придётся указывать довольно длинное наименование вуза и его адрес, что неудобно. Более того, любая незначительная ошибка во вводе этих полей приведёт к нарушению непротиворечивости базы данных. Например, ошибка в адресе вуза приведёт к тому, что в БД появятся два вуза с одинаковым наименованием и разными адресами. Поступают в таком случае так: в отношение СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ГРУППА) вводят поле «КОД вуза» (целое число) и добавляют ещё одно отношение – ВУЗ (КОД вуза, НАЗВАНИЕ, АДРЕС). Таблицы СТУДЕНТ и ВУЗ при этом будут связаны по полю «КОД вуза». В отношении ВУЗ поле «КОД вуза» будет первичным ключом, а в отношении СТУДЕНТ поле «КОД вуза» будет внешним ключом. При работе с такими таблицами повторяться могут только данные в поле «КОД вуза», а все необходимые сведения о вузе можно взять из отношения ВУЗ. Итак, для связи реляционных таблиц необходимо ввести в обе таблицы одинаковые по типу поля, по которым определится связь между записями обеих таблиц. Связи бывают нескольких типов: – один к одному (1: 1) – любая запись одной таблицы может быть связана только с одной записью другой, и наоборот. По сути каждая пара записей является одной записью, поля которой разделены на две таблицы. То есть часть полей находится в одной таблице, а оставшаяся часть – в другой, являющейся продолжением первой; – один ко многим (1: М или 1: ∞) – любая запись одной таблицы может быть связана с несколькими записями другой, но любая запись второй таблицы связана только с одной записью первой таблицы. Связь «один ко многим» была установлена в вышеприведённом примере, так как одной записи таблицы ВУЗ соответствует множество записей таблицы СТУДЕНТ; – многие ко многим (М: М или ∞: ∞) – любая запись одной таблицы может быть связана с несколькими записями другой, и наоборот. В явном виде эта связь может не поддерживаться, обычно она организуется путём создания дополнительных таблиц. Например, у каждого студента несколько преподавателей (по разным дисциплинам), а у каждого преподавателя – несколько студентов.
|