Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой_проект_УД_.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
735 Кб
Скачать
☆

3.3.6 Даталогическая модель бд

3.3.6.1. Состав таблиц

При разработке даталогической модели реляционной базы данных необходимо определить состав таблиц. Затем для каждого поля таблицы указать размер поля (в количестве символов), тип данных. Для первичных ключей необходимо ввести запрет неопределенных значений. Для остальных полей возможность запрета неопределенных значений определяется семантикой предметной области. Пример описания состава таблицы приведен в таблице 3.2.

Таблица 3.2 – Состав таблицы «Клиент»

Наименование атрибутов

Тип поля

Размер поля

Допустимость

неопределенных значений

Код_клиента

ФИО_клиента

Паспортные_данные

адрес

телефон

категория

Integer

Character

Character

Character

Character

Character

30

20

20

15

15

NOT NULL

Для создания первичных и внешних ключей отношений используются индексы или индексные выражения, подробно описанные в методических указаниях к лабораторным работам. После определения состава отношений (таблиц) и описания их полей (по аналогии с таблицей 3.2) необходимо установить постоянные отношения между таблицами, т.е. связи по ключам. Для этого необходимо выбрать родительские (управляющие) таблицы, на первичные ключи которых ссылаются другие (дочерние) таблицы.

3.3.6.2 Средства поддержания целостности

Важнейшим вопросом, возникающим при проектировании и эксплуатации систем обработки данных, является обеспечение целостности данных. Нарушение целостности может быть связано не только с ошибками оператора при вводе данных, но и со сбоями в работе системы. Отказ в работе системы может возникнуть, когда одни операции были выполнены, а другие, связанные с ними определенными ограничениями операции, не успели выполниться. Например, удалена запись о сотруднике, а не удалены относящиеся к ней записи о его детях и т. п. Нарушение целостности возникает при вводе или корректировке данных, а также при выполнении реляционных операций (проекция, соединение).

Решение проблемы целостности заключается в обеспечении в любой момент времени правильности данных в базе данных, для этого используют правила проверки достоверности данных гарантирующие, что недействительные данные не попадут в таблицы БД. Целостность данных обеспечивается набором специальных предложений, называемых ограничениями целостности. Ограничения целостности, присущие той или иной предметной области, должны быть выявлены при обследовании и зафиксированы в инфологической модели. Для того чтобы обеспечить целостность при выполнении реляционных операций, необходимо, чтобы соблюдались определенные правила при их выполнении, а также чтобы файлы были правильно спроектированы.

Целостность (от англ. integrity – нетронутость, неприкосновенность, сохранность, целостность) – это правильность данных в любой момент времени.

Но цель по поддержанию целостности может быть достигнута лишь в определенных пределах: СУБД не может контролировать правильность каждого отдельного значения, вводимого в базу данных. Например, нельзя обнаружить, что вводимое значение 5 (представляющее номер дня недели) в действительности должно быть равно 3. Поддержание целостности базы данных может рассматриваться как защита данных от неверных и случайных действий персонала или разрушений. Ограничения целостности определяются в большинстве случаев особенностями предметной области, хотя могут отражать и чисто информационные характеристики. Например, в проектируемой базе данных «Прокат» примером одного из ограничений может служить запрет на ввод будущей даты.

Ограничения целостности могут относиться к разным информационным объектам базы данных, в том числе атрибутам (полям), кортежам (строкам, записям), отношениям (таблицам, файлам), связям между файлами и так далее. Современные СУБД имеют ряд средств для поддержания целостности баз данных.

Выделяют три группы правил поддержания целостности:

  • Целостность по сущностям.

  • Целостность по ссылкам.

  • Целостность, определяемая пользователем.

Целостность по сущностям состоит в следующем: Не допускается, чтобы первичный ключ сущности принимал неопределенное значение. Неопределенные значения соответствуют пустым клеткам таблиц. Запрет неопределенных значений обозначают как: «NOT NULL». Ключевое слово NULL может обозначать в базах данных различные понятия: неопределенное значение, ложь (в логическом поле), нуль (в числовом поле). При попытке ввода новой строки с неопределенным первичным ключом операция ввода отвергается средствами СУБД.

Первичный ключ должен быть уникален. При попытке ввода двух разных строк с одинаковыми первичными ключами операция ввода отвергается средствами СУБД. Таким образом, целостность по сущностям, которая ограничивает возможные значения первичного ключа, поддерживается автоматически средствами СУБД.

