Способы обеспечения целостности данных

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

В Oracle «ограничения» - это средство для обеспечения соблюдения правил, гарантирующих, что в базе данных хранятся только допустимые значения данных. Ограничение, как следует из названия, накладывает ограничения / проверки на тип или значение данных, которые могут храниться в таблице базы данных. Oracle предоставляет следующие ограничения для обеспечения целостности данных:

  1. NOT NULL: если в соответствии с бизнес-логикой столбец или набор столбцов в таблице не может допускать значений NULL, то для предотвращения этого можно использовать ограничение NOT NULL.
alter table SALES modify (cust_id NOT NULL);

База данных выдаст ошибку, если значения NULL будут введены в столбец cust_id таблицы SALES.

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

create table test (col1 number UNIQUE);

Ограничение UNIQUE позволяет сохранять значения NULL.

3. ПЕРВИЧНЫЙ КЛЮЧ: ограничение первичного ключа представляет собой комбинацию ограничений NOT NULL и UNIQUE. Столбец или набор столбцов, для которых определен первичный ключ, допускают только уникальные, а не нулевые значения.

create table test (col1 number PRIMARY KEY);

В таблице Oracle может быть только один (и только один) первичный ключ.

4. ИНОСТРАННЫЙ КЛЮЧ: часто требуется, чтобы данные в одной таблице проверялись путем сравнения их с данными в другой таблице. (например, если вы добавляете новый заказ в свою таблицу ORDERS, вы должны перепроверить, что действительный продукт, соответствующий этому заказу, присутствует в вашей таблице PRODUCTS). Для достижения такой целостности данных используется ограничение внешнего ключа. Этот тип проверки также известен как ссылочная целостность. Ограничение внешнего ключа всегда ссылается на первичный ключ или уникальное ограничение других таблиц. Таблица с определенным внешним ключом называется ссылающейся таблицей. Таблица, для которой задан первичный ключ или ограничение уникальности, называется ссылочной таблицей.

create table orders
(
 order_no number primary key,
 customer_name varchar2(10),
 constraint cons_prod_fk foreign key(prod_no) references product(prod_no)
);

Если вы определяете ограничение внешнего ключа с опцией «ON DELETE CASCADE», то при удалении любой строки из ссылочной таблицы соответствующая строка также будет удалена из ссылающейся таблицы.

В столбцах внешнего ключа разрешены значения NULL.

5. ПРОВЕРКА: Проверочные ограничения используются для принудительного выполнения одного или нескольких условий, которые необходимо проверить для строки данных.

alter table customers add constraint customer_credit_limit CHECK (credit_limit <= 1000)

Это гарантирует, что значение credit_limit всегда меньше или равно 1000. В противном случае система выдаст ошибку.

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

  • Имена ограничений хранятся в таблице ALL_CONSTRAINTS. Имена столбцов, для которых определены ограничения, можно найти в ALL_CONS_COLUMNS.
  • Ограничения можно в любой момент включить или отключить. Когда вы создаете, отключаете или включаете ограничение, вы можете указать некоторую другую информацию о том, как ведет себя ограничение. Включенное ограничение может иметь две опции VALIDATE и NOVALIDATE. VALIDATE проверит существующие данные в таблице, в то время как NOVALIDATE не будет проверять существующие данные после включения ограничения.
  • Когда вы создаете или активируете ограничение первичного ключа или уникальности, Oracle создаст уникальный индекс для столбцов этого ограничения. Ограничения внешнего ключа не требуют автоматического создания индекса. Однако стоит построить индекс по столбцам каждого ограничения внешнего ключа. Без индекса в соответствующих столбцах дочерней таблицы Oracle вынужден снять блокировку таблицы на дочернем элементе, пока он выполняет DELETE для родительского. Если индекс существует, Oracle использует его для идентификации и блокировки только необходимых строк в дочернем элементе, в то время как родительская строка удаляется.

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

Целостность данных - это показатель состояния цифровой информации. Внедрение этих правил или проверок как можно раньше в конвейере данных приведет к минимальному повреждению и позволит повысить эффективность бизнес-процессов.

Приведенная ниже цитата применима как к дизайну базы данных, так и к жизни в целом.

«Честность, выбор между тем, что удобно, а что правильно!»