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