Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_konspekt_2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
752.13 Кб
Скачать

Раздел 2.7 Использование uml-нотации для разработки баз данных

Тема 2.7.1 Основные понятия баз данных. Ключи, триггеры и хранимые процедуры Лекция № 23 (2часа)

Тема: Основные понятия баз данных.

Цель: Ознакомится с основными понятиями БД.

Литература:

  1. “Реляционные, древовидные и объектно-ориентированные базы данных” Артур Б. Смит M. Computing May/June 1996, v.4 n.2

  2. “Проектирование реляционных баз данных. Просто и доступно” Джен Л.Харрингтон – издательство “Лори”, 2000.-230 с.

Содержание

База данных (БД) – это поименованная совокупность структурированных данных, относящихся к определённой предметной области.

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

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

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

Ключевое поле и внешний ключ.

Ключ - одно или несколько полей, значения которых однозначно определяют каждую запись таблицы. При определении связи ключ в одной таблице содержит ссылки на конкретные записи в другой таблице. Ключ, на который имеется ссылка в другой таблице, называют внешним ключом. Таблица может иметь только один ключ. Например, в таблице «Сотрудники» ключевым полем может быть поле «КодСотрудника».

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

Простой ключ

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

Составной ключ

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

Внешний ключ.

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

Генератор

Генератор - это специальный объект базы данных, который генерирует уникальные последовательные числа. Эти числа могут быть использованы в качестве идентификаторов (например код клиента, номер счета и т.п.). Для создания генератора необходимо использовать оператор DDL

CREATE GENERATOR generatorname;

При выполнении такой команды происходит 2 действия:

1. На специальной странице БД отводится 4 байта для хранения значения генератора.

2. В системной таблице RDB$GENERATORS заводится запись, куда помещается имя генератора и его номер (фактически смещение на странице генераторов).

После создания генератора его значения можно получать при помощи функции

GEN_ID(generatorname, inc_value)

где inc_value - число, на которое необходимо прирастить значение генератора.

Генераторы возвращают значения (и сохраняют свои значения на диске) вне контекста транзакции пользователя. Это означает, что если генератора было увеличено с 10 до 11 (инкремент 1), то даже при откате транзакции (ROLLBACK) значение генератора не вернется к предыдущему. Вместе с этим гарантируется, что каждому пользователю будет возвращено уникальное значение генератора.

Триггер

Триггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.

Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) или AFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено, вносить изменения в таблицу, на которой «висит» триггер, и т. п.)

Кроме того, триггеры могут быть привязаны не к таблице, а к представлению (VIEW). В этом случае с их помощью реализуется механизм «обновляемого представления». В этом случае ключевые слова BEFORE и AFTER влияют лишь на последовательность вызова триггеров, так как собственно событие (удаление, вставка или обновление) не происходит.

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

Пример:

CREATE DATABASE "C:\KATYA.GDB" USER "SYSDBA" PASSWORD "masterkey";

CREATE TABLE TVLADELCI(

ID_VLAD INTEGER NOt NULL PRIMARY KEY,

FIO VARCHAR(100),

BIRTHDAY TIMESTAMP,

ADRESS VARCHAR(100),

TEL INTEGER,

PASSPNUM VARCHAR(10),

PASSDATE TIMESTAMP,

IDENTIFNUM CHAR(12) ,

DRIV_LIC_NUM VARCHAR(20)

);

/*2AUTO*/

CREATE TABLE TAUTO (

AUTONUM VARCHAR(20) NOT NULL PRIMARY KEY,

ID_VLAD INTEGER,

MARK VARCHAR(30),

MODEL VARCHAR(30),

COLOR VARCHAR (20),

BIRTHDAY TIMESTAMP,

ENGINENUM VARCHAR(15),

KYZOVNUM VARCHAR(15),

TECHPASSPNUM VARCHAR (20) ,

CHECKUPDATE TIMESTAMP,

FOREIGN KEY (ID_VLAD) REFERENCES TVLADELCI(ID_VLAD) ON UPDATE CASCADE ON DELETE CASCADE

);

/*===========GENERATORbl=============*/

CREATE GENERATOR "VLADELCI_ID_GEN";

CREATE GENERATOR "AUTO_ID_GEN";

SET TERM^;

CREATE TRIGGER VLADELCITRIGG FOR TVLADELCI

BEFORE INSERT

AS BEGIN

NEW.ID_VLAD=GEN_ID(VLADELCI_ID_GEN,1);

END^

CREATE TRIGGER AUTOTRIGG FOR TAUTO

BEFORE INSERT

AS BEGIN

NEW.AUTONUM=GEN_ID(AUTO_ID_GEN,1);

END^

SET TERM;^

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