1

シンプルなブログ アプリを作成しています。これまでのところ、投稿、コメント、作成者の 3 つのテーブルがあります。

各テーブルの主キーと外部キーをリストします。

投稿には主キーとして postid が含まれます。

コメントには、commentid が主キーとして含まれ、postid が外部キーとして含まれます。

投稿は、コメントと 0 対多の関係にあります。

作成者には主キーとして authorid が含まれます。

作成者は、投稿と多対多の関係を持ち、コメントと多対多の関係を持ちます。

最後のステートメントは、私が最も問題を抱えているところです。著者は実際に投稿やコメントと多対多の関係を持っているのでしょうか、それとも 1 対 1 なのでしょうか。多対多の場合、投稿の作成者とコメントの作成者の関係を説明する中間テーブルを作成することをお勧めしますが、このテーブルでどのキーを使用すればよいかわかりません。

著者は多くの投稿を書くことができ、一人の著者で多くの投稿を書くことができると口頭で表現すると、1対多と見なされますが、投稿などのテーブルに格納された実際のデータから見ると、複数の投稿が含まれます投稿と作成者には複数の作成者が含まれる場合、多対多のように見えます。これが、重複を削除するための相互参照テーブルの目的です。

4

7 に答える 7

7

投稿に複数の作成者がいる可能性がある状況をサポートする予定がない限り、投稿/コメントの作成者は1対多の関係になると思います。それは理にかなっているかもしれませんが、多くの人がそれを使用する可能性は低いようです。ユーザーの0.1%が必要とする機能のスキーマをわざわざ複雑にすることはありません。

投稿とコメントのテーブルにauthorIdを配置するだけで、準備が整います。

于 2009-09-17T16:22:22.320 に答える
4

あなたが独特の種類のフォーラムを運営しているのでない限り、確かにルールは

  • 著者は多くの投稿を書くことができます
  • 投稿には1人の作成者のみが必要です
  • 著者は多くのコメントを書くことができます
  • コメントには1人の作成者のみが必要です
于 2009-09-17T16:23:30.653 に答える
2

いいえ、それは1対多です。投稿またはコメントには、1人の作成者しか含めることができません-そうですか?

したがって、投稿テーブルとコメントテーブルに外部キーAuthorIDが必要です。

于 2009-09-17T16:21:43.060 に答える
2
著者は多くの投稿を書くことができ、一人の著者で多くの投稿を書くことができると口頭で表現すると、1対多と見なされますが、投稿などのテーブルに格納された実際のデータから見ると、複数の投稿が含まれます投稿と作成者には複数の作成者が含まれる場合、多対多のように見えます。これが、重複を削除するための相互参照テーブルの目的です。

どこで混乱しているのかわかります。「投稿テーブルには複数の投稿が含まれます」と「著者テーブルには複数の著者が含まれます」は真実ですが、それはあなたが表現しようとしている関係ではありません。(これはテーブルの性質です。authors テーブルには多くの行があり、それぞれが 1 人の著者を表します。)

重要なことは、特定の投稿に対して、何人の著者がいるかということです。1つですか、それとも複数ですか?特定の著者の場合、何件の投稿がありますか? 1つですか、それとも複数ですか?

于 2009-09-17T16:40:27.277 に答える
1

間にある相互参照テーブルは次のようになります。

create table PostsToAuthors (
    postToAuthorsId int primary key,
    postId int,
    autorId int
);

著者と投稿の間の各関連付けでは、このテーブルにレコードを作成する必要があります。このテーブルには、このようなテーブルに必要な制約(外部キーおよび特に一意)が含まれていないことに注意してください。

于 2009-09-17T16:20:47.830 に答える
1

著者の外部キーを格納するために、テーブルの投稿とコメントにもう1つの列を追加します。通常、投稿とコメントには1人の作成者しかいません。

したがって、スキーマは次のようになります。

Posts
    postid - primary key
    authorid - foreign key
Comments
    commentid - priamry key
    postid - foreign key
    authorid - foreign key
Authors
    authorid - primary key

Authors-comments - one(zero) to many relationship
Authors-posts - one(zero) to many relationship
Posts-comments - one(zero) to many relationship
于 2009-09-17T16:24:29.007 に答える
1

著者は、投稿と多対多の関係を持ち、コメントと多対多の関係を持ちます。

つまり、各投稿者には多くの投稿があり、各投稿には多くの作成者がいるということですか?コメントも同じですか?

ウィキを作成している場合はOKですが、ほとんどの場合、特定の投稿またはコメントには1人の作成者しかいません。それはあなたが意味したことですか?

いずれにせよ、実際には多対多の関係があるとしましょう。たとえば、と呼ばれるリレーショナルテーブルを作成すると、authors_posts次の列が作成されます:id、、。各行は、「作成者Xと投稿Yが関連している」ことを示しています。author_idpost_id

于 2009-09-17T16:24:37.027 に答える