Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Ссылочная целостность - Пример22 января 2011Оглавление: 1. Ссылочная целостность 2. Пример 3. Поддержание ссылочной целостности в БД Так, в примере реляционная БД, состоящая из таблиц Address и Street, обеспечивает хранение адресов. При этом основная таблица, — Address, — содержит непосредственно номер дома и квартиры, а вместо имени улицы в поле Street имеет внешний ключ, ссылающийся на таблицу Street — справочник улиц. Очевидно, что полноценный адрес должен быть представлен двумя связанными записями в обеих названных таблицах, что технически выражается в условии: для любой записи таблицы Address в таблице Street должна существовать соответствующая запись, то есть запись со. Чтобы получить список полных адресов из таблиц такой структуры, когда в них соблюдается ссылочная целостность, достаточно применить к данным таблицам SQL-запрос: select * from Address, Street where Address.Street = Street.Key В данном примере, однако, ссылочная целостность нарушена. Две записи таблицы Address имеют в поле Street так называемые «висящие» ссылки — значения, которым не соответствуют записи в таблице Street. Из-за этого результат вышеприведённого запроса не будет содержать этих двух записей — для них условие запроса не выполнится. И ещё одна запись не будет выбрана вышеприведённым запросом — запись таблицы Address с. Это вариант намеренного нарушения ссылочной целостности — в поле внешнего ключа записан NULL. Чтобы получить список всех адресов, даже тех, у которых не указана улица, необходимо использовать открытое соединение, в одном из вариантов синтаксиса записываемое так: select * from Address left outer join Street on Если же требуется получить список, не включающий записи с «висящими» ссылками, то придётся усложнить запрос: select * from Address left outer join Street on or) Просмотров: 4050
|