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

列数が可変のSQLデータベース

    データベースモデル

    基本的にmany-to-manyが必要です 1人の著者が多くの出版物を書くことができ、1つの出版物が複数の著者によって書かれる可能性があるため、著者と出版物の関係。

    これには、3つのテーブルが必要です。

    • 作成者-すべての作成者に関する一般情報(publications_idなし)
    • パブリケーション-すべてのパブリケーションに関する一般情報(author_idなし)
    • AuthorPublication-列author_id およびpublication_id テーブルへの参照ですAuthor およびPublication

    このように、特定の著者を出版物に拘束することはありませんが、より多くの著者を含めることができ、その逆も同様です。

    追記

    特定の出版物における著者の役割を区別したい場合は、id_roleのような列を追加することもできます。 これは、作成者のすべての可能な役割を示すディクショナリテーブルへの参照になります。このようにして、主要な著者、共著者などの間で異なる可能性があります。このように、本の翻訳を処理する人々に関する情報を保存することもできますが、おそらくAuthorの名前を変更する必要があります。 あまり具体的ではありません。

    出現順序

    AuthorPublicationに列を追加することで、作成者の正しい順序を確認できます。 Publicationごとに個別にインクリメントします 。このようにして、必要に応じて順序を保持することができます。



    1. SQLでソートする方法

    2. 名前のない制約を削除する

    3. Pythonのmysqlでプリペアドステートメントを使用する

    4. PostgreSQLで小数点から末尾のゼロを削除する方法