私はあなたがあらゆる種類のアイテムを扱うプロジェクトに取り組んでいます。それが何であるかは重要ではありません。私が心配しているのはデータベースの設計です。このためにデータベースのレイアウトを作成する方法について誰かが私に洞察を与えることができれば、または正しい方向に私を向けることができれば、私は最も感謝しています.
あらゆる種類のアイテムを 1 つのリスト
に アイテムのリストがあるとします。CD のリスト、DVD のリスト、書籍のリストを作成できます。これは、1 つのリストにデータベース用語で多くの項目があり、項目行にリストの ID があることを意味します。
しかし、サウンドトラック DVD、恐ろしい実写映画、配管工の生活に基づいたファンフィクション小説など、スーパー マリオ関連のすべてのリストを作成したい場合はどうでしょうか。
データベースを作成しているときに、同じリストに属するアイテムを同じテーブルに入れることはできないことに突然気付きました。アーティスト/アルバムのタイトル、監督/映画のタイトル、作者/をサポートする列がすべて異なるためです。小説のタイトルなど.. 1つの巨大なテーブルにすべてを収めることはできませんでした.
さらに、サウンドトラック アルバムのトラック タイトルと映画の俳優をデータベースに登録したいと考えています。CD しかない場合は、album_track-table を item-table に簡単にアタッチできますが、すべての種類の異なるテーブルを item-table にアタッチすることはできません。特定のリストのすべての詳細を含むすべてのアイテムを取得したいと考えていました。リストに書籍、ビニール、マンガ、テレビシリーズ、植物、家具などが含まれていない場合でも、この手順では、添付されたすべてのテーブルでリストの参照を検索する必要があります。</p>
私が今持っているのは次のレイアウトです(しかし、これがこれを行うための最良の方法だとは想像できません):
t_list (id) --> t_item (id, id_list, image)
t_item --> t_cd (id, id_item, artist, title)
t_item --> t_dvd (id, id_item, director, title)
t_item --> …
t_cd --> t_cd_track (id, id_cd, track_title, length)
t_dvd --> t_dvd_actors (id, id_dvd, actor_name, image)
…
カスタム列
ここで、これらのアイテムを cd リストに追加するために、テーブル t_cd の列 (アーティスト、アルバム タイトル、ジャンルなど) に従って、入力フィールドを持つフォームがあると想像してください。アルバムの平均価格などのカスタム入力フィールドを追加できるようにしたいと考えています。
これは、特定のリストの特定のユーザーに対して設定されます。これはアイテム レベルでは設定されません。これは、全員のフォームに追加されることを意味するためです。そのフィールドを自分の CD リストに追加したいだけです。
ただし、その値をデータベースに入力する必要があるため、アイテムに関連付ける必要があります。
私は次のようなことを考えています:
t_list (id) --> t_extra_field (id, description, id_list)
t_extra_field --> t_field_value (id, id_extra_field, value)
しかし、データベーススキームのどこにこれを添付するかは完全にはわかりません。
この種の構造は、私の以前の質問に対する答えでもありますか? ( t_field --> t_field_value
) もしそうなら、私もそれをどこに付けたらよいかわかりません。上記の例で提案したように、おそらくリストする必要がありますか?
これは、特定のアイテムのすべての詳細が 1 つのテーブルにあることを意味しますが、アイテムに関連付けられた別のテーブルからの何らかのカテゴリ ID に従って、1 つのレコードではなく値ごとに格納されます。それは多くのレコードを含むテーブルになるため、ここでも私の疑問が生じます: これはパフォーマンスに悪いのではないでしょうか..?
誰かが私にこの問題についての洞察を与えてくれることを心から願っています..