以下の様な4つのテーブルがあるとします
細かい理由は置いておいて、前提としてですが、管理者とユーザーのテーブルは分かれており、且つユーザーは掲示板を立てることができないということにします。
ユーザーテーブル
- id
- 名前
管理者テーブル
- id
- 名前
掲示板テーブル
- id
- タイトル
- 内容
コメントテーブル
- id
- 内容
- 掲示板id(FK)
まず、管理者は多数の掲示板を持ち得る為掲示板と1:Nの関係が成り立つため掲示板の属性に外部キーとして管理者IDを持つことが出来ると思います。
掲示板テーブル
- id
- タイトル
- 内容
- 管理者id(FK)
コメントテーブルも多数のユーザーの書き込みを持てるので外部キーとしてユーザーidを持ちます。
コメントテーブル
- id
- 内容
- 掲示板id(FK)
- ユーザーid(fk)
ここで質問なのですが、コメントテーブルに管理者idの外部キーは持つべきなのでしょうか?
それとも外部キーとしては持たないべきなのでしょうか?
つまり形としては
コメントテーブル
- id
- 内容
- 掲示板id(FK)
- ユーザーid(fk)
- 管理者id(fk) or 管理者id
のような形となります。
管理者テーブルから見るとコメントテーブルは孫テーブルに当たると思います。
仮に管理者idをFKとするとコメントテーブルは管理者テーブルの子テーブル且つ孫テーブルと、非常に主観的な話ですがなにか気持ち悪い印象を受けます。
ただアプリケーション側で -もしコメントした人が管理者だったら、掲示板テーブルの管理者属性を参照してコメントテーブルの管理者idに入れる- という処理を書き保存するのも何か腑に落ちません。
このようなテーブルがある場合どのようなリレーション設計にすべきなのでしょうか?
よろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/12 03:05
2019/03/12 03:18