サイド プロジェクト用のデータベース スキーマを設計しようとしてきましたが、満足できるものを作成できませんでした。データ アクセスに LINQ で ASP.Net を使用しています。
ユーザーは、それぞれ 2 つの数値プロパティと 1 つの参照プロパティ (アイテム名) を持つ最大 10 個の「アイテム」を指定できるようにします。
このエントリを 1 行に入れると、30 列以上 (最小) に簡単に等しくなります。たとえば、item_1_name (ref) item_1_weight item_1_volume item_2_name... など...
また、各プロパティの範囲は基本的に 1 から 400+ までであるため、これらの列を単純に参照テーブルに変換することはできません。
また、ユーザーが 1 つの項目のみをエントリに入れることを決定した場合、そのデータのオブジェクトを作成するメソッドは、LINQ と同様に静的になり、プロパティやその他のものが NULL であるかどうかを確認し、それに応じて動作する必要があることもわかりました。 . また、エントリで許可されるアイテムの数を増やしたいと思った場合、それを扱うのは頭の痛い問題です。
私が考えたもう 1 つのオプションは、単純に項目ごとに行を作成し、それをエントリ ID で結び付けることです。したがって、基本的に null エントリはありませんが、5 つの奇数列しかないため、テーブルは天文学的に深くなりますが、それほど広くはありません。
私の設計で見落としているものはありますか/これを行うためのはるかに優れた効率的な方法はありますか?
編集: 天文学的に成長すると言うとき、私はこの意味でそれを意味します: ユーザーはエントリを作成でき、各エントリにはアイテムのグループがある可能性が高いです。したがって、サイトに 1 日 1 エントリを作成するとします。3 つのアイテム グループがあり、アイテムの最大数 (10) があり、その唯一のエントリで 30 アイテムに相当します。そのレートで 1 週間毎日エントリを作成すると、その 1 人のユーザーに対して 210 行を作成できます。