php_mysql_dreamweaver_mx_2004 ÑазÑабоÑка web ÑайÑов.pdf
php_mysql_dreamweaver_mx_2004 ÑазÑабоÑка web ÑайÑов.pdf
php_mysql_dreamweaver_mx_2004 ÑазÑабоÑка web ÑайÑов.pdf
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 />
открыты, и злоумышленники уже подбираются к ним. За работу!