Использование Constraints

Здравствуйте, недавно читая одну книгу, заметил применение следующего кода:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .sql.geshi_code {font-family:monospace;} .sql.geshi_code .imp {font-weight: bold; color: red;} .sql.geshi_code .kw1 {color: #993333; font-weight: bold;} .sql.geshi_code .co1 {color: #808080; font-style: italic;} .sql.geshi_code .co2 {color: #808080; font-style: italic;} .sql.geshi_code .coMULTI {color: #808080; font-style: italic;} .sql.geshi_code .es0 {color: #000099; font-weight: bold;} .sql.geshi_code .br0 {color: #66cc66;} .sql.geshi_code .sy0 {color: #66cc66;} .sql.geshi_code .st0 {color: #ff0000;} .sql.geshi_code .nu0 {color: #cc66cc;} .sql.geshi_code span.xtra { display:block; }

ALTER TABLE 'tbl_issue' ADD CONSTRAINT 'FK_issue_project' FOREIGN KEY
('project_id') REFERENCES 'tbl_project' ('id') ON DELETE CASCADE ON
UPDATE RESTRICT;
 


И попробовал поискать информацию по Constraint, но ничего не нашел кроме официальной документации mysql, в которой сухо и на английском написано про это.

Есть ли статьи или книги, где можно почитать про применение Constraint детальнее?

1 ответов


В данном случае это внешний ключ. Бывают ещё первичные ключи. Плюс, посмотрите ещё в сторону уникальных индексов - UNIQUE INDEX. Русскоязычной информации по этом дофига.
UPDATE:
FK_issue_project - название внешнего ключа. Обратите внимание на общепринятый префикс FK - Foreign Key (внешний ключ). Используют также PK - Primary Key (первичный ключ), UQ - Unique Index (уникальный индекс), IX - Index (индекс).
ON DELETE CASCADE - означает, что при удалении записи в таблице, на которую идёт ссылка (tbl_project), записи в таблице, которые ссылаются (tbl_issue) будут удалены. По смыслу из названий таблиц: Все дефекты, привязанные к проекту, будут удалены.
ON UPDATE RESTRICT - означает, что при изменении значения ключа, на который идёт ссылка (tbl_project.id), будет выдана ошибка и изменение не пройдёт.
Ещё бывает SET NULL (установить значение в NULL) и NO ACTION (ничего не делать).


Здесь подробно описано+ пример: http://web.znu.edu.ua/lab/MathDep/ApMath/DB&IS/ac2Math.pdf