Внешний ключ может принимать неопределенные значения. СУБД не отвергает ввод строк с неопределенными значениями внешнего ключа. В логически связанных таблицах значение внешнего ключа дочерней таблицы должно быть либо:

  • равно значению первичного ключа родительской таблицы;

  • полностью неопределенным.

Целостность по ссылкам определяет механизм каскадирования изменений первичного ключа отношения, при котором согласовано изменяются логически связанные с первичным внешние ключи, или механизм, который отвергает эти изменения.

Таким образом, для каждого внешнего ключа проектировщик базы данных должен специфицировать не только поле или комбинацию полей, составляющих этот внешний ключ, и основную таблицу, которая идентифицируется этим ключом, но также и ответы на вопросы:

- что должно происходить при попытке ОБНОВЛЕНИЯ первичного ключа родительской таблицы, на которую ссылается некоторый внешний ключ?

- что должно происходить при попытке УДАЛЕНИЯ первичного ключа родительской таблицы, на которую ссылается некоторый внешний ключ?

На эти вопросы можно дать три ответа (по выбору проектировщика):

1. КАСКАДИРОВАНИЕ. Операция обновления (или удаления) «каскадируется» с тем, чтобы обновить (удалить) также и внешний ключ в дочерней таблице. (На лабораторных работах для каскадирования обновления (и удаления) используется оператор CASCADE).

2. ОГРАНИЧЕНИЕ. Обновляются (или удаляются) первичные ключи лишь тех записей, на которые нет ссылок в дочерних таблицах. При этом используется оператор RESTRICT.

3. УСТАНОВЛЕНИЕ неопределенных значений (NULL-значений). Внешний ключ устанавливается в неопределенное значение, а затем обновляется первичный ключ родительской таблицы.

Целостность, определяемая пользователем. Для любой конкретной базы данных существует ряд дополнительных специфических правил, которые относятся к ней одной и определяются разработчиком. Чаще всего контролируется:

- уникальность тех или иных атрибутов,

- диапазон значений (обычно используется для числовых полей, различают открытые и закрытые диапазоны; первые фиксируют значение только одной из границ, а вторые фиксируют ебе границы; например, экзаменационная оценка от 2 до 5;

- принадлежность набору значений или задание домена (пол "М" или "Ж").

Ограничения целостности – это утверждения о допустимых значениях отдельных информационных единиц и связях между ними.

Ограничение целостности устанавливает правила на уровне баз данных, определяя набор проверок для таблиц системы. Эти проверки автоматически выполняются всякий раз, когда вызывается оператор вставки, модификации или удаления данных в таблице. Если какие-либо ограничения нарушены, операторы отменяются.

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

1. Тип и формат поля.

2. Признак непустого поля. Характеризует недопустимость пустого значения поля в БД. Например, поля со сведениями о сотрудниках («фамилия», «имя», «отчество», «оклад») обязательно должны иметь какое-то значение, а в поле «ученая степень» может отсутствовать значение.

В том случае если речь идёт об ограничениях целостности, относящихся к кортежу, то имеется в виду ограничение на значение всей строки, рассматриваемой как единое целое, или ограничения на соотношения значений отдельных полей в пределах одной строки. Естественным ограничением является требование уникальности каждой строки таблицы.

По определению в реляционном отношении не может быть одинаковых кортежей. Однако не все реляционные СУБД обеспечивают автоматическое соблюдение этого ограничения. Пример ограничения на соотношения полей внутри одного кортежа: значение поля «дата возврата» не должно превышать «дату заказа».

Если встроенные возможности СУБД не позволяет контролировать подобные ограничения целостности, то надо написать универсальную программу (создать процедуру), позволяющую это делать.

Видом ограничения является также запрет на обновление. Он может относиться как к отдельному полю, так и к записи или целой таблице. В некоторых СУБД существует запрет на корректировку ключевого поля.

Запрет на обновление может быть связан с технологией обработки данных или со спецификой предметной области. Например, если описывается объект «Личность», то его атрибуты дата и место рождения являются постоянными и не могут меняться. Для соответствующих полей в БД рекомендуется задавать запрет на обновление. При этом запрет на обновление может относиться как к отдельному полю, так и ко всей записи и или файлу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]