イベントと写真があり、両方のコメントがあります。現在、2 つのコメント テーブルがあります。1 つはイベントに関連するコメント用で、もう 1 つは写真のコメント用です。スキーマは次のようになります。
CREATE TABLE EventComments
(
CommentId int,
EventId int,
Comment NVarChar(250),
DateSubmitted datetime
)
CREATE TABLE PhotoComments
(
CommentId int,
PhotoId int,
Comment NVarChar(250),
DateSubmitted datetime
)
私の質問は、それらを組み合わせて、別の相互参照表を追加する必要があるかどうかですが、適切に行う方法が思いつきません。これでいいと思いますが、どう思いますか?
編集
ウォルターの答え(およびいくつかの軽い読書)に基づいて、私はこれを思いつきました:
CREATE TABLE Comments
(
CommentId int,
Comment NVarChar(250),
DateSubmitted datetime
CONTRAINT [PK_Comments] PRIMARY KEY
(
CommentId
)
)
CREATE TABLE EventComments
(
CommentId int,
EventId int
)
CREAT TABLE PhotoComments
(
CommentId int,
PhotoId int
)
ALTER TABLE EventComments ADD CONSTRAINT FK_EventComments FOREIGN KEY (CommentId) REFERENCES Comments(CommentId)
ALTER TABLE PhotoComments ADD CONSTRAINT FK_PhotoComments FOREIGN KEY (CommentId) REFERENCES Comments(CommentId)
構造間に実際にパフォーマンスの違いはありますか? 私には、それは少し好みのようです。2 番目のスキーマには利点があります。イベントのコメントや写真のコメントに具体性を追加したい場合は、そのための別のテーブルがあり、両方で新しいプロパティを共有したい場合は、単一のテーブルがあります。新しいプロパティを追加します。