22

Я немного смущен насчет data consistency и data integrity. Из Oracle Database Concepts:Есть ли разница между целостностью данных и согласованностью данных?

data integrity 
-------------- 
Business rules that dictate the standards for acceptable data. These rules 
are applied to a database by using integrity constraints and triggers to 
prevent invalid data entry. 

От Wikipedia

Consistency 
----------- 
Consistency states that only valid data will be written to the database. 

Так что разница между data consistency и data integrity?

Заранее спасибо.

ответ

21

Они не только различны, они ортогональны.

Несогласованность:
БД, который сообщил отдел Джо Shmoe персонал в в качестве продаж, но это не список Джо Shmoe среди сотрудников отдела продаж будет непоследовательным.
Это логическое свойство БД, независимо от фактических данных.

Целостность:
БД, сообщившая, что jOe SaleS будет членом отдела Shmoe, не будет иметь целостности.
jOe SaleS не является действительным именем сотрудника, а Shmoe не является действительным отделом.
Это не логически недействительно, но оно недействительно по отношению к правилам, которые регулируют содержимое данных..

+0

Я вижу, что ограничение целостности «первичного ключа» предназначено для устранения проблемы согласованности, которую вы продемонстрировали. В нем говорится, что у сотрудника есть внешний ключ, который ссылается на отдел, тогда отдел должен иметь упомянутого сотрудника. Это похоже на то, что [синтаксис может каким-то образом применять семантическую целостность] (http://cs.stackexchange.com/questions/51189/ambiguity-vs-context-sensitivity). –

+0

Я имею в виду, что если один усиливает другое, мы не можем сказать, что они абсолютно ортогональны и не коррелируют. Я имею в виду, что требование ортогональности и вопрос о различии между двумя нуждаются в дальнейшем разъяснении. –

+0

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

5

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

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

8

Очень грубо говоря, мой 2с:

Целостность = сильные типы, не незаконные значения, определенные в модели данных & ограничения, foriegn ключи, ограничения уникальности и тому подобное.

Консистенция = возможность считывать только зафиксированные данные в определенный момент времени, а не промежуточные этапы.

2

Вероятно, эти ссылки могут помочь вам начать работу:

http://en.wikipedia.org/wiki/Data_consistency

http://en.wikipedia.org/wiki/ACID#Consistency

http://en.wikipedia.org/wiki/Data_integrity

+4

Добро пожаловать в SO. Непосредственные ссылки обычно лучше всего в комментариях. Ссылки на источники в ответах прекрасны, но обычно они должны быть включены с причиной релевантности и/или использоваться в качестве поддержки ответа (например, резюме/причина для чтения-ссылки или цитата цитаты/парафраза должны быть извлечены). –

+0

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

1

От here

непротиворечивости данных

исполнения сделки в изоляции сохраняет согласованность данных. Значения данных, хранящиеся в базе данных, должны удовлетворять определенным ограничениям согласованности. Например, баланс на счете не должен опускаться ниже 100 долларов США. Команды DDL предоставляют средства для определения таких ограничений. Системы баз данных проверяют эти ограничения каждый раз, когда база данных обновляется. В общем случае это может быть произвольный предикат, относящийся к базе данных. Чтобы проверить согласованность базы данных, большинство программистов зависят от ограничений, и они обычно требуют затрат на тестирование.

целостность данных

Целостность данных относится как «всего данные на одном месте». Данные представлены в виде таблиц, и каждая таблица имеет некоторые атрибуты. Это те случаи, когда мы хотим убедиться, что значение, которое появляется в одном отношении для заданного набора атрибутов, должно также отображаться для определенного набора атрибутов в другом отношении (ссылочная целостность). Изменение базы данных может привести к нарушению целостности. Когда нарушение целостности нарушено, обычная процедура отклоняет действие, которое фактически вызвало нарушение.

enter image description here

Вы можете прочитать first chapter для ACID.

1
  1. Консистенция: у вас нет дат, цифр и букв в одной колонке, но только один из них. Это заслоняется определением типа столбца, например. номер столбца (5) означает, что в нем не будет ни даты, ни букв, а цифры больше 99999
  2. Целостность: если у вас есть таблица таблиц и отделов emplooyes и столбец department_id в обоих из них (со значением department_id в witch employee работает) в отделе не будет ни одного сотрудника, который не существует в таблице отделов. Это задерживается ограничением целостности ссылок.