Модели и проектирование баз данных

Целостность сущности


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

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

Например:

·  поставщик зарегистрирован, а статус его еще не определен;

·  руководство фирмы еще не решило, в каком городе разместить производство изделия;

·  известна дата смерти исторического деятеля, а дата рождения затерялась в глубине веков и т.п.

В подобных случаях соответствующим атрибутам присваиваются так называемые  Null-значения.

Null

– это специальный маркер, показывающий, что значение данного атрибута в настоящий момент неизвестно и, возможно, будет введено впоследствии. Null не «ноль», не «пробел», и вообще,  Null  не имеет типа. Этим  маркером может быть помечен любой атрибут любого кортежа.

Null

обладает следующими свойствами:

·  всякое сравнение с участием Null

дает результат  Null;

·  все Null-значения различны;

·  отрицание  Null – тоже  Null.

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

В самом деле, что означает утверждение: «номер поставщика неизвестен»? Мы еще не присвоили ему номер? Мы не знаем, присвоен ему номер или нет? Нам неизвестно, идет ли речь об уже зарегистрированном в БД поставщике или о каком-то другом?  И т.д.

Во всех случаях, прежде чем заносить

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

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

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



Содержание раздела