Я предполагаю, что вы хотите сохранить все эти пользовательские отчеты (не в одной БД, а), используя только одну таблицу или хотя бы небольшое количество таблиц.
Возможное решение:
Добавьте новую таблицу Information
, которая будет выступать в качестве супертипа для таблиц Message, Comment, Article, Review и т. Д. (Которые будут подтипами):
Information
-----------
InformationId
PRIMARY KEY (InformationId)
Добавить новый столбец InformationId
в Message
таблице, которая является FOREIGN KEY
до Information
:
Message
-------
MessageId --- no changes here
... other data --- or here
InformationId --- one additional column
PRIMARY KEY (MessageId) --- no changes here
... --- or here
UNIQUE KEY (InformationId) --- so every message, article, comment
FOREIGN KEY InformationId --- or review can be identified
REFERENCES Information (InformationId)
Сделайте то же самое для всех других «информационных» таблиц, таких как «Комментарий», «Статья», «Обзор» и т. д.
Затем добавьте таблицу Report
:
Report
------
ReportId
InformationId --- which message, article, etc is reported
ReporterId --- who reports it
ReportType --- what type of abuse it is (racist, etc.)
DateOfReport
Explanation
PRIMARY KEY (ReportId)
FOREIGN KEY InformationId
REFERENCES Information (InformationId)
FOREIGN KEY ReporterId
REFERENCES Person (PersonId) --- the User table