sql >> データベース >  >> RDS >> Mysql

簡単な本の表に複数の著者をデータベースに書き留めるにはどうすればよいですか?

    authorsを取り除く booksの列 。

    本と著者の間には多対多の関係があります。一部の本には複数の著者がいて、一部の著者は複数の本を書いています。また、本には第1、第2、第3の著者などがいます。本の著者名を予測できない順序でレンダリングすることはできません。作成者と発行者は、dbmsプログラマーではなく、作成者の順序を決定します。

    したがって、books_authorsが必要です 次の列のテーブル

      book_id
      author_id
      author_ordinal   (a number like 1,2,3 to denote the order of authors)
    

    このクエリを使用して、特定の本の著者のリストを取得できます:

     SELECT isbn, title, author_ordinal, first, last
       FROM books b
       LEFT JOIN books_authors ba ON (b.id = ba.book_id)
       LEFT JOIN authors a ON (ba.author_id = a.id)
      WHERE isbn = '978whatever'
      ORDER BY author_ordinal
    

    roleというテキストフィールドを配置することも賢明です。 ソフトウェアを書誌的に完全なものにしたい場合は、books_authorsテーブルにあります。人々は、「著者」、「イラストレーター」、「編集者」、「シリーズ編集者」、「寄稿者」、「序文作家」などの本の作成においてさまざまな役割を果たします。 role 列を使用すると、その情報を取得できます。

    ちなみに、ほとんどのdbmsリバースエンジニアリングツールは、id列に一貫して名前を付けると、はるかに幸せになります。したがって、books.idとauthors.idだけでなく、books.book_idとauthors.author_idを使用する必要があります。



    1. 最後の個別のレコードセットを取得する

    2. Neo4j-Cypherを使用してCSVファイルからデータをインポートする

    3. mssqlはvarcharをfloatに変換します

    4. MySQLのDjangoの列にはデータが長すぎます