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.

280 Часть III. Решаем вопросы безопасности и целостности данных<br />

Из главы 6 мы знаем, что при наличии связи между двумя таблицами —<br />

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

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

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

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

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

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

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

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

— это своего рода пропуск к записям вторичной таблицы; если же она<br />

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

становятся недоступными.<br />

Нарушение ссылочной целостности — это настоящая трагедия для базы<br />

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

получить доступ к целой группе записей. Посетители сайта в ярости, администратор<br />

— в панике. Что же делать?<br />

Вообще-то, подавляющее большинство серверов данных сами следят за ссылочной<br />

целостностью и не позволяют пользователям ее нарушать. То есть<br />

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

нельзя — сервер откажется выполнять запрос на удаление записи и выдаст<br />

сообщение об ошибке. Но MySQL не таков — он все норовит переложить<br />

на плечи программиста. На наши плечи...<br />

Самый простой выход, сразу приходящий на ум, — перед удалением записи<br />

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

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

нельзя. Практически все разработчики серверных программ так и<br />

поступают; так же поступим и мы в главе 12, когда начнем реализовывать<br />

в своих страницах сохранение ссылочной целостности наших данных.<br />

Что дальше?<br />

А дальше — практические занятия! Не будем терять времени: наши данные<br />

открыты, и злоумышленники уже подбираются к ним. За работу!

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

Saved successfully!

Ooh no, something went wrong!