投稿とコメントの 2 つのテーブルがあります。
create table posts
(
id integer not null primary key auto_increment,
body text not null
);
create table comments
(
id integer not null primary key auto_increment,
body text not null,
post_id integer not null references posts(id)
);
ここで、レポート (「悪い投稿」フラグ) というテーブルをもう 1 つ作成し、投稿とコメントの両方のレポートを保存したいと考えています。
create table reports
(
id integer not null primary key auto_increment,
obj_type tinyint not null, /* '1' for posts and '2' for comments */
obj_id integer not null,
body text not null
);
alter table reports add foreign key(obj_id) references posts(id) on delete cascade;
alter table reports add foreign key(obj_id) references comments(id) on delete cascade;
ご覧のとおり、1 つのフィールドに 2 つの参照があり (obj_id で区別しています)、質問は、このようにしても大丈夫ですか?
そうでない場合、より良い解決策は何ですか?
前もって感謝します。