Предоставьте пользователям возможность оставлять комментарии по ошибкам. Какая-нибудь заданная ошибка может сопровождаться несколькими комментариями, но любой заданный комментарий должен относиться к одной ошибке. Таким образом, между ошибками (Bugs) и комментариями (Comments) существует отношение «один-м'ножество»'. Схема взаимосвязей блоков для данного типа простой ассоциации показана на рис. 7.1, а следующий код SQL показывает, как создать данную таблицу:
Файл npMM*pei.Polymorphic/intro/comments.sql
CREATE TABLE Comments (
comment_id SERIAL PRIMARY KEY, .
bug_id BIGINT UNSIGNED NOT NULL,
author_id BIGINT UNSIGNED NOT NULL,-
comment_date DATETIME NOT NULL,
comment TEXT NOT NULL,
FOREIGN KEY (author_id) REFERENCES Accounts(account_id), FOREIGN KEY (bug_id) REFERENCES Bugs(bug_id)
);'
Тем не менее возможно наличие двух таблиц, которые можно комментировать. Bugs и FeatureRequests являются сходными объектами, хотя они могут храниться как отдельные таблицы (см. раздел 6.5, «Наследование конкретной таблицы»). Скорее всего, вы захотите хранить комментарии (Comments) в одной таблице независимо от того, принадлежат они какому-то одному типу проблем (ошибкам или функциям) или нет. Однако, как известно, объявить внешний ключ, ссылающийся на несколько родительских таблиц, нельзя. Следующее объявление лишено смысла:
Файл np*M9p*i.Potymorphic/intro/nonsense.sql