私はDB設計に不慣れで、これで正しい軌道に乗っていることを確認したかったので、ちょっとした「ベストプラクティス」の質問
ユーザー (1 人)、グループ (多くのユーザー)、会社 (多くのグループ) の 3 つのユーザー タイプがあり、それぞれにメッセージを投稿できる独自のログインがあります。だから例えば。企業がメッセージを投稿すると、リンクされたすべてのユーザーのニュース フィードに表示されます。
これを達成するために、メッセージの内容を格納するテーブル「メッセージ」と、ユーザータイプをリンクするための外部キーがあります
これを達成するために、次のスキーマ(PostgreSQL)を使用するつもりでした...
create table notifications(
notification_id serial primary key,
user_id integer references users,
group_id integer references groups,
company_id integer references companies,
date_created timestamp not null default now(),
title_id text not null,
message_id text not null,
icon text not null default 'logo'
);
comment on table notifications is 'Messages to be displayed on a users home feed';
これにより、ユーザーのニュース フィードに関連するメッセージを抽出するクエリを作成できます (たとえば、user_id、group_id、または company_id の 1 つのフィールドのみが値を持ちます)。
しかし、これは最善の方法ですか?Null可能な外部キーを持つことは悪い考えだと確信しています.一種の列挙キーを使用したより良い解決策があるのではないかと考えていましたか? (これもあるの!?)
ありがとう