0

質問があります。基本的に、著者情報でいっぱいの出版社のデータベースをシミュレートしています。したがって、この趣旨で、「著者」と呼ばれるエンティティがあります。著者には、自動インクリメント カウンタの主キーと、「名前」および誕生年があります。

これに加えて、名前、発行年、自動インクリメント カウンターである独自の識別主キーを持つ「本」のエンティティがあります。また、主著者を参照するフィールド (必須) と、副著者を指定するオプション フィールドの 2 つの外部キーもあります。

私の質問は、明らかに、著者と本の関係は「1」対「0 以上」です。しかし、私が立ち往生しているのは、二次著者の「選択性」です。私はそれが「ゼロまたは 1」対「ゼロまたはそれ以上」の関係であるべきだと考えていますが、論理を正しく翻訳しているかどうかはわかりません。二次著者。

同様に、これを sqlite3 で実装する場合、このフィールドを「必須」または「オプション」にするのが最善ですか? 必要な場合を除き、「NULL」値として休止状態を維持できるようにする必要があると想定しています。

あなたが提供できるどんな助けも高く評価されます。

4

1 に答える 1

0

探している関係は、多対多の関係です。

  • 本には 1 人以上の著者がいます
  • 人が 1 冊以上の本を執筆 (著者) する

これは、3 つのデータベース テーブルが必要であることを意味します。

本、人作家

  • 書籍: id、タイトル
  • 著者: book_id、person_id、位置 (例: 第 1 著者は 1、第 2 著者は 2)
  • 人物: ID、名前

これら 3 つのテーブルを取得したら、JOIN を使用してリレーションシップをクエリできます。Join の初心者向けイントロは、このyoutube videoにあります。必要な JOIN の種類は、4:50 マークあたりに示されています。

スタックオーバーフローの回答と例は、次の場所にあります: sqlite LEFT OUTER JOIN multiple tables

于 2012-12-10T22:44:33.757 に答える