22.04.2014 Views

php_mysql_dreamweaver_mx_2004 разработка web сайтов.pdf

php_mysql_dreamweaver_mx_2004 разработка web сайтов.pdf

php_mysql_dreamweaver_mx_2004 разработка web сайтов.pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Глава 12. Поддержание ссылочной целостности данных 307<br />

незадачливый пользователь попытается удалить запись первичной таблицы, на<br />

которую ссылаются записи вторичной таблицы, сервер либо выдаст сообщение<br />

об ошибке и не станет удалять эту запись, либо удалит также и все связанные<br />

записи вторичной таблицы. (Это задается самим разработчиком базы<br />

данных при создании связи между таблицами. Удобнейшая, кстати, штука!)<br />

Но MySQL перекладывает заботу о ссылочной целостности на плечи программиста,<br />

который будет разрабатывать клиенты данных для него. Нам самим<br />

придется думать о поддержании ссылочной целостности и не допускать<br />

ее нарушений. Чем мы сейчас и займемся.<br />

В этой главе мы будем, в основном, работать со страницей удаления категории<br />

Category_delete.<strong>php</strong>. Именно она выполняет удаление записи первичной<br />

таблицы, чреватое потерей межтабличной связи. Так что мы можем сразу же<br />

открыть ее в Dreamweaver.<br />

Простейший способ<br />

поддержания ссылочной целостности<br />

Вообще, существует два способа сохранения ссылочной целостности —<br />

простой и сложный. Мы рассмотрим их по очереди. И начнем, конечно,<br />

с простого.<br />

А простой способ заключается в том, чтобы прямо перед удалением записи<br />

первичной таблицы выполнить проверку, существуют ли во вторичной таблице<br />

записи, ссылающиеся на удаляемую. Если они существуют, удаление<br />

записи не выполняется, и пользователю выводится соответствующее предупреждение.<br />

Если же на удаляемую запись первичной таблицы не ссылается<br />

ни одна запись вторичной таблицы, — путь свободен.<br />

Простым этот способ называется, в основном, потому, что его можно реализовать<br />

исключительно встроенными средствами Dreamweaver. Реализация<br />

его выполняется в три шага.<br />

1. Создаем набор записей, извлекающий из вторичной таблицы записи,<br />

ссылающиеся на удаляемую.<br />

2. Создаем необязательную область, содержащую форму с кнопкой Удалить и<br />

выводящуюся на экран, если созданный на первом шаге набор записей пуст.<br />

3. Создаем вторую необязательную область, но содержащую уже текст предупреждения<br />

о невозможности удаления записи. Понятно, что выводиться<br />

на экран она должна, если созданный на первом шаге набор содержит<br />

записи (не пуст).<br />

Что ж, если все это так просто, давайте воплотим этот способ в программном<br />

коде. Dreamweaver у нас уже запущен, страница Category_delete.<strong>php</strong> открыта,<br />

значит, можно приступать к работе прямо сейчас.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!