Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 12 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 29 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 29 .:: CodingRUS ::. программирование по-русски на Delphi, C++, PHP, Prolog, GPSS Изменение направления полиморфной ассоциации на обратное
Прислано vovan666 на July 03 2013 10:23:53
Данное решение устраняет потребность в столбце Comments. issue_type. Теперь метаданные могут принудительно устанавливать целостность данных, вместо того чтобы полагаться на код приложения для управления ассоциациями без ошибок.
Установка светофоров
Недостаток данного метода заключается в том, что оно разрешает ассоциации, которые могут быть нежелательными. Обычно таблицы пересечений моделируют ассоциации «множество-множество», так что это позволяет связать заданный комментарий с несколькими ошибками или несколькими запросами функций. Однако может потребоваться, чтобы каждый комментарий относился только к одной ошибке или одному запросу функции. Можно ввести в действие по крайней мере часть данного правила, объявив ограничение UNIQUE ПО столбцу comment_id для каждой таблицы пересечений.

Файл npимepa:_Polymorphic/soln/reverse-unique.sql

CREATE TABLE BugsComments (
issue_id BIGINT UNSIGNED NOT NULL,
comment id BIGINT UNSIGNED NOT NULL,
UNIQUE KEY (comment_id) ,
PRIMARY KEY (issue_id, comment_id),
FOREIGN KEY (issue_id) REFERENCES Bugs(issue_id),
FOREIGN KEY (comment_id) REFERENCES Comments(comment_id)




Это гарантирует, что на заданный комментарий может быть только одна ссылка в таблице пересечений, которая, естественно, предотвращает связь с несколькими ошибками или несколькими запросами функций. Однако метаданными не запрещается однократная ссылка на заданный комментарий в обеих таблицах пересечений, связывающих комментарий как с ошибкой, так и с запросом функции. Возможно, это не то, что требуется, но защита от такого алгоритма по-прежнему должна обеспечиваться кодом приложения